《IBM-PC汇编语言程序设计课后习题答案(第二版_沈美明).pdf》由会员分享,可在线阅读,更多相关《IBM-PC汇编语言程序设计课后习题答案(第二版_沈美明).pdf(227页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 一 章1.1 用降幕法和除法将下列十进制数转换为二进制数和十六进制数:(1)3 69 (2)1 0 0 0 0 (3)40 9 5(4)3 2 767答:(1)3 69=1 0 1 1 1 0 0 0 1 B=1 71 H(2)1 0 0 0 0=1 0 0 1 1 1 0 0 0 1 0 0 0 0 B=2 71 0 H(3)40 9 5=1 1 1 1 1 1 1 1 1 1 1 1 B=FFFH(4)3 2 767=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1)1 0 1 1 0 1 (2)1 0 0
2、0 0 0 0 0 (3)1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (4)1 1 1 1 1 1 1 1答:(1)1 0 1 1 0 1 B=2 D H=45(2)1 0 0 0 0 0 0 0 B=8 0 H=1 2 8(3)1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 B=FFFFH=6553 5(4)1 1 1 1 1 1 1 1 B=FFH=2 551.3将下列十六进制数转换为二进制数和十进制数:(1)FA (2)5B (3)FFFE (4)1 2 3 4答:(1)FA H=1 1 1 1 1 0 1 0 B=2 50(2)5B H=1 0 1
3、1 0 1 1 B=9 1(3)FFFE H=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 B=6553 4(4)1 2 3 4H=1 0 0 1 0 0 0 1 1 0 1 0 0 B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1)3 A+B 7(2)1 2 3 4+A F(3)A B C D-FE (4)7A B X 6F答:(1)3 A+B 7H=F1 H=2 41(2)1 2 3 4+A FH=1 2 E 3 H=48 3 5(3)A B C D-FE H=A A C FH=43 72 7(4)7A B X 6FH=3 53 2 5H=2 1
4、 78 9 31.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。(1)(-8 5)+76(2)8 5+(-76)(3)8 5-76(4)8 5-(-76)(5)(-8 5)-76(6)-8 5-(-76)答:(1)(-8 5)+76=1 0 1 0 1 0 1 1 B+0 1 0 0 1 1 0 0 B=llll 0 1 1 1 B=0 F7H;C F=0;0 F=0(2)8 5+(-76)=0 1 0 1 0 1 0 1 B+1 0 1 1 0 1 0 0 B=0 0 0 0 1 0 0 1 B=0 9 H;C F=1;0 F=0(3)8 5-76=0
5、 1 0 1 0 1 0 1 B-0 1 0 0 1 1 0 0 B=0 1 0 1 0 1 0 1 B+1 0 1 1 0 1 0 0 B=0 0 0 0 1 0 0 1 B=0 9 H;C F=0;0 F=0(4)8 5-(-76)=0 1 0 1 0 1 0 1 B-1 0 1 1 0 1 0 0 B=0 1 0 1 0 1 0 1 B+0 1 0 01 1 O O B=1 O 1 O O O O 1 B=O A 1 H;C F=0;0 F=l(5)(-8 5)-76=1 0 1 0 1 0 1 1 B-0 1 0 0 1 1 0 0 B=1 0 1 0 1 0 1 1 B+1 0 1
6、1 0 1 0 0 B=0 1 0 1 1 1 1 1 B=5FH:C F=0;0 F=l(6)-8 5-(-76)=1 0 1 0 1 0 1 1 B-1 0 1 1 0 1 0 0 B=1 0 1 0 lO U B+0 1 0 01 1 0 0 B=1 1 1 1 0 1 1 1 B=0 F7H;C F=0;0 F=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1)D 8 (2)FF答:(1)D 8 H表示的带符号数为-40,D 8 H表示的无符号数为2 1 6;(2)FFH表示的带符号数为-1,FFH
7、表示的无符号数为2 55。1.7下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的A S C II码时,它们所表示的十进制数及字符是什么?(1)4F(2)2 B (3)73 (4)59答:(1)4FH表示的十进制数为79,4FH表示的字符为0;(2)2 B H表示的十进制数为43,2 B H表示的字符为+;(3)73 H表示的十进制数为1 1 5,73 H表示的字符为s;(4)59 H表示的十进制数为8 9,59 H表示的字符为Y。1.8请写出下列字符串的A S C H码值。For ex ample,T h i s i s a number 3 69 2.
8、答:46H 6FH 72 H 2 0 H 65H 78 H 61 H 6D H 70 H 6C H 65H 2 C H O A H O D H54H 68 H 69 H 73 H 2 0 H 69 H 73 H 2 0 H 61 H 2 0 H 6E H 75H 6D H 62 H 65H 72 H 2 0 H 3 3 H3 6H 3 9 H 3 2 H 2 E H O A H O D H第二章2.1在8 0 x 8 6微机的输入/输出指令中,I/O端口号通常是由D X寄存器提供的,但有时也可以在指令中直接指定O O FFH的端口号。试问可直接由指令指定的I/O端口数。答:可直接由指令指定的I
9、/O端口数为2 56个。2.2有两个1 6位字1 E E 5H和2 A 3 C H分别存放在8 0 x 8 6微机的存储器的O O O B O H和0 0 0 B 3 H单元中,请用图表示出它们在存储器里的存放情况。答:存储器里的存放情况如右下图所示:O O O B O H E 5H0 0 0 B 1 H 1 E H0 0 0 B 2 H0 0 0 B 3 H 3 C H0 0 0 B 4H 2 A H2.3在IB M P C机的存储器中存放信息如右下图所示。试读出3 0 0 2 2 H和3 0 0 2 4H字节单元的内容,以及3 0 0 2 1 H和3 0 0 2 2 H字单元的内容。3 0
10、 0 2 0 H 1 2 H3 0 0 2 1 H 3 4H3 0 0 2 2 H A B H3 0 0 2 3 H C D H3 0 0 2 4H E FH答:3 0 0 2 2 H字节单元的内容为A B H;3 0 0 2 4H字节单元的内容为E FH。3 0 0 2 1 H字单元的内容为A B 3 4H;3 0 0 2 2 H字单元的内容为C D A B H。2.4 在实模式下,段地址和偏移地址为3 0 1 7:0 0 0 A 的存储单元的物理地址是什么?如果段地址和偏移地址是3 0 1 5:0 0 2 A 和 3 0 1 0:0 0 7A 呢?答:3 0 1 7:0 0 0 A.3 0
11、 1 5:0 0 2 A 和 3 0 1 0:0 0 7A 的存储单元的物理地址都是3 0 1 7A H。2.5 如果在一个程序开始执行以前(C S)=0 A 7F0 H,(如1 6进制数的最高位为字母,则应在其前加一个0)(IP)=2 B 40 H,试问该程序的第一个字的物理地址是多少?答:该程序的第一个字的物理地址是0 A A A 40 H。2.6在实模式下,存储器中每一段最多可有1 0 0 0 0 H个字节。如果用调试程序D E B U G的r 命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志O F、S F、Z F、C F的值。O debug-rA X
12、=0 0 0 0 B X=0 0 0 0 C X=0 0 79 D X=0 0 0 0 S P=FFE E B P=0 0 0 0S I=0 0 0 0 D I=0 0 0 0 D S=1 0 E 4 E S=1 0 F4 S S=2 1 F0 C S=3 1 FFIP=0 1 0 0 N V U P D I P L N Z N A P O N C答:此时存储器分段的示意图如右图所示。O F、S F、Z F、C F的值都为0。2.7下列操作可使用那些寄存器?(1)加法和减法数据寄存器等(2)循环计数C X(3)乘法和除法A X、D X,乘数和除数用其他寄存器或存储器(4)保存段地址段寄存器(5
13、)表示运算结果为0 Z F=1(6)将要执行的指令地址C S:IP(7)将要从堆栈取出数据的地址S S:S P答:答案见题目的右边。2.8 那些寄存器可以用来指示存储器地址?答:B X、B P、S I、D I、堆栈操作时的S P、对应的段地址、3 8 6及其后继机型的E x x o2.9请将下列左边的项和右边的解释联系起来(把所选字母放在括号中):(1)C P U (M)A.保存当前栈顶地址的寄存器。(2)存 储 器(C)B.指示下一条要执行的指令的地址。(3)堆 栈(D)C.存储程序、数据等信息的记忆装置,微机有R A M 和 R O M 两种。(4)I P (B)D.以后进先出方式工作的存
14、储空间。(5)S P (A)E.把汇编语言程序翻译成机器语言程序的系统程序。(6)状态标志(L)F.唯一代表存储空间中每个字节单元的地址。(7)控制标志(K)G.能被计算机直接识别的语言。(8)段寄存器(J)H.用指令的助记符、符号地址、标号等符号书写程序的语言。(9)物理地址(F)I.把若干个模块连接起来成为可执行文件的系统程序。(1 0)汇编语言(H)J.保存各逻辑段的起始地址的寄存器,80 86/80 88机有四个:C S D S、S S、E S o(1 1)机器语言(G)K.控制操作的标志,如 D F 位。(1 2)汇编程序(E)L.记录指令操作结果的标志,共 6 位:O F、S F、
15、Z F、A F、P F、C F o(1 3)连接程序(D M.分析、控制并执行指令的部件,由算术逻辑部件A LU 和寄存器等组成。(1 4)指 令(0)N.由汇编程序在汇编过程中执行的指令。(1 5)伪 指 令(N)0.告诉C P U 要执行的操作(一般还要指出操作数地址),在程序运行时执行。答:答案见题目的括号中。7)/7X)/77.X17)zX)/7)/)/234567空n234567z(/(/(/(/(/(夕匚z(z(z/tz(z(z(第三章3.1给定(B X)=6 3 7 D H,(S I)=2 A 9 B H,位移量D=7 2 3 7 H,试确定在以下各种寻址方式下的有效地址是什么?
16、(1)立即寻址直接寻址使用B X 的寄存器寻址使用B X 的简接寻址使用B X 的寄存器相对寻址基址变址寻址相对基址变址寻址(1)操作数在指令中,即立即数;E A=D=7 2 3 7 H;无 E A,操作数为(B X)=6 3 7 D H;E A=(B X)=6 3 7 D H;E A=(B X)+D=0 D 5 B 4 H;E A=(B X)+(S I)=8E 1 8H;E A=(B X)+(S I)+D=1 0 0 4 F H;超过了段的边界,最高进位位丢失,因此E A=0 0 4 F H。3.2 试根据以下要求写出相应的汇编语言指令(1)把 B X 寄存器和D X 寄存器的内容相加,结果
17、存入D X 寄存器中。(2)用寄存器B X 和 S I 的基址变址寻址方式把存储器中的一个字节与A L寄存器的内容相加,并把结果送到A L寄存器中。(3)用寄存器B X 和位移量0 B 2 H 的寄存器相对寻址方式把存储器中的一个字和(C X)相加,并把结果送回存储器中。(4)用位移量为0 5 2 4 H 的直接寻址方式把存储器中的一个字与数2 A 5 9 H 相加,并把结果送回存储单元中。(5)把数O B 5 H 与(A L)相加,并把结果送回A L中。答:A D D D X,B X(2)A D D A L,B X S I(3)A D D B X+0 B 2 H,C X(4)A D D WO
18、 R D P T R 0 5 2 4 H,2 A 5 9 H(5)A D D A L,0 B 5 H3.3 写出把首地址为B LO C K的字数组的第6个字送到D X 寄存器的指令。要求使用以下儿种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址答:(1)MOV BX,OFFSET BLOCKADD BX,(6-1)*2MOV DX,BX(2)MOV BX,OFFSET BLOCK 改为:MOV BX,(6-1)*2MOV DX,BX+(6-1)*2也可 MOV DX,BLOCK BX(3)MOV BX,OFFSET BLOCKMOV SI,(6-1)*2MOV DX,BX
19、SI3.4 现有(DS)=20 0 0 H,(BX)=O1OOH,(SI)=0 0 0 2H,(20 10 0 H)=12H,(20 10 1H)=34H,(20 10 2H)=56H,(20 10 3H)=78H,(2120 0 H)=2AH,(2120 1H)=4CH,(2120 2H)=B7H,(2120 3H)=65H,试说明下列各条指令执行完后AX寄存器的内容。MOV AX,120 0 HMOV AX,BXMOV AX,120 0 HMOV AX,BXMOV AX,110 0 BXMOV AX,BXSIMOV AX,110 0 BXSI(1)(AX)=120 0 H(AX)=0 1O
20、OH(AX)=4C2AH(AX)=3412H(AX)=4C2AH(AX)=7856H(AX)=65B7H3.5 给定(IP)=2BC0 H,(CS)=0 20 0 H,位移量 D=5119H,(BX)=120 0 H,(DS)=212AH,(224A0 H)=0 60 0 H,(275B9H)=0 98AH,试为以下的转移指令找出转移的偏移地址。(1)段内直接寻址(2)使用BX及寄存器间接寻址方式的段内间接寻址(3)使用BX及寄存器相对寻址方式的段内间接寻址答:(1)JMP N EAR PTR 5119H;(IP)=5119H+(IP)+0 3H)=7CDCH,物理地址PA=0 9CDCH(I
21、P)+0 3H是JMP N EAR PTR 5119H指令的下一条指令的首地址。(2)JMP WORD PTR BX;(IP)=(DS)*10 H+(BX)=0 60 0 H,PA=0 260 0 H(3)JMP DBX;(IP)=(DS)*10 H+(BX)+D)=0 98AH,PA=0 298AH3.6设当前数据段寄存器的内容为1B0 0 H,在数据段的偏移地址20 0 0 H单元内,含有一个内容为0 FF10 H和 80 0 0 H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来。答:MOV BX,20 0 0 H;图示如上所示。MOV A
22、X,20 0 0 H+2X)/)/X)/)/X17)/|77)/X)/7X)/)/1234567空n234567/(z(z/lz(/IXz(/(XCLLz/(z(z(xz/(z(xz(MOV ES,AXMOV AX,ES:BX3.7 在 0 624H单元内有一条二字节JMP SHORT OBJ指令,如其中位移量为(1)27H,(2)6BH,(3)0 C6H,试问转向地址OBJ的值是多少?答:(1)0 BJ=0 624H+0 2H+27H=0 64DH(2)0 BJ=0 624H+0 2H+6BH=0 691H(3)0 BJ=0 624H+0 2H+0 C6H=0 5ECH;C6H对应的负数为-
23、3AH(向上转移,负位移量)3.8 假定(DS)=20 0 0 H,(ES)=210 0 H,(SS)=150 0 H,(SI)=OOAOH,(BX)=O1OOH,(BP)=0 0 1 OH,数据段中变量名VAL的偏移地址为0 0 50 H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOV AX,OABH(2)MOV AX,BX(3)MOV AX,10 0 H(4)MOV AX,VAL(5)MOV AX,BX(6)MOV AX,ES:BX(7)MOV AX,BP(8)MOV AX,SI(9)MOV AX,BX+10 (10)MOV AX,VALBX(11)MOV AX,
24、BXSI(12)MOV AX,VALBXSI答:(1)立即方式;操作数在本条指令中(2)寄存器寻址方式;操作数为(BX)=0 10 0 H(3)直接寻址方式;PA=20 10 0 H(4)直接寻址方式;PA=20 0 50 H(5)BX寄存器间接寻址方式;PA=20 10 0 H(6)附加段BX寄存器间接寻址方式;PA=2110 0 H(7)BP寄存器间接寻址方式;PA=150 10 H(8)SI寄存器间接寻址方式;PA=20 0 A0 H(9)BX寄存器相对寻址方式;PA=20 110 H(10)BX寄存器相对寻址方式;PA=20 150 H(11)BX和 SI寄存器基址变址寻址方式;PA=
25、20 1A0 H(12)BX和 SI寄存器相对基址变址寻址方式;PA=20 1F0 H3.9在 ARRAY数组中依次存储了七个字数据,紧接着是名为ZERO的字单元,表示如下:ARRAY DW 23,36,2,10 0,320 0 0,54,0ZERO DW?(1)如果BX包含数组ARRAY的初始地址,请编写指令将数据0 传送给ZERO单元。(2)如果BX包含数据0 在数组中的位移量,请编写指令将数据0 传送给ZERO单元。答:(1)MOV AX,BX+(7-l)*2MOV BX+(7)*2,AX(2)MOV AX,ARRAY BXMOV ARRAY BX+2,AX3.1 0 如TABLE为数据
26、段中0 0 32单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?MOV AX,TABLELEA AX,TABLE答:MOV AX,TABLE是将TABLE单元的内容送到AX,(AX)=1234HLEA AX,TABLE是将TABLE单元的有效地址送到AX,(AX)=0 0 32H3.11执行下列指令后AX寄存器中的内容是什么?TABLE DW 10,20,30,40,50 ;OOOAH,0 0 14H,0 0 1EH,0 0 28H,0 0 32HEN TRY DW 3IIIMOV BX,OFFSET TABLEADD BX,EN TR
27、YMOV AX,BX答:(AX)=1EOOH(TABLE的存储方式如右图所示)3.1 2 下列ASCII码串(包括空格符)依次存储在起始地址为CSTRIN G的字节单元中:CSTRIN G DB BASED ADDRESSIN G*请编写指令将字符串中的第1个和第7 个字符传送给DX寄存器。答:MOV DH,CSTRIN GMOV DL,CSTRIN G+7-13.1 3 已知堆栈段寄存器SS的内容是0 FFA0 H,堆栈指针寄存器SP的内容是0 0 B0 H,先执行两条把80 57H和 OF79H分别进栈的PUSH指令,再执行一条POP指令。试画出堆栈区和SP的内容变化过程示意图(标出存储单
28、元的物理地址)。答:堆栈区和SP的内容变化过程示意图如下左图所示。3.1 4 设(DS)=1BOOH,(ES)=2B0 0 H,有关存储单元的内容如上右图所示。请写出两条指令把字变量X 装入AX寄存器。答:MOV BX,20 0 0 HMOV AX,ES:BX3.15求出以下各十六进制数与十六进制数62A0 H之和,并根据结果设置标志位SF、ZF、CF 和 OF 的值。(1)1234H(2)4321H(3)CFA0 H(4)9D60 H答:(1)和为 74D4H;SF=O,ZF=0,CF=O,0 F=0(2)和为 A5C1H;SF=1,ZF=O,CF=O,OF=1(3)和为 3240 H;SF
29、=O,ZF=O,CF=1,0 F=0(4)和为 0 0 0 0 H;SF=O,ZF=1,CF=1,OF=03.1 6求出以下各十六进制数与十六进制数4AE0 H的差值,并根据结果设置标志位 SF、ZF、CF和 OF的值。(1)1234H(2)5D90 H(3)90 90 H(4)EA0 4H答:(1)差为 C754H;SF=1,ZF=O,CF=1,0 F=0(2)差为 12B0 H;SF=O,ZF=O,CF=O,0 F=0(3)差为 45B0 H;SF=O,ZF=O,CF=O,OF=1(4)差为 9F24H;SF=1,ZF=O,CF=O,0 F=03.17写出执行以下计算的指令序列,其中X、Y
30、、Z、R、W 均为存放16位带符号数单元的地址。(1)Z-W+(Z-X)(2)Z-W-(X+6)-(R+9)(3)Z-(W*X)/(Y+6),R-余 数(4)Z*-(W-X)/5*Y)*2答:(1)MOV AX,Z;以下程序都未考虑带符号数的溢出S U B A X,XA D D A X,WM O V Z,A X(2)M O V B X,XA D D B X,6M O V C X,RA D D C R,9M O V A X,WS U B A X,B XS U B A X,C XM O V Z,A X(3)A D D Y,6M O V A X,WI M U L XI D I V YM O V Z,
31、A XM O V R,D X(4)M O V A X,WS U B A X,XC W DM O V B X,5I D I V B XI M U L YS H L A X,1 ;(D X),(A X)*2R C L D X,13.1 8 已知程序段如下:M O V A X,12 3 4 H ;(A X)=12 3 4 H,标志位不变M O V C L,4 ;(A X)和标志位都不变R O L A X,C L ;(A X)=2 3 4 1H,C F=1,S F 和 Z F 不变D E C A X ;(A X)=2 3 4 0H,C F=1 不变,S F=O,Z F=OM O V C X,4;(A
32、X)和标志位都不变M U L C X ;(A X)=8 D 00H,C F=O F=O,其它标志无定义I N T 2 0H每条指令执行完后,A X 寄存器的内容是什么?每条指令执行完后,进位、符号和零标志的值是什么?程序结束时,A X 和 D X 的内容是什么?(1)见注释;见注释;(A X)=8 D 00H,(D X)=O3.1 9 下列程序段中的每条指令执行完后,A X 寄存器及C F、S F、Z F 和 O F 的内容是什么?M O V A X,0;(A X)=O,标志位不变D E C A X ;(A X)=O F F F F H,C F 不变,S F=1,Z F=O,0F=0-J/)/
33、717)/式123空rl23、口/(X-zlz(x夕/(xz/lADD AX,7FFFH;(AX)=7FFEH,CF=1,SF=O,ZF=O,0 F=0ADD AX,2;(AX)=80 0 0 H,CF=O,SF=1,ZF=O,OF=1N OT AX;(AX)=7FFFH,标志位不变SUB AX,OFFFFH;(AX)=80 0 0 H,CF=1,SF=1,ZF=O,OF=1ADD AX,80 0 0 H;(AX)=O,CF=1,SF=O,ZF=1,OF=1SUB AX,1;(AX)=0 FFFFH,CF=1,SF=1,ZF=O,OF=OAN D AX,58D1H;(AX)=58D1H,CF=
34、O,SF=O,ZF=O,OF=OSAL AX,1;(AX)=OB1A2H,CF=O,SF=1,ZF=O,OF=1SAR AX,1;(AX)=OD8D1H,CF=O,SF=1,ZF=O,OF=0N EG AX;(AX)=272FH,CF=1,SF=O,ZF=O,OF=OROR AX,1 ;(AX)=9397H,CF=1,SF 和 ZF 不变,OF=1答:见注释。3.2 0 变量DATAX和变量DATAY的定义如下:DATAX DW 0 148HDW 2316HDATAY DW 0 237HDW 40 52H请按下列要求写出指令序列:(1)DATAX和 DATAY两个字数据相加,和存放在DATAY
35、中。(2)DATAX和 DATAY两个双字数据相加,和存放在从DATAY开始的双字单元中。(3)解释下列指令的作用:STCMOV BX,DATAXADC BX,DATAY(4)DATAX和 DATAY两个字数据相乘(用MUL)。(5)DATAX和 DATAY两个双字数据相乘(用MUL)。(6)DATAX 除以 23(用 DIV)。(7)DATAX 双字除以字 DATAY(用 DIV)。答:(1)MOV AX,DATAXADD DATAY,AXMOV AX,DATAX+2ADD DATAY+2,AX(2)MOV AX,DATAXADD DATAY,AXMOV AX,DATAX+2ADC DATA
36、Y+2,AXMOV DATAY+4,0 ;用于存放进位位ADC DATAY+4,0(3)DATAX和 DATAY两个字数据之和加1,结果存入BX寄存器。(4)RESULT1 DW 0DW 0RESULT2 DW 0DW 0M O V A X,D A T A XM U L D A T A YM O V R E S U L T 1,A XM O V R E S U L T 1+2,D XM O V A X,D A T A X+2M U L D A T A Y+2M O V R E S U L T 2 ,A XM O V R E S U L T 2+2,D X(5)A A D W 0B B D W
37、0C C D W 0D D D W 0M O V A X,D A T A XM U L D A T A YM O V A A ,A XM O V B B,D XM O V A X,D A T A XM U L D A T A Y+2A D D B B,A XA D C C C,D XM O V A X,D A T A X+2M U L D A T A YA D D B B,A XA D C C C,D XA D C D D,0M O V A X,D A T A X+2M U L D A T A Y+2A D D C C,A XA D C D D,D X(6)M O VA X,D A T A X
38、M O V B L,2 3D I V B L(7)M O VD X,D A T A X+2M O V A X,D A T A XD I V D A T A Y3.21写出对存放在D X和A X中的双字长数求补的指令序列。答:N E G DX也可为:N O T D XN E G A X N O T A XS B B D X,0 A D D A X,1A D C D X,03.22试编写一程序求出双字长数的绝对值。双字长数在A和A+2单元中,结果存放在B和B+2单元中。答:程序段如下:M O V A X,AM O V D X,A+2C M P D X,0J N S Z H E N S H U ;不
39、是负数则转走N E G D XN E G A XS B B D X,0Z H E N S H U:M O V B,A XM O V B+2,D XI N T 2 O H3.23假设(B X)=0E 3 H,变量V A L U E中存放的内容为7 9 H,确定下列各条指令单独执行后的结果。(1)X O R B X,V A L U E ;(B X)=9 A H,A N D B X,V A L U E ;(B X)=6 1H,O R B X,V A L U E ;(B X)=0F B H,X O R B X,O F F H ;(B X)=1C H,)/)/)z7X)/(2(3(4(5(6答C F、O
40、 F 都为 0,C F、O F 都为 0,C F、O F 都为 0,C F、O F 都为 0,A F无定义,S F=1,A F无定义,S F=O,A F无定义,S F=1,A F无定义,S F=O,Z F=O,P F=1Z F=O,P F=OZ F=O,P F=OZ F=O,P F=OA N D B X,0;(B X)=O O H,C F O F 都为 0,A F 无定义,S F=O,Z F=1,P F=1T E S T B X,01H ;(B X)=0E 3 H,C F、O F 都为 0,A F 无定义,S F=1,Z F=O,P F=O见注释。3.24试写出执行下列指令序列后B X寄存器的
41、内容。执行前(B X)=6 D 16 H。M O V C L,7S H R B X,C L答:(B X)=O O D A H。3.25试用移位指令把十进制数+5 3和-4 9分别乘以2。它们应该用什么指令?得到的结果是什么?如果要除以2呢?答:M O V A L,5 3S A L A L,1;(A L)=(+5 3*2)=6 A HM O V A L,-4 9S A L A L,1;(A L)=(-4 9*2)=9 E HM O V A L,5 3S A R A L,1;(A L)=(5 3/2)=1A HM O V A L,-4 9S A R A L,1;(A L)=(-4 9/2)=0E
42、7 H3.2 6试分析下面的程序段完成什么功能?M O V C L,04S H L D X,C LM O V B L,A HS H L A X,C LS H R B L,C LO R D L,B L答:本程序段将(D X),(A X)的双字同时左移4位,即将此双字乘以1 0 H (1 6)o3.2 7假定(D X)=0 B 9H,(C L)=3,(C F)=1,确定下列各条指令单独执行后DX中的值。(1)S H R D X,1 ;(D X)=0 5C H(2)S A R D X,C L ;(D X)=1 7H(3)S H L D X,C L ;(D X)=5C 8H(4)S H L D L,1
43、 ;(D X)=72 H(5)R O R D X,C L ;(D X)=2 0 1 7H(6)R O L D L,C L ;(D X)=0 C D H(7)S A L D H,1 ;(D X)=0 B 9H(8)R C L D X,C L ;(D X)=2 C C H(4)R C R D L,1 ;(D X)=O D C H答:见注释。3.2 8下列程序段执行完后,B X寄存器的内容是什么?MO V C L,3MO V B X,0 B 7HR O L B X,1R O R B X,C L答:(B X)=0 C 0 2 D H o3.2 9 假设数据段定义如下:C O NA ME D B q,则
44、使(A X)=1 后退出;p*2 Wq,则使(A X)=2 后退出。3.3 7 要求测试在S TA TUS 中的一个字节,如果第1、3、5 位均为1 则转移到R O UTI NE _ 1;如果此三位中有两位为1 则转移到R 0 UTI NE _ 2;如果此三位中只有一位为1则转移到R O U T IN E_ 3;如果此三位全为0 则转场到R 0U T IN E_ 4o试画出流程图,并编制相应的程序段。答:程序段如下:MO V AL,S T AT U SAN D AL,00010101B ;只保留第 1、3、5 位JZ R 0U T IN E_ 4;3 位全为 0 转 R 0U T IN E_
45、4JP E R O U T IN E_ 2;两位为 1 转 R O U T IN E_ 2CMP AL,00010101BJZ R O U T IN E_ 1;3 位全为 1 转 R O U T IN E_ 1R O U T IN E_ 3:;仅一位为 1 执行 R O U T IN E_ 3JMP EX ITR O U T IN E_ 1:JMP EX ITR O U T IN E_ 2:JMP EX ITR O U T IN E_ 4:EX IT:IN T 20H3.3 8 在下列程序的括号中分别填入如下指令:(1)LO O P L20(2)LO O P E L20(3)LO O P N
46、E L20试说明在三种情况下,当程序执行完后,AX B X、CX、DX 四个寄存器的内容分别是什么?T IT LE EX LO O P.CO MCO DES G S EG MEN TAS S U ME CS:CO DES G,DS:CO DS EG,S S:CO DS EGO R G 100HB EG IN:MO V AX,01MO V B X,02MO V DX,03MO V CX,04L20:IN C AXADD B X,AXS H R DX,1()R ETCO DES G EN DSEN D B EG IN答:(1)(AX)=5H,(B X)=10H,(CX)=O H,(DX)=O H(
47、2)(AX)=2H,(B X)=4H,(CX)=3H,(DX)=1H(3)(AX)=3H,(B X)=7H,(CX)=2H,(DX)=O H3.3 9 考虑以下的调用序列:(1)MAIN 调用N EAR 的S U B A过程(返回的偏移地址为0400);(2)S U B A调用N EAR 的S U B B 过程(返回的偏移地址为0A00);(3)SUBB调用FAR的SUBC过程(返回的段地址为B20 0,返回的偏移地址为0 10 0);(4)从 SUBC 返回 SUBB;(5)SUBB调用N EAR的SUBD过程(返回的偏移地址为0 C0 0);(6)从 SUBD 返回 SUBB;从 SUBB
48、返回SUBA;(8)从 SUBA 返回 MAIN;(9)从MAIN 调用SUBC(返回的段地址为10 0 0,返回的偏移地址为0 60 0);请画出每次调用及返回时的堆栈状态。答:每次调用及返回时的堆栈状态图如下所示:3.40 假设(EAX)=0 0 0 0 10 0 0 H,(EBX)=0 0 0 0 20 0 0 H,(DS)=0 0 10 H,试问下列指令访问内存的物理地址是什么?(1)MOV ECX,EAX+EBX(2)MOV EAX+2*EBX,CL(3)MOV DH,EBX+4*EAX+10 0 0 H答:(1)PA=(DS)*1OH+EA=OO10 0 H+0 0 0 0 10
49、0 0 H+0 0 0 0 20 0 0 H=0 0 0 0 31OOH(2)PA=(DS)*10 H+EA=0 0 10 0 H+0 0 0 0 10 0 0 H+2*0 0 0 0 20 0 0 H=0 0 0 0 510 0 H(3)PA=(DS)*10 H+EA=0 0 10 0 H+0 0 0 0 20 0 0 H+4*0 0 0 0 10 0 0 H+10 0 0 H=0 0 0 0 710 0 H3.41 假设(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348CH,(SI)=20 0 0 H,(DI)=40 44Ho在 DS段中从偏移地址40 44H单
50、元开始的4 个字节单元中,依次存放的内容为92H,6DH,0 A2H和 4CH,试问下列各条指令执行完后的目的地址及其中的内容是什么?(1)MOV SI,EAX(2)MOV BX,ECX(3)MOV EBX,DI答:(1)目的地址为DS:20 0 0 H,内容依次为:56H,0 F4H,23H和 98H(2)目的地址为DS:348CH,内容依次为:91H,34H,OF2H和 0 1H(3)目的操作数为EBX寄存器,(EBX)=4CA26D92H3.42说明下列指令的操作(1)PUSH AX;将(AX)压入堆栈(2)POP ESI;将堆栈中的双字弹出到ESI寄存器中(3)PUSH BX;将(BX