《汇编语言程序设计》教案(第二版)-2007.doc
《80x86 汇编语言程序设计》习题参考答案
- 0 -
清华大学出版社
沈美明 温冬婵 著
第 一 章. 习 题
作者:喻其山
1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:
(3) 4095
(4) 32767
(1) 369
答:(1) 369=1 0111 0001B=171H
(2) 10000
(2) 10000=10 0111 0001 0000B=2710H
(3) 4095=1111 1111 1111B=FFFH
(4) 32767=111 1111 1111 1111B=7FFFH
1.2 将下列二进制数转换为十六进制数和十进制数:
(1) 10 1101
答:(1) 10 1101B=2DH=45
(2) 1000 0000
(2) 1000 0000B=80H=128
(3) 1111 1111 1111 1111B=FFFFH=65535
(4) 1111 1111B=FFH=255
(3) 1111 1111 1111 1111 (4) 1111 1111
1.3 将下列十六进制数转换为二进制数和十进制数:
(1) FA
答:(1) FAH=1111 1010B=250
(2) 5B
(2) 5BH=101 1011B=91
(3) FFFEH=1111 1111 1111 1110B=65534
(4) 1234H=1 0010 0011 0100B=4660
(3) FFFE
1.4 完成下列十六进制数的运算,并转换为十进制数进行校核:
(3) ABCD-FE
(2) 1234+AF
(1) 3A+B7
答:(1) 3A+B7H=F1H=241
(2) 1234+AFH=12E3H=4835
(3) ABCD-FEH=AACFH=43727
(4) 7AB×6FH=35325H=217893
(4) 1234
(4) 7AB×6F
1.5 下列各数均为十进制数,请用 8 位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(3) 85-76
(4) 85-(-76)
(2) 85+(-76)
(1) (-85)+76
答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0
(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0
(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0
(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1
(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1
(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0
1.6 下列各数为十六进制表示的 8 位二进制数,请说明当它们分别被看作是用补码表示的带符号数或
(6) -85-(-76)
(5) (-85)-76
无符号数时,它们所表示的十进制数是什么?
(1) D8
答:(1) D8H 表示的带符号数为 -40,D8H 表示的无符号数为 216;
(2) FFH 表示的带符号数为 -1, FFH 表示的无符号数为 255。
(2) FF
1.7 下列各数均为用十六进制表示的 8 位二进制数,请说明当它们分别被看作是用补码表示的数或字
(2) 2B
符的 ASCII 码时,它们所表示的十进制数及字符是什么?
(1) 4F
答:(1) 4FH 表示的十进制数为 79,4FH 表示的字符为 O;
(2) 2BH 表示的十进制数为 43,2BH 表示的字符为 +;
(3) 73H 表示的十进制数为 115,73H 表示的字符为 s;
(4) 59H 表示的十进制数为 89,59H 表示的字符为 Y。
(3) 73
(4) 59
1.8 请写出下列字符串的 ASCII 码值。
For example,
This is a number 3692.
答:46H 6FH 72H 20H 65H 78H 61H 6DH 70H 6CH 65H 2CH 0AH 0DH
54H 68H 69H 73H 20H 69H 73H 20H 61H 20H 6EH 75H 6DH 62H 65H
《汇编语言程序设计》教案(第二版)-2007.doc
- 1 -
作者:喻其山
72H 20H 33H 36H 39H 32H 2EH 0AH 0DH
第 二 章. 习 题
2.1 在 80x86 微机的输入/输出指令中,I/O 端口号通常是由 DX 寄存器提供的,但有时也可以在指令
中直接指定 00~FFH 的端口号。试问可直接由指令指定的 I/O 端口数。
答:可直接由指令指定的 I/O 端口数为 256 个。
2.2 有两 个 16 位字 1EE5H 和 2A3CH 分别 存放在 80x86 微机 的存储器 的
000B0H 和 000B3H 单元中,请用图表示出它们在存储器里的存放情况。
答:存储器里的存放情况如右上图所示。
2.3 在 IBM PC 机的存储器中存放信息如右下图所示。试读出 30022H 和
30024H 字节单元的内容,以及 30021H 和 30022H 字单元的内容。
答:30022H 字节单元的内容为 ABH;30024H 字节单元的内容为 EFH。
30021H 字单元的内容为 AB34H;30022H 字单元的内容为 CDABH。
2.4 在实模式下,段地址和偏移地址为 3017:000A 的存储单元的物理地址是
什么?如果段地址和偏移地址是 3015:002A 和 3010:007A 呢?
答:3017:000A、3015:002A 和 3010:007A 的存储单元的物理地址都是
3017AH。
2.5 如果在一个程序开始执行以前(CS)=0A7F0H,(如 16 进制数的最高位为
字母,则应在其前加一个 0) (IP)=2B40H,试问该程序的第一个字的物理
地址是多少?
答:该程序的第一个字的物理地址是 0AAA40H。
2.6 在实模式下,存储器中每一段最多可有 10000H 个字节。如果用调试程
存储器
E5H
1EH
…
3CH
2AH
000B0H
000B1H
000B2H
000B3H
000B4H
2.2 题的信息存放情况
存储器
30020H
30021H
30022H
30023H
30024H
12H
34H
ABH
CDH
EFH
2.3 题的信息存放情况
序 DEBUG 的 r 命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,
以及条件标志 OF、SF、ZF、CF 的值。
C>debug
-r
AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000
SI=0000 DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF
IP=0100 NV UP DI PL NZ NA PO NC
答:此时存储器分段的示意图如右图所示。OF、SF、ZF、CF 的值都
10E40
10F40
20E40
20F40
21F00
堆栈段
数据段
附加段
为 0。
31F00
31FF0
代码段
41FF0
2.6 题的存储器分段示意图
2.7 下列操作可使用那些寄存器?
(1) 加法和减法
(2) 循环计数
(3) 乘法和除法
(4) 保存段地址
(5) 表示运算结果为 0
(6) 将要执行的指令地址
(7) 将要从堆栈取出数据的地址
答:答案见题目的右边。
数据寄存器等
CX
AX、DX,乘数和除数用其他寄
存器或存储器
段寄存器
ZF=1
CS:IP
SS:SP
2.8 那些寄存器可以用来指示存储器地址?
答:BX、BP、SI、DI、堆栈操作时的 SP、对应的段地址、386 及其后继机型的 Exx。
2.9 请将下列左边的项和右边的解释联系起来(把所选字母放在括号中):
(M)
(1) CPU
(C)
(2) 存储器
(D)
(3) 堆栈
(B)
(4)
IP
(5) SP
(A)
(6) 状态标志 (L)
A.保存当前栈顶地址的寄存器。
B.指示下一条要执行的指令的地址。
C.存储程序、数据等信息的记忆装置,微机有 RAM 和 ROM 两种。
D.以后进先出方式工作的存储空间。
E.把汇编语言程序翻译成机器语言程序的系统程序。
F.唯一代表存储空间中每个字节单元的地址。
《汇编语言程序设计》教案(第二版)-2007.doc
(7) 控制标志 (K)
(8) 段寄存器 (J)
(9) 物理地址 (F)
(10) 汇编语言 (H)
(11) 机器语言 (G)
(12) 汇编程序 (E)
(13) 连接程序 (I)
- 2 -
G.能被计算机直接识别的语言。
H.用指令的助记符、符号地址、标号等符号书写程序的语言。
I.把若干个模块连接起来成为可执行文件的系统程序。
J.保存各逻辑段的起始地址的寄存器,8086/8088 机有四个:CS、DS、
作者:喻其山
SS、ES。
K.控制操作的标志,如 DF 位。
L.记录指令操作结果的标志,共 6 位:OF、SF、ZF、AF、PF、CF。
M.分析、控制并执行指令的部件,由算术逻辑部件 ALU 和寄存器等
(14) 指令
(15) 伪指令
(O)
(N)
N.由汇编程序在汇编过程中执行的指令。
O.告诉 CPU 要执行的操作(一般还要指出操作数地址),在程序运行时
组成。
答:答案见题目的括号中。
执行。
第 三 章. 习 题
3.1 给定(BX)=637DH,(SI)=2A9BH,位移量 D=7237H,试确定在以下各种寻址方式下的有效地址是
什么?
(1) 立即寻址
(2) 直接寻址
(3) 使用 BX 的寄存器寻址
(4) 使用 BX 的简接寻址
(5) 使用 BX 的寄存器相对寻址
(6) 基址变址寻址
(7) 相对基址变址寻址
答:(1) 操作数在指令中,即立即数;
(2) EA=D=7237H;
(3) 无 EA,操作数为(BX)=637DH;
(4) EA=(BX)=637DH;
(5) EA=(BX)+D=0D5B4H;
(6) EA=(BX)+(SI)=8E18H;
(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此 EA=004FH。
3.2 试根据以下要求写出相应的汇编语言指令
(1) 把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器中。
(2) 用寄存器 BX 和 SI 的基址变址寻址方式把存储器中的一个字节与 AL 寄存器的内容相加,并
把结果送到 AL 寄存器中。
(3) 用寄存器 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结
果送回存储器中。
(4) 用位移量为 0524H 的直接寻址方式把存储器中的一个字与数 2A59H 相加,并把结果送回存储
单元中。
(5) 把数 0B5H 与(AL)相加,并把结果送回 AL 中。
答:(1) ADD DX, BX
(2) ADD AL, [BX][SI]
(3) ADD [BX+0B2H], CX
(4) ADD WORD PTR [0524H], 2A59H
(5) ADD AL, 0B5H
3.3 写出把首地址为 BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令。要求使用以下几种寻址方
式:
(1) 寄存器间接寻址
(2) 寄存器相对寻址
(3) 基址变址寻址
答:(1) MOV BX, OFFSET BLOCK
《汇编语言程序设计》教案(第二版)-2007.doc
- 3 -
作者:喻其山
ADD BX, (6–1)*2
MOV DX, [BX]
(2) MOV BX, OFFSET BLOCK
MOV DX, [BX+(6–1)*2]
(3) MOV BX, OFFSET BLOCK
MOV SI, (6–1)*2
MOV DX, [BX][SI]
改为: MOV BX, (6-1)*2
也可
MOV DX, BLOCK[BX]
3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,
(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各
条指令执行完后 AX 寄存器的内容。
(1) MOV AX, 1200H
(2) MOV AX, BX
(3) MOV AX, [1200H]
(4) MOV AX, [BX]
(5) MOV AX, 1100[BX]
(6) MOV AX, [BX][SI]
(7) MOV AX, 1100[BX][SI]
答:(1) (AX)=1200H
(2) (AX)=0100H
(3) (AX)=4C2AH
(4) (AX)=3412H
(5) (AX)=4C2AH
(6) (AX)=7856H
(7) (AX)=65B7H
8000:FF10H
8000:FF11H ?→(AL)
?→(AH)
1B00:2000H
1B00:2001H
1B00:2002H
1B00:2003H
3.6 题的作图表示
10H
FFH
00H
80H
3.5 给定(IP)=2BC0H,(CS)=0200H,位移量 D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,
(275B9H)=098AH,试为以下的转移指令找出转移的偏移地址。
(1) 段内直接寻址
(2) 使用 BX 及寄存器间接寻址方式的段内间接寻址
(3) 使用 BX 及寄存器相对寻址方式的段内间接寻址
答:(1) JMP NEAR PTR 5119H ;(IP)=5119H+((IP)+03H)=7CDCH,物理地址 PA=09CDCH
(IP)+03H 是 JMP NEAR PTR 5119H 指令的下一条指令的首地址。
(2) JMP WORD PTR [BX]
(3) JMP D[BX]
;(IP)=((DS)*10H+(BX))=0600H,PA=02600H
;(IP)=((DS)*10H+(BX)+D)=098AH,PA=0298AH
3.6 设当前数据段寄存器的内容为 1B00H,在数据段的偏移地址 2000H 单元内,含有一个内容为
0FF10H 和 8000H 的指针,它们是一个 16 位变量的偏移地址和段地址,试写出把该变量装入 AX
的指令序列,并画图表示出来。
答:MOV BX, [2000H]
;图示如上所示。
3.7 在 0624H 单元内有一条二字节 JMP SHORT OBJ 指令,如其中位移量为(1) 27H,(2) 6BH,(3) 0C6H,
MOV
LES
MOV
BX, 2000H
BX, [BX]
AX, ES :[BX]
MOV AX, [2000H+2]
MOV ES, AX
MOV AX, ES:[BX]
试问转向地址 OBJ 的值是多少?
答:(1) OBJ=0624H+02H+27H=064DH
(2) OBJ=0624H+02H+6BH=0691H
(3) OBJ=0624H+02H+0C6H=05ECH
;C6H 对应的负数为-3AH(向上转移,负位移量)
3.8 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段
中变量名 VAL 的偏移地址为 0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值
是多少?
(1) MOV
(3) MOV
(5) MOV
(7) MOV
(9) MOV
AX, BX
AX, VAL
AX, ES:[BX]
AX, [SI]
AX, VAL[BX]
AX, 0ABH
AX, [100H]
AX, [BX]
AX, [BP]
AX, [BX+10]
(2) MOV
(4) MOV
(6) MOV
(8) MOV
(10) MOV
《汇编语言程序设计》教案(第二版)-2007.doc
- 4 -
作者:喻其山
(11) MOV
答:(1) 立即方式;
AX, [BX][SI]
(12) MOV
AX, VAL[BX][SI]
操作数在本条指令中
操作数为 (BX)=0100H
(2) 寄存器寻址方式;
PA=20100H
(3) 直接寻址方式;
PA=20050H
(4) 直接寻址方式;
PA=20100H
(5) BX 寄存器间接寻址方式;
PA=21100H
(6) 附加段 BX 寄存器间接寻址方式;
PA=15010H
(7) BP 寄存器间接寻址方式;
PA=200A0H
(8) SI 寄存器间接寻址方式;
PA=20110H
(9) BX 寄存器相对寻址方式;
PA=20150H
(10) BX 寄存器相对寻址方式;
(11) BX 和 SI 寄存器基址变址寻址方式;
PA=201A0H
(12) BX 和 SI 寄存器相对基址变址寻址方式;PA=201F0H
3.9 在 ARRAY 数组中依次存储了七个字数据,紧接着是名为 ZERO 的字单元,表示如下:
ARRAY DW 23, 36, 2, 100, 32000, 54, 0
ZERO DW ?
(1) 如果 BX 包含数组 ARRAY 的初始地址,请编写指令将数据 0 传送给 ZERO 单元。
(2) 如果 BX 包含数据 0 在数组中的位移量,请编写指令将数据 0 传送给 ZERO 单元。
答:(1) MOV AX, [BX+(7-1)*2]
MOV [BX+(7)*2], AX
(2) MOV AX, ARRAY [BX]
MOV ARRAY [BX+2], AX
AX, TABLE
AX, TABLE
AX, TABLE 是将 TABLE 单元的内容送到 AX,(AX)=1234H
AX,TABLE 是将 TABLE 单元的有效地址送到 AX,(AX)=0032H
区别?指令执行完后 AX 寄存器的内容是什么?
MOV
LEA
答:MOV
LEA
3.10 如 TABLE 为数据段中 0032 单元的符号名,其中存放的内容为 1234H,试问以下两条指令有什么
0AH
00H
14H
00H
1EH
00H
28H
00H
32H
00H
3.11 题的 TABLE
TABLE DW 10, 20, 30, 40, 50
ENTRY DW 3
3.11 执行下列指令后 AX 寄存器中的内容是什么?
;000AH, 0014H, 001EH, 0028H, 0032H
BX, OFFSET TABLE
BX, ENTRY
AX, [BX]
┇
MOV
ADD
MOV
TABLE
TABLE+3
答:(AX)=1E00H
(TABLE 的存储方式如右图所示)
存储方式
3.12 下列 ASCII 码串(包括空格符)依次存储在起始地址为 CSTRING 的字节单元中:
CSTRING DB ‘BASED ADDRESSING’
请编写指令将字符串中的第 1 个和第 7 个字符传送给 DX 寄存器。
答:MOV DH, CSTRING
MOV DL, CSTRING+7-1
3.13 已知堆栈段寄存器 SS 的内容是 0FFA0H,堆栈指针寄存器 SP 的内容是 00B0H,先执行两条把 8057H
和 0F79H 分别进栈的 PUSH 指令,再执行一条 POP 指令。试画出堆栈区和 SP 的内容变化过程示
意图(标出存储单元的物理地址)。
答:堆栈区和 SP 的内容变化过程示意图如下左图所示。
←再次进栈(SP)←(SP)-2
出栈时(SP)←(SP)+2
←首次进栈(SP)←(SP)-2
FFAACH
FFAAEH
FFAB0H
79H
0FH
57H
80H
1B00:2000
1B00:2002
8000H
2B00H
2B00:8000
X
3.13 题的堆栈区和 SP 的内容变化过程示意图
3.14 题的存储区情况
《汇编语言程序设计》教案(第二版)-2007.doc
- 5 -
作者:喻其山
3.14 设(DS)=1B00H,(ES)=2B00H,有关存储单元的内容如上右图所示。请写出两条指令把字变量 X
装入 AX 寄存器。
答:MOV BX, [2000H]
MOV AX, ES:[BX]
3.15 求出以下各十六进制数与十六进制数 62A0H 之和,并根据结果设置标志位 SF、ZF、CF 和 OF 的
(2) 4321H
值。
(1) 1234H
答:(1) 和为 74D4H;SF=0,ZF=0,CF=0,OF=0
(2) 和为 A5C1H;SF=1,ZF=0,CF=0,OF=1
(3) 和为 3240H;SF=0,ZF=0,CF=1,OF=0
(4) 和为 0000H;SF=0,ZF=1,CF=1,OF=0
(3) CFA0H
(4) 9D60H
3.16 求出以下各十六进制数与十六进制数 4AE0H 的差值,并根据结果设置标志位 SF、ZF、CF 和 OF
(2) 5D90H
的值。
(1) 1234H
答:(1) 差为 C754H;SF=1,ZF=0,CF=1,OF=0
(2) 差为 12B0H;SF=0,ZF=0,CF=0,OF=0
(3) 差为 45B0H;SF=0,ZF=0,CF=0,OF=1
(4) 差为 9F24H;SF=1,ZF=0,CF=0,OF=0
(3) 9090H
(4) EA04H
3.17 写出执行以下计算的指令序列,其中 X、Y、Z、R、W 均为存放 16 位带符号数单元的地址。
(1) Z←W+(Z-X)
(3) Z←(W*X)/(Y+6),R←余数
答:(1) MOV AX, Z
SUB AX, X
ADD AX, W
MOV
Z, AX
(2) Z←W-(X+6)-(R+9)
(4) Z←((W-X)/5*Y)*2
;以下程序都未考虑带符号数的溢出
(2) MOV BX, X
ADD BX, 6
MOV CX, R
ADD CR, 9
MOV
SUB AX, BX
SUB AX, CX
MOV
(3) ADD Y, 6
MOV
IMUL X
IDIV Y
MOV
MOV
AX, W
Z, AX
AX, W
Z, AX
R, DX
(4) MOV AX, W
SUB AX, X
CWD
MOV BX, 5
IDIV BX
IMUL Y
SHL AX, 1 ;((DX),(AX))*2
RCL DX, 1
3.18 已知程序段如下:
MOV
MOV
ROL
DEC
MOV
AX, 1234H ;(AX)=1234H,标志位不变
CL, 4
;(AX)和标志位都不变
AX, CL
AX
;(AX)=2341H,CF=1,SF 和 ZF 不变
;(AX)=2340H,CF=1 不变,SF=0,ZF=0
CX, 4
;(AX)和标志位都不变
《汇编语言程序设计》教案(第二版)-2007.doc
- 6 -
作者:喻其山
;(AX)=8D00H,CF=OF=0,其它标志无定义
CX
20H
MUL
INT
试问:
(1) 每条指令执行完后,AX 寄存器的内容是什么?
(2) 每条指令执行完后,进位、符号和零标志的值是什么?
(3) 程序结束时,AX 和 DX 的内容是什么?
答:(1) 见注释;
(2) 见注释;
(3)
(AX)=8D00H,(DX)=0
3.19 下列程序段中的每条指令执行完后,AX 寄存器及 CF、SF、ZF 和 OF 的内容是什么?
AX
AX, 0
MOV
DEC
AX, 7FFFH
ADD
AX, 2
ADD
AX
NOT
AX, 0FFFFH
SUB
AX, 8000H
ADD
AX, 1
SUB
AX, 58D1H
AND
AX, 1
SAL
AX, 1
SAR
AX
NEG
ROR
AX, 1
答:见注释。
;(AX)=0,
标志位不变
;(AX)=0FFFFH, CF 不变,SF=1,ZF=0,OF=0
;(AX)=7FFEH, CF=1,SF=0,ZF=0,OF=0
;(AX)=8000H,
CF=0,SF=1,ZF=0,OF=1
;(AX)=7FFFH, 标志位不变
CF=1,SF=1,ZF=0,OF=1
;(AX)=8000H,
;(AX)=0,
CF=1,SF=0,ZF=1,OF=1
;(AX)=0FFFFH, CF=1,SF=1,ZF=0,OF=0
;(AX)=58D1H, CF=0,SF=0,ZF=0,OF=0
;(AX)=0B1A2H, CF=0,SF=1,ZF=0,OF=1
;(AX)=0D8D1H, CF=0,SF=1,ZF=0,OF=0
;(AX)= 272FH, CF=1,SF=0,ZF=0,OF=0
;(AX)= 9397H, CF=1,SF 和 ZF 不变,OF=1
3.20 变量 DATAX 和变量 DATAY 的定义如下:
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
请按下列要求写出指令序列:
(1) DATAX 和 DATAY 两个字数据相加,和存放在 DATAY 中。
(2) DATAX 和 DATAY 两个双字数据相加,和存放在从 DATAY 开始的双字单元中。
(3) 解释下列指令的作用:
STC
MOV
ADC BX, DATAY
BX, DATAX
(4) DATAX 和 DATAY 两个字数据相乘(用 MUL)。
(5) DATAX 和 DATAY 两个双字数据相乘(用 MUL)。
(6) DATAX 除以 23(用 DIV)。
(7) DATAX 双字除以字 DATAY (用 DIV)。
答:(1) MOV AX, DATAX
ADD DATAY, AX
MOV AX, DATAX+2
ADD DATAY+2, AX
(2) MOV AX, DATAX
ADD DATAY, AX
MOV AX, DATAX+2
ADC
MOV DATAY+4, 0
ADC
DATAY+4, 0
DATAY+2, AX
;用于存放进位位
(3) DATAX 和 DATAY 两个字数据之和加 1,结果存入 BX 寄存器。
(4) RESULT1 DW 0
DW 0
RESULT2 DW 0
《汇编语言程序设计》教案(第二版)-2007.doc
- 7 -
作者:喻其山
DW 0
┇
MOV AX, DATAX
MUL DATAY
MOV RESULT1 , AX
MOV RESULT1+2, DX
MOV AX, DATAX+2
MUL DATAY+2
MOV RESULT2 , AX
MOV RESULT2+2, DX
(5) AA
BB
CC
DD
DW 0
DW 0
DW 0
DW 0
┇
CC, DX
MOV AX, DATAX
MUL DATAY
MOV AA , AX
MOV BB, DX
MOV AX, DATAX
MUL DATAY+2
ADD BB, AX
ADC
MOV AX, DATAX+2
MUL DATAY
ADD BB, AX
ADC
ADC
MOV AX, DATAX+2
MUL DATAY+2
ADD CC, AX
ADC
CC, DX
DD, 0
DD, DX
(6) MOV AX, DATAX
MOV BL, 23
DIV BL
(7) MOV DX, DATAX+2
MOV AX, DATAX
DIV DATAY
3.21 写出对存放在 DX 和 AX 中的双字长数求补的指令序列。
答:NEG DX
NEG AX
SBB DX, 0
也可为:
NOT
DX
NOT
ADD
AX
AX, 1
ADC
DX, 0
3.22 试编写一程序求出双字长数的绝对值。双字长数在 A 和 A+2 单元中,结果存放在 B 和 B+2 单元
中。
答:程序段如下:
MOV
MOV
CMP
JNS
NEG
NEG
SBB
ZHENSHU: MOV
MOV
INT
AX, A
DX, A+2
DX, 0
ZHENSHU ;不是负数则转走
DX
AX
DX, 0
B, AX
B+2, DX
20H
3.23 假设(BX)=0E3H,变量 VALUE 中存放的内容为 79H,确定下列各条指令单独执行后的结果。