微机原理实验参考答案航大.docx

上传人:b****2 文档编号:1608288 上传时间:2023-05-01 格式:DOCX 页数:16 大小:18.04KB
下载 相关 举报
微机原理实验参考答案航大.docx_第1页
第1页 / 共16页
微机原理实验参考答案航大.docx_第2页
第2页 / 共16页
微机原理实验参考答案航大.docx_第3页
第3页 / 共16页
微机原理实验参考答案航大.docx_第4页
第4页 / 共16页
微机原理实验参考答案航大.docx_第5页
第5页 / 共16页
微机原理实验参考答案航大.docx_第6页
第6页 / 共16页
微机原理实验参考答案航大.docx_第7页
第7页 / 共16页
微机原理实验参考答案航大.docx_第8页
第8页 / 共16页
微机原理实验参考答案航大.docx_第9页
第9页 / 共16页
微机原理实验参考答案航大.docx_第10页
第10页 / 共16页
微机原理实验参考答案航大.docx_第11页
第11页 / 共16页
微机原理实验参考答案航大.docx_第12页
第12页 / 共16页
微机原理实验参考答案航大.docx_第13页
第13页 / 共16页
微机原理实验参考答案航大.docx_第14页
第14页 / 共16页
微机原理实验参考答案航大.docx_第15页
第15页 / 共16页
微机原理实验参考答案航大.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理实验参考答案航大.docx

《微机原理实验参考答案航大.docx》由会员分享,可在线阅读,更多相关《微机原理实验参考答案航大.docx(16页珍藏版)》请在冰点文库上搜索。

微机原理实验参考答案航大.docx

微机原理实验参考答案航大

《微机原理》实验参考答案

实验1汇编基本指令及顺序程序设计实验

实验2分支与DOS中断功能调用程序设计实验

实验3循环结构程序设计实验

实验4存储器扩展实验

实验58259应用编程实验

实验1汇编基本指令及顺序程序设计实验

一、实验目的

1、掌握汇编语言的开发环境和上机过程;

2、掌握DEBUG命令;

3、掌握顺序程序设计方法;

4、掌握寻址方式;

5、理解和掌握汇编基本指令的功能。

二、实验内容

1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。

要求:

用3种方法实现。

答:

方法一CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,3000H

MOVBX,5000H

MOVCX,AX

MOVAX,BX

MOVBX,CX

CODEENDS

ENDSTART

方法二CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,3000H

MOVBX,5000H

XCHGAX,BX

CODEENDS

ENDSTART

方法三CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,3000H

MOVBX,5000H

PUSHAX

PUSHBX

POPAX

POPBX

CODEENDS

ENDSTART

2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。

MOVAX,BX寄存器寻址,将BX内容送AX

MOVAX,[BX]寄存器间接寻址,将DS:

BX内存单元内容送AX

  MOVAX,10[BX]寄存器相对寻址,将DS:

BX+10内存单元内容送AX

在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。

3、已知有如下程序段:

MOVAX,1234H

MOVCL,4

在以上程序段的基础上,分别执行以下指令:

ROLAX,CLAX=2341H

RORAX,CLAX=4123H

SHLAX,CLAX=2340H

SHRAX,CLAX=0123H

SARAX,CLAX=0123H

RCLAX,CL带进位标志位的循环左移

RCRAX,CL带进位标志的循环右移

4、设有以下部分程序段:

 TABLEDW10H,20H,30H,40H,50H

ENTRYDW3

LEABX,TABLE

ADDBX,ENTRY

MOVAX,[BX]

要求:

(1)将以上程序段补充成为一个完整的汇编程序。

答:

DATASEGMENT

TABLEDW10H,20H,30H,40H,50H

ENTRYDW3

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

LEABX,TABLE

ADDBX,ENTRY

MOVAX,[BX]

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(2)AX=3000H

实验2分支与DOS中断功能调用程序设计实验

一、实验目的

1、掌握条件转移、无条件转移指令的功能及应用;

2、掌握分支程序的设计、编写、调试和运行方法。

3、掌握1号、2号和9号功能调用及其程序设计方法。

二、实验内容

1、编程求|X-Y|,结果放在RESULT单元中。

X和Y都为16位操作数。

DATASEGMENT

XDW1234H

YDW5678H

RESULTDW?

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVAX,X

SUBAX,Y

JAENEXT;设X,Y是不带符号数,X>=Y转移

MOVAX,Y

SUBAX,X

NEXT:

MOVRESYLT,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2、编写一程序,实现从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是,请输出“这不是一个大写字母”的英文信息(要求:

能连续输入)。

DATASEGMENT

MS1DB‘ITISABIGCAPITAL$’

MS2DB‘ITISNOTABIGCAPITAL$’

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

NEXT:

MOVDX,OFFSETMS2

MOVAH,1

INT21H;1号功能调用

CMPAL,0DH

JZEXIT

CMPAL,‘A’

JBNO

CMPAL,‘Z’

JANO

MOVDX,OFFSETMS1

NO:

MOVAH,9

INT21H

IMPNEXT

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3、请编写一程序,实现将大写字母字符串转换成小写字母字符串。

设字符串的首地址为STRING,字符串的长度在N单元内。

DATASEGMENT

STRINGDB'IAMASTUDENT!

$'

NEQU$-STRING

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETSTRING

MOVCX,N

NEXT:

MOVAL,[BX]

CMPAL,'A'

JBNEXT1

CMPAL,'Z'

JANEXT1

ADDAL,20H

MOV[BX],AL

NEXT1:

INCBX

LOOPNEXT

MOVAH,9

MOVDX,OFFSETSTRING

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4、编程显示任一寄存器(如BX)的最高位。

即若BX的最高位为1,则在屏幕上输出“1”;若BX的最高位为0,则在屏幕上输出“0”。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDL,'1'

MOVBX,8234H

CMPBX,0

JSSHOW

MOVDL,'0'

SHOW:

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验3循环结构程序设计实验

一、实验目的

1、掌握循环指令LOOP、LOOPZ、LOOPNZ指令的功能及使用方法。

2、掌握循环程序的设计、编写、调试和运行方法。

二、实验内容

1、循环结构程序设计

编写一个程序,将内存1000H开始的连续100个字节送往2000H开始的连续100个内存单元中。

要求使用三种不同的方法(不用串操作指令、用单一的串操作指令、用带重复前缀的串操作指令),下面已给出一种实现方法,请给出另外两种实现方法的源程序清单:

实验程序参考清单:

方法一带重复前缀的串操作指令

DATASEGMENT

ORG1000H

DB100DUP(‘A’)

ORG2000H

DB100DUP(‘B’)

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,ES:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVSI,1000H

MOVDI,2000H

MOVCX,100

CLD

REPMOVSB

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

方法二不带重复前缀的串操作指令

DATASEGMENT

ORG1000H

DB100DUP(‘A’)

ORG2000H

DB100DUP(‘B’)

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,ES:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVSI,1000H

MOVDI,2000H

MOVCX,100

CLD

NEXT:

MOVSB

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

方法三不用串操作指令,而用MOV指令

DATASEGMENT

ORG1000H

DB100DUP(‘A’)

ORG2000H

DB100DUP(‘B’)

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,ES:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVSI,1000H

MOVDI,2000H

MOVCX,100

NEXT:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2、编程计算1+2+3+…+100的和。

答:

用AX存放结果

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,0

MOVBX,1

MOVCX,100

NEXT:

ADDAX,BX

INCBX

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

如果想以十进制输出显示AX中的结果则需要增加显示输出程序(感兴趣同学参考,不要求):

DATASEGMENT

MSDB5DUP(?

DB'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,0

MOVBX,1

MOVCX,100

NEXT:

ADDAX,BX

INCBX

LOOPNEXT

MOVSI,OFFSETMS

ADDSI,4

NEXT1:

MOVDX,0

MOVBX,10

DIVBX

ADDDL,30H

MOV[SI],DL

DECSI

CMPAX,0

JZEXIT

JMPNEXT1

EXIT:

MOVAH,9

MOVDX,OFFSETMS

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验4存储器扩展实验

codesegment

assumecs:

code

org1000h

Start:

movbx,8000h;外部存储器起始地址BX

movcx,2048;初始化计数器

RamWR:

mov[bx],55aah;将数据写入外部存储器

incbx;地址+2

incbx

loopRamWR;地址不到8FFF则继续

jmp$;结束

codeends

endStart

实验58259应用编程实验

outsegequ0ffdch;字形控制口

outbitequ0ffddh;字位控制口

m8259equ0ffe0h;8259控制口

c8259equ0ffe1h;8259命令口

codesegment

assumecs:

code

org1000h

start:

cli;清中断标志

callintsvr;分配中断向量

callinit;8259初始化

sti;置中断标志

movdx,outbit;选中LED第6位

moval,000001b

outdx,al

callshow_p;显示"P."

jmp$;循环等待

;设置中断向量,写N=15的中断向量,中断向量表003CH-003FH单元

intsvr:

movax,0000h

moves,ax

movdi,003ch

leaax,irq7

stosw

movax,0000h

stosw

ret

;8259初始化

init:

movdx,m8259

moval,13h

outdx,al;边沿触发

movdx,c8259

moval,08h

outdx,al;基地址

moval,09h

outdx,al;写命令字

moval,7fh

outdx,al;设置IMR,只开放IQR7,屏蔽其他

ret

;显示"0"

show_p:

moval,0;'0'

calldisp;显示

ret

;查表显示子程序

disp:

movdx,outseg;字形控制口

movbx,offsetled

xlat;查表

outdx,al;送显示

ret

;IRQ7中断服务程序

irq7:

cli;清中断标志,关中断

incal;加一计数

andal,0fh;只保留低4位,清零高位

pushax;AX进栈保存

calldisp;显示

movdx,m8259

moval,20h

outdx,al;写结束字

popax;恢复AX

sti;置中断标志,开中断

iret;从中断返回

;字形代码表

leddb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h;01234567

db80h,90h,88h,83h,0c6h,0a1h,86h,8eh;89ABCDEF

db0ch;'P.'

codeends

endstart

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2