logo资料库

80x86汇编语言程序设计答案 清华版 (沈美明 温冬婵 编著).docx

第1页 / 共98页
第2页 / 共98页
第3页 / 共98页
第4页 / 共98页
第5页 / 共98页
第6页 / 共98页
第7页 / 共98页
第8页 / 共98页
资料共98页,剩余部分请下载后查看
《80x86汇编语言程序设计》习题参考答案
第 一 章.习 题
第 二 章.习 题
第 三 章.习 题
第 四 章.习 题
第 五 章.习 题
第 六 章.习 题
第 七 章.习 题
第 八 章.习 题
第 九 章.习 题
第 十 章.习 题
第 十一 章.习 题
《汇编语言程序设计》教案(第二版)-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,确定下列各条指令单独执行后的结果。
分享到:
收藏