汇编语言程序设计(第二版)课后习题答案
第二章
1.解答:有256个
2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元
E5
1E
3C
2A
3.解答:30022H字节单元内容:ABH30024H字节单元内容:EFH
30021H字单元内容:AB34H30022H字单元内容:CDABH
4.解答:这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址
5.解答:CS+IP第一个字的物理地址为:0AAA40H
6.解答:条件标志OF,SF,ZF,CF,的值依次为:0,0,0,0
7.下列操作可使用那些寄存器?
(1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH,AL等(2)循环计数CX
(3)乘法和除法DX,AX,AH,AL
(4)保存段地址CS,DS,ES,SS
(5)表示运算结果为O FLAGS
(6)将要执行的指令地址IP
(7)将要从堆栈取出数据的地址BP,SP,SS
8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP
9.一一对应;
5--A4--B2--C3--D12--E9--F11--G10--H13--I8--J7--K6---L1--M15--N14--O
第三章
1.(1)立即寻址没有
(2)直接寻址7237H
(3)使用BX的寄存器寻址没有
(4)使用BX的间接寻址637DH
(5)使用BX的寄存器相对寻址0D5B4H
(6)基址变址寻址8E18H
(7)相对基址变址004FH
2.根据下列要求,写出相应的汇编指令。
(1)ADD DX,BX
(2)ADDAL,[BX][SI]
(3)ADD[BX][0B2H],CX
(4)MOV AX,2A59H ADD[0524H],AX
(5)ADDAL,0B5H
3.(1)寄存器间接寻址
MOVBX,OFFSET[BLOCK][0AH]
MOV DX,[BX]
(2)寄存器相对寻址
MOV SI,OAH
MOVDX,[BLOCK][SI]
(3)基址变址寻址
MOVBX,BLOCK
MOVSI,OAH
MOVDX,[BX][SI]
4.现有(DS)
=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(2
1200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。
(1)MOV AX,1200H1200H
(2)MOV AX,BX0100H
(3)MOV AX,[1200]4C2AH注意,是字单元!!
(4)
MOV AX,[BX]3412H同上
(5)MOV1100[BX]4C2AH
(6)MOV AX,[BX][SI]7856H
(7)MOV AX,1100[BX][SI]65B7H
5.(1)7CD9H(2)0600H(3)098AH
6.MOV BX,2000H
LES DI,[BX]
MOV AX,ES:DI
7.转向地址OBJ的值分别为:
(1)064DH(2)0691H(3)05E0H注意有符号数的符号位
8.(1)MOV AX,0ABH立即数寻址无物理地址
(2)MOV AX,BX寄存器寻址同上
(3)MOV AX,[100]直接寻址20100H
(4)MOV AX,VAL直接寻址20050H
(5)MOVAX,[BX]寄存器间接寻址20100H
(6)MOV AX,ES:[BX]直接寻址21100H
(7)MOVAX,[BP]寄存器间接寻址20010H
(8)MOV AX,[SI]同上200A0H
(9)MOVAX,[BX+10]寄存器相对寻址20110H
(10)MOV AX,VAL[BX]同上20150H
(11)MOVAX,[BX][SI]基址变址寻址201A0H
(12)MOVAX,VAL[BX][SI]相对基相变址寻址201F0H
9.(1)的指令:MOVAX,[BX][0CH]MOV ZREO,AX
(2)的指令:MOV AX,ARRAY[BX]MOVZREO,AX
10.MOVAX,TABLE是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234H
LEAAX,TABLE是把符号地址TABLE的有效地址(这里是偏移量)送到指定寄存器AX里,指令执行完后,(AX)=0032H
11.执行完指令后,(AX)=1E00H
12.LEA AX,CSTRING
MOVDL,AX
MOVDH,[AX+6]
13.课本上P51--P53
14.LES BX,[2000]
MOVAX,ES:[BX]
一条指令的话为MOVAX,ES:[8000H]
15.运算结果SF,ZF,CF,OF各位的值(从左至右依次往下)
(1)74D4H0000
(2)A5C1H1001
(3)4240H0010
(4)0000H0110
16.接上表
(1)5D140000
(2)A8701001
(3)D8701000
(4)34E40010
17.(1)MOV AX,Z;把Z送到AX
SUB AX,X;Z-X
ADD AX,W;W+(Z-X)
MOVZ,AX;结果保存在Z中
(2)MOV AX,R;R送到AX中
ADDAX,9;R+9
MOVBX,X;X送到BX中
ADDBX,6;X+6
ADDAX,BX;(R+9)+(X+6),结果保存在AX中
MOVBX,W;W送到BX中
SUB BX,AX;W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和
MOVZ,BX;最终结果送到Z中
(3)
MOVAX,W;把W送到AX
IMUL X;W*X注意:低十六位保存在AX里,高十六位保存在DX里MOVBX,Y;把Y送到BX里
ADD BX,6;Y+6
IDIV BX;(W*X)/(Y+6)注意:商保存在AX里,余数保存在DX里MOVZ,AX;把商送到Z中,
MOVR,DX;把余数送到R中
(4)
MOVAX,W;把W送到AX中
SUB AX,X;W-X
CWD;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保存在DX中
MOVBX,5;把5送到BX中
IDIV BX;(W-X)/5被除数为32位,除数为16位商为16位
IMUL Y;上一步结果再乖以Y,积为32位
MOVBX,2;把2送到BX中
IMUL BX;上一步乘法所得的积再乘以2,各为64位
MOVZ,EAX;把结果中低32位放入Z双字单元中
MOV[Z+4],EDX;把结果中高32位放入Z+4双字单元中
18.
指令本条指令执行完后AX的内容执行完后CF,SF,ZF的值MOV
AX,1234H1234H0 00
MOV
CL,41234H0 00
ROL
AX,CL2341H1 00
DEC
AX2340H1 00
MOV
CX,42340H1
00
MUL
CX8918H0 00
INT20H
程序结束后,(AX)=8918H(DX)=0000H
19.
指令执行完后AX的内容执行完后CF,SF,ZF和OF的值
MOV
AX,00
汇编table指令什么意思0010
DEC
AX FFFFH0 100
ADD7FFEH
0000
ADD
AX,28000H0101 NOT
AX7FFFH01 01
SUB AX,0FFFFH8000H1101 ADD AX,8000H0000H1011 SUB AX,1FFFFH1 101
AND AX,58D1H58D1H0000 SAL AX,1B1A2H0101 SAR AX,1D8D1H0100 NEGAX272FH1000 RORAX,19397H1001 20.
(1)MOVAX,DATAX
ADDDATAY,AX
(2)MOVAX,DATAX
ADD DATAY,AX
MOV AX,[DATAX+2]
ADD[DATAY+2],AX
(3)本組指令的作用是:BX<------[DATAX]+[DATAY]+[1](CF的值)帶進位加法 ̄
(4)MOV AX,DATAX
MUL DATAY;結果的高十六位保存在DX裏,低十六位保存在AX 裏
(5)MOVAX,DATAX
MOVDX,[DATAX+2]
MUL DWORD DATAY;結果的高三十二位保存在EDX裏,低三十二位保存在EAX裏
(6)MOVAX,DATAX
DIV17H;結果商保存在AL中,余數在AH中(7)MOVAX,DATAX
CDW
DIV DATAY
21.NEGDX
NEG AX
SBB DX,0
22.
MOVAX,A;把雙字長數的低字放到AX中MOVDX,[A+2];把雙字長數的高字放到DX中
TEST DX,8000H;測試雙字長數的符號

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。