微机原理实验参考答案航大文档格式.docx
- 文档编号:3006098
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:16
- 大小:18.04KB
微机原理实验参考答案航大文档格式.docx
《微机原理实验参考答案航大文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理实验参考答案航大文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
方法二CODESEGMENT
XCHGAX,BX
方法三CODESEGMENT
PUSHAX
PUSHBX
POPAX
POPBX
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:
START:
MOVAX,DATA
MOVDS,AX
LEABX,TABLE
MOVAH,4CH
INT21H
(2)AX=3000H
1、掌握条件转移、无条件转移指令的功能及应用;
2、掌握分支程序的设计、编写、调试和运行方法。
3、掌握1号、2号和9号功能调用及其程序设计方法。
1、编程求|X-Y|,结果放在RESULT单元中。
X和Y都为16位操作数。
DATASEGMENT
XDW1234H
YDW5678H
RESULTDW?
DATAENDS
MOVAX,X
SUBAX,Y
JAENEXT;
设X,Y是不带符号数,X>
=Y转移
MOVAX,Y
SUBAX,X
NEXT:
MOVRESYLT,AX
CODEENDS
2、编写一程序,实现从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是,请输出“这不是一个大写字母”的英文信息(要求:
能连续输入)。
DATASEGMENT
MS1DB‘ITISABIGCAPITAL$’
MS2DB‘ITISNOTABIGCAPITAL$’
CODESEGMENT
CODE,DS:
DATA
MOVAX,DATA
MOVDX,OFFSETMS2
MOVAH,1
INT21H;
1号功能调用
CMPAL,0DH
JZEXIT
CMPAL,‘A’
JBNO
CMPAL,‘Z’
JANO
MOVDX,OFFSETMS1
NO:
MOVAH,9
IMPNEXT
EXIT:
MOVAH,4CH
3、请编写一程序,实现将大写字母字符串转换成小写字母字符串。
设字符串的首地址为STRING,字符串的长度在N单元内。
STRINGDB'
IAMASTUDENT!
$'
NEQU$-STRING
MOVBX,OFFSETSTRING
MOVCX,N
NEXT:
MOVAL,[BX]
CMPAL,'
A'
JBNEXT1
Z'
JANEXT1
ADDAL,20H
MOV[BX],AL
NEXT1:
INCBX
LOOPNEXT
MOVDX,OFFSETSTRING
4、编程显示任一寄存器(如BX)的最高位。
即若BX的最高位为1,则在屏幕上输出“1”;
若BX的最高位为0,则在屏幕上输出“0”。
ASSUMECS:
MOVDL,'
1'
MOVBX,8234H
CMPBX,0
JSSHOW
0'
SHOW:
MOVAH,2
1、掌握循环指令LOOP、LOOPZ、LOOPNZ指令的功能及使用方法。
2、掌握循环程序的设计、编写、调试和运行方法。
1、循环结构程序设计
编写一个程序,将内存1000H开始的连续100个字节送往2000H开始的连续100个内存单元中。
要求使用三种不同的方法(不用串操作指令、用单一的串操作指令、用带重复前缀的串操作指令),下面已给出一种实现方法,请给出另外两种实现方法的源程序清单:
实验程序参考清单:
方法一带重复前缀的串操作指令
ORG1000H
DB100DUP(‘A’)
ORG2000H
DB100DUP(‘B’)
ASSUMEDS:
DATA,ES:
MOVDS,AX
MOVES,AX
MOVSI,1000H
MOVDI,2000H
MOVCX,100
CLD
REPMOVSB
MOVAH,4CH
INT21H
ENDSTART
方法二不带重复前缀的串操作指令
MOVSI,1000H
MOVSB
方法三不用串操作指令,而用MOV指令
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPNEXT
2、编程计算1+2+3+…+100的和。
用AX存放结果
MOVAX,0
MOVBX,1
MOVCX,100
ADDAX,BX
INCBX
如果想以十进制输出显示AX中的结果则需要增加显示输出程序(感兴趣同学参考,不要求):
DATASEGMENT
MSDB5DUP(?
)
DB'
MOVSI,OFFSETMS
ADDSI,4
MOVDX,0
MOVBX,10
DIVBX
ADDDL,30H
MOV[SI],DL
DECSI
CMPAX,0
JMPNEXT1
EXIT:
MOVDX,OFFSETMS
codesegment
assumecs:
code
org1000h
Start:
movbx,8000h;
外部存储器起始地址BX
movcx,2048;
初始化计数器
RamWR:
mov[bx],55aah;
将数据写入外部存储器
incbx;
地址+2
incbx
loopRamWR;
地址不到8FFF则继续
jmp$;
结束
codeends
endStart
outsegequ0ffdch;
字形控制口
outbitequ0ffddh;
字位控制口
m8259equ0ffe0h;
8259控制口
c8259equ0ffe1h;
8259命令口
start:
cli;
清中断标志
callintsvr;
分配中断向量
callinit;
8259初始化
sti;
置中断标志
movdx,outbit;
选中LED第6位
moval,000001b
outdx,al
callshow_p;
显示"
P."
循环等待
;
设置中断向量,写N=15的中断向量,中断向量表003CH-003FH单元
intsvr:
movax,0000h
moves,ax
movdi,003ch
leaax,irq7
stosw
ret
;
init:
movdx,m8259
moval,13h
outdx,al;
边沿触发
movdx,c8259
moval,08h
基地址
moval,09h
写命令字
moval,7fh
设置IMR,只开放IQR7,屏蔽其他
0"
show_p:
moval,0;
'
calldisp;
显示
查表显示子程序
disp:
movdx,outseg;
movbx,offsetled
xlat;
查表
送显示
IRQ7中断服务程序
irq7:
cli;
清中断标志,关中断
incal;
加一计数
andal,0fh;
只保留低4位,清零高位
pushax;
AX进栈保存
moval,20h
写结束字
popax;
恢复AX
置中断标志,开中断
iret;
从中断返回
字形代码表
leddb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h;
01234567
db80h,90h,88h,83h,0c6h,0a1h,86h,8eh;
89ABCDEF
db0ch;
P.'
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 参考答案