微机原理答案.docx
《微机原理答案.docx》由会员分享,可在线阅读,更多相关《微机原理答案.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理答案
第3章8086/8088指令系统与寻址方式习题
3.38086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,
BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。
(1)MOVBX,12;目标操作数为寄存器寻址
(2)MOV[BX],12;目标操作数为寄存器间址PA=10300H
(3)MOVES:
[SI],AX;目标操作数为寄存器间址PA=20200H
(4)MOVVAR,8;目标操作数为存储器直接寻址PA=10600H
(5)MOV[BX][SI],AX;目标操作数为基址加变址寻址PA=10500H
(6)MOV6[BP][SI],AL;目标操作数为相对的基址加变址寻址PA=12306H
(7)MOV[1000H],DX;目标操作数为存储器直接寻址PA=11000H
(8)MOV6[BX],CX;目标操作数为寄存器相对寻址PA=10306H
(9)MOVVAR+5,AX;目标操作数为存储器直接寻址PA=10605H
3.4下面这些指令中哪些是正确的?
那些是错误的?
如果是错误的,请说明原因。
(1)XCHGCS,AX;错,CS不能参与交换
(2)MOV[BX],[1000];错,存储器之不能交换
(3)XCHGBX,IP;错,IP不能参与交换
(4)PUSHCS
(5)POPCS;错,不能将数据弹到CS中
(6)INBX,DX;输入/输出只能通过AL/AX
(7)MOVBYTE[BX],1000;1000大于255,不能装入字节单元
(8)MOVCS,[1000];CS不能作为目标寄存器
(9)MOVBX,OFFSETVAR[SI];OFFSET只能取变量的偏移地址
(10)MOVAX,[SI][DI];SI、DI不能成为基址加变址
(11)MOVCOUNT[BX][SI],ES:
AX;AX是寄存器,不能加段前缀
3.7设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?
当执行PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么?
当前栈顶的地址=2FF00H
当执行PUSHBX指令后,栈顶地址=2FEFEH
(2FEFEH)=57H
(2FEFFH)=34H
3.8设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。
(1)SHRDX,1;DX=3C62HCF=1
(2)SARDX,CL;DX=03C6HCF=0
(3)SHLDX,CL;DX=18A0HCF=1
(4)RORDX,CL;DX=2BC6HCF=0
(5)RCLDX,CL;DX=18B7HCF=1
(6)RCRDH,1;DX=BCC5HCF=0;
3.9设AX=0A69H,VALUE字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF的值。
AXCFZFOFSFPF
(1)XORAX,VALUE;134EH00001
(2)ANDAX,VALUE;0821H00001
(3)SUBAX,VALUE;F142H10011
(4)CMPAX,VALUE;0A69H10011
(5)NOTAX;F596HXXXXX
(6)TESTAX,VALUE;0A69H00001
3.10设AX和BX中是符号数,CX和DX是无符号数,请分别为下列各项确定CMP和条件转移指令。
(1)CX值超过DX转移。
(2)AX未超过BX转移。
(3)DX为0转移。
(4)CX值等于小于DX转移。
(1)CMPCX,DX
JANEXT
(2)CMPAX,BX
JLENEXT
(3)CMPDX,0
JZNEXT
(4)CMPCX,DX
JBENEXT
3.11阅11阅读分析下列指令序列:
ADDAX,BX
JNOL1
JNCL2
SUBAX,BX
JNCL3
JNOL4
JMPL5
若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转向何处(L1~L5中的一个)。
(1)AX=13C6H,BX=80DCH
(2)AX=0B568H,BX=54B7H
(3)AX=42C8H,BX=608DH
(4)AX=0D023H,BX=9FD0H
(5)AX=9FD0H,BX=0D023H
(1)转L1
(2)转L1
(3)转L2
(4)转L5
(5)转L5
第四章汇编语言程序设计习题
4.5画出下列语句中的数据在存储器中的存储情况。
VARBDB34,34H,‘GOOD’,2DUP(1,2DUP(0))
VARWDW5678H,‘CD’,$+2,2DUP(100)
VARCEQU12
22H
34H
‘G’
‘O’
‘O’
‘D’
1
0
0
1
0
0
78H
56H
‘D’
‘C’
12H
00H
64H
00
64H
VARB
VARW
4.6按下列要求,写出各数据定义语句。
(1)DB1为10H个重复的字节数据序列:
1,2,5个3,4。
(2)DB2为字符串‘STUDENTS’
(3)DB3为十六进制数序列:
12H,ABCDH
(4)用等值语句给符号COUNT赋以DB1数据区所占字节数,该语句写在最后。
DB1DB16DUP(1,2,5DUP(3,4))
DB2DB‘STUDENTS’
DB3DW12H,0ABCDH
COUNTEQUDB2-DB1
4.8对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
PREPDB?
TABADW5DUP(?
)
TABBDB‘NEXT’
TABCDD12345678H
(1)MOVAX,TYPEPREP;AX=1
(2)MOVAX,TYPETABA;AX=2
(3)MOVAX,LENGTHTABA;AX=5
(4)MOVAX,SIZETABA;AX=10
(5)MOVAX,LENGTHTABB;AX=1
(6)MOVDX,SIZETABC;AX=4
4.10若自STRING单元开始存放有一个字符串(以字符‘$’结束);
(1)编程统计该字符串长度(不包含$字符,并假设长度为两字节)。
(2)把字符串长度放在STRING单元,把整个字符串往下移两个单元。
程序段为:
(1)MOVSI,OFFSETSTRING
XORBX,BX
CONT:
MOVAL,[SI]
CMPAL,‘$’
JZNEXT
INCBX
INCSI
JMPCONT
NEXT:
MOVAH,4CH
INT21H
(2)STRINGDB‘………….$’
COUNTEQU$-STRING
:
MOVSI,OFFSETSTRING
MOVCX,COUNT
ADDSI,CX
CONT:
DECSI
MOVAL,[SI]
MOV[SI+2],AL]
LOOPCONT
MOVCX,COUNT
MOVSTRING,CX
MOVAH,4CH
INT21H
4.11将字符串STRING中的‘&’字符用空格代替,字符串STRING“ThedataisFEB&03”。
程序为:
DATASEGMENT
STRINGDB‘ThedataisFEB&03’
COUNTEQU$-STRING
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETSTRING
MOVCX,COUNT
MOVAL,‘$’
CONT:
CMPAL,[SI]
JNZNEXT
MOVBYTEPTR[SI],‘’
NEXT:
INCSI
LOOPCONT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.16键盘输入十个学生的成绩,试编制一个程序统计69~69分,70~79分,80~89分,90~99分及100分的人数,分别存放到S6,S7,S8,S9及S10单元中。
程序为:
DATASEGMENT
BUFDB10DUP(?
)
S6DB?
S7DB?
S8DB?
S9DB?
S10DB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETS6
XORAL,AL
MOVCX,0504H
CONT:
MOV[SI],AL
INCSI
LOOPCONT
MOVCX,10
MOVSI,OFFSETBUF
CONT1:
MOVAH,1
INT21H
SHLAL,CL
MOVBL,AL
MOVAH,1
INT21H
SUBAL,30H
ORAL,BL
MOV[SI],AL
CMPAL,70H
JAENEXT1
INCBYTEPTRS6
NEXT1:
CMPAL,80H
JAENEXT2
INCBYTEPTRS7
NEXT2:
CMPAL,90H
JAENEXT3
INCBYTEPTRS8
NEXT3:
CMPAL,99H
JANEXT4
INCBYTEPTRS9
JMPNEXT5
NEXT4;INCBYTEPTRS10
NEXT5:
INCSI
LOOPCONT1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
第7章基本输入/输出接口习题
7.4现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0为1时表明输入数据准备好。
试采用查询方式,编程实现从该设备读取100个字节数据并保存到2000H:
2000H开始的内存中。
程序段为:
MOVAX,2000H
MOVDS,AX
MOVSI,2000H
MOVCX,100
CONT:
MOVDX,0FFE2H
CONT1:
INAL,DX
TEST