8086汇编语言习题解答.docx
《8086汇编语言习题解答.docx》由会员分享,可在线阅读,更多相关《8086汇编语言习题解答.docx(16页珍藏版)》请在冰豆网上搜索。
8086汇编语言习题解答
8086/8088汇编语言习题解答
第一章
1.1、试根据自己使用计算机的经历,列举几个必须使用或最好是使用汇编语言编制程序的事例。
1.2、试完成下列数制间的转换
⑴、十进制数转换为8位二进制数
十进制:
100对应二进制:
01100100B十进制:
56对应二进制:
00111000B十进制:
111对应二进制:
01101111B十进制:
120对应二进制:
01111000B十进制:
70对应二进制:
01000110B
⑵、8位二进制数(无符号数)转换为十进制数
二进制:
01010101B
对应
十进制:
85
二进制:
10101010B
对应
十进制:
170
二进制:
11110000B
对应
十进制:
240
二进制:
00001111B
对应
十进制:
15
⑶、十进制数转换为十六进制数
十进制:
40
对应
二进制:
00101000B
十进制:
80
对应
二进制:
01010000B
十进制:
105
对应
二进制:
01101001B
十进制:
114
对应
二进制:
01101101B
十进制:
207
对应
二进制:
11001111B
1.3、试把下面用补码表示的二进制数转换为对应的十进制真值
二进制补码:
01111000
对应的十进制值数真值:
+120
二进制补码:
11011001
对应的十进制值数真值:
-39
二进制补码:
10000001
对应的十进制值数真值:
-127
二进制补码:
10001000
对应的十进制值数真值:
-120
二进制补码:
00100111
对应的十进制值数真值:
+39
二进制补码:
11110000
对应的十进制值数真值:
-16
1.4、由键盘输入字符通常都是以该字符的ASCII码形式表示的。
若现在从键盘上输入十六进制数0~F,那么应如何处理才能把十六进制转换为4位二进制数0000~1111.
答:
将键盘输入的数0~F的ASCII码,每输入一个字符,减去30H后,再存入内存,这样就完成了把从键盘上输入的十六进制ASCII码转换为4位二进制数0000~1111.
1.5、试分别判断下列各组数据中哪个数据最大?
哪个最小?
①、A=0.101B
B=0,101D
C=0,101H
②、A=1011B
B=1011D
C=1011H
13
答:
第①组:
A=1×2+1×2=0.625B=0.101
C=1×161+163=0.0625+0.00024414=0.06274414
所以A最大,C最小
第②组,B最大,A=B最小
1.6、现有一个二进制数10110110.若将该数看着是无符号数、原码表示的带符号数、补码表示的带符号数,它对应的十进制数的真值是多少?
答:
10110110.的无符号数的十进制是:
+182;10110110.的原码带符号数的十进制是:
-54
10110110.补码表示的带符号数的十进制是:
+74
1.7、下列各组数据均为十进制数,先将各数据转换为补码表示的带符号数,然后用补码的加减运算分别完成下列各小题,并用十六进制数形式回答运算结
果。
①、58+36②、(-58)+36③、58+(-36)④、(-58)+(-36)
⑤、58-36⑥、(-58)-36⑦、58-(-36)⑧、(-58)-(-36)答:
①、58+36的运算结果是:
00111010+00010100=01001110=01011110
②、(-58)+36的运算结果是:
11000110+00010100=11101010=-000101001
③、58+(-36)的运算结果是:
00111010+11011100=00010110
④、(-58)+(-36)的运算结果是:
11000110+10100010=10100010
⑤、58-36的运算结果是:
00111010+11011100=00010110
⑥、(-58)-36的运算结果是:
11000110+10100010=10100010
⑦、58-(-36)的运算结果是:
00111010+00010100=01001110=01011110
⑧、(-58)-(-36)的运算结果是:
11000110+00010100=11101010=-000101001
第二章
2.1、试说明8086/8088CPU中有哪些寄存器?
各有什么用途?
答:
寄存器AX、AL:
在乘法指令中,存放乘数和乘积;
在除法指令中,存放被除数和商;
在未组合BCD码运算的校正指令中
在某些串操作指令(LODS,STOS,SCAS)中在输入输出令中作数据寄存器
寄存器AH:
在LAHF指令中作目的寄存器
寄存器AL:
在组合型BCD码的加减法校正指令中在XLAT指令中作目的寄存器
寄存器BX:
在XLAT指令中基址寄存器寄存器CX:
在循环指令中作循环次数计数器寄存器CL:
在移位指令中作移位次数计数器
寄存器DX:
在字数据的乘法和除法指令中辅助累加器
寄存器SP:
在堆栈操作中作堆栈指计
寄存器SI:
在串操作指令中作源变址寄存器寄存器DI:
在串操作指令中作目的变址寄存器
2.2、试说明8086/8088CPU中标志寄存器各标志位的意义?
答:
8086/8088CPU中标志寄存器各标志位的意义是:
CF:
进位标志PF:
奇遇标志
AF:
辅助进位标志ZF:
零值标志
SF:
符号位标志TF:
单步标志
IF:
中断允许标志DF:
方向标志OF:
溢出标志
2.3、哪些操作只能隐含使用某个段寄存器,而不能用其他寄存器替代?
哪些操作除隐含使用某个段寄存器外,还可以用其他段寄存器替代?
答:
在“取指令”、“堆栈操作”、“存目的串”三操作时,只能分别使用隐含段寄存器“CS”、“SS”“ES”,不能用其他寄存器替代;在“取源串”、“以BP作基址”、“存取一般变量”三操作时,除了
可分别使用隐含段寄存器“DS”、“SS”“DS外,还可分别使用“CS、SS、ES”,
“CS、DS、E”S、“CS、SS、”E等S进行替代。
2.4、8086/8088系列微机在存储器中寻找存储单元时,逻辑地址由哪两部分组成?
答:
在8086/8088系列微机在存储器中寻找存储单元时,逻辑地址由段基值和偏移量两部分组成,它们都是16位无符号二进制数。
2.5、设IBMPC微机内存某一单元的物理地址是12345H,试完成下列不同的逻辑地址表示:
①、1234H:
0005_H;EA=段基值+DISP=12340H+0005H=12345H
②、1200H:
0345H;EA=段基值+DISP=12000H+0345H=12345H
2.6、假设某用户程序装入内存后,(SS)=0950H,(SP)=64H,试问该用户程序的堆栈底部(字单元)物理地址是是多少?
2.7、设堆栈段寄存器(SS)=3E4BH,程序中设置堆栈长度为200个字节。
试计算出堆栈底部字单元物理地址,堆栈指针SP初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。
2.8、设某用户程序(SP)=30H,(AX)=1234H,(DS)=5678H。
如现有
两条指令:
PUSHAX
PUSHDS
试问两条指令执行后,图2.18中各单元的数据是多少?
(SP)=?
答:
(SP)=30H-4H=2CH
2.9、在IBM-PC微机上,分别进行下列8位二进制数的运算后,标志寄
存器中OF、ZF、SF、CF的值各是多少?
①、10101011+01010101②、11011010+11101101
③、01010101-00111110④、10110011-01100010
2.10、设(SP)=50HPUSHAX
PUSHBXPUSHCX
执行上述三条指令后,(SP)=44H。
2.11、设(SP)=6EH
POPFPOPAX
执行上述两条指令后,(SP)=72H。
第三章
3.1、试分别说明下列各指令中源操作数和目的操作数使用的寻址方式:
①、AND
AX,0FFH
;立即数寻址
②、AND
BL,[0FFH]
;直接寻址
③、MOV
DS,AX
;寄存器寻址
④、CMP
[SI],CX
;寄存器间接寻址
⑤、MOV
DS:
[0FFH],CL
;带前缀的直接寻址
⑥、SUB
[BP][SI],AH
;基址变址寻址
⑦、ADC
AX,0ABH[BX]
;基址寻址
⑧、OR
AX,-35[BX][DI]
;基址变址寻址
⑨、PUSH
DS
;寄存器寻址
⑩、CMC;立即数寻址
3.2、试分别指出下列各指令语句的语法是否有错,若有错,指明是什么错
误。
①、MOV[BX][BP],AX;错,BX与BP必须二选一
②、TEST[BP],BL;正确
③、ADD[SI],DA_BYTE;错,源目操作数不能同时为存储器
④、ANDDH,DL;错,同一寄存器高、低字节不能与
⑤、CMPCL,1234H;正确
⑥、SHR[BX][DI],3;正确
⑦、NOTCX,AX;错,NOT指令只有一个操作数
⑧、LEADS,35[SI];正确
⑨、INCCX,1;正确
⑩、PUSH45[DI];正确
3.3、下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF分别是什么状态?
MOVDL,,86
ADDDL,0AAH
答:
以上两条指令执行后:
CF=AF=ZF=SF=OF=
3.4、在8086/8088CPU中可用于作地址指针的寄存器有哪些?
答:
3.5、已知(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H
(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,单
元(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH下各指标令或程序段分别执行后的结果如何?
①、MOVCL,20H[DI][SI]
②、MOV[BP][DI],CX
③、LEABX,20H[BX][SI]MOVAX,2[BX]
④、LDSSI,[BX][DI]MOV[SI],BX
⑤、XCHGCX,32H[BX]XCHGAX,[SI]
3.6、已知(SS)=0915H,(DS)=0930H,(SI)=0A0H,
(DI)=1C0H,(BX)80H,(BP)=470H.现有一指令
“MOVAX,OPR”D,若源操作数的物理地址为095C0H,试用4种不同寻址方式该写此指令(要求上述每个已知条件至少要使用一次)。
3.7、已知(DS)=1234H,(SI)=124H,(12464H)=30ABH,(12484H)
=464H
LEASI,[SI]
MOVAX,[SI]
MOV[SI+22H],1200HLDSSI,[SI+20H]
ADDAX,[SI]
上述程序执行后:
(DS)=,(SI)=(AX)=