当前位置:首页 > 《汇编语言程序设计》1~10章习题答案
P16 第一章 习题·答案 1.1 二进制 十六进制 (1) 16 10000B 10H (2) 63.205 ≈111111.0011B 3F.3H (3)1024 10000000000B 400H (4)3275 110011001011B 0CCBH (5) 111 1101111B 6FH (6) 2048 100000000000B 800H 1.2
原码 反码 补码 (1) -11 8BH 0F4H 0F5H (2) 126 7EH 7EH 7EH (3) -0 80H 0FFH 00H (4) 64 40H 40H 40H (5) -119 0F7H 88H 89H (6) -85 0D5H 0AAH 0ABH 1.3 十六进制 (1) 11001B 19H 25 (2) 11011101B 0DDH 221 (3) 111111111B 1FFH 511 (4) 1100111B 67H 103 1.4 十进制 二进制 (1) 4BH 75 1001011B (2) 1FCH 508 111111100B (3) 327H 807 1100100111B (4) 0FFFEH 65534 1111111111111110B (5) 1DH 29 11101B (6) 0FFH 255 11111111B (7) 8A1H 2209 100010100001B P26 第二章习题·答案
2.6 见P19
SS:SP 00H 堆栈:内存中以”先入后 10H 出”为原则存取、最大空间为 20H 64KB的存储区域称之为堆栈
4AH 栈底:栈区最高地址单元 的前一个单元为栈底
栈顶:最后进栈数据所对 应的地址单元为栈顶
《汇编语言程序设计》习题答案 共16页 第1页
1.5 (字长 n=8) 补码 定义式 取反加1 (1) -0.101B =21-0.101=1.011B=1.6h (2) +0110100B =本身=0110100B=34h 00110100B=34h (3) -1011001B =28-1011001B 10100111B =100000000B-1011001B=10100111B=0A7h =100h-59h=0A7h (4) +0.111B =本身=0.111B=0.Eh 1.6 补码 原码 机器数真值 (1) 01111000B 01111000B +1111000B=+78h (2) 11001111B 10110001B -0110001B=-31h (3) 10001110B 11110010B -1110010B=-72h (4) 01111111B 01111111B +1111111B=+7fh 1.7
(1) (2) (3) (4) (5)
1AH 00H 7DH 01H 00H 40H 6CH 10H 5BH
4AH
1.8 设补码长度为字节(即为8位)
补码 十进制 (1) 6CH 108 (2) 72H 114 (3) 90H -112 (4) 0F1H -15 (5) 30H 48 (6) 0ACH -84 1.9
(1) 21-(-18)= 15H-0EEH= 27H (2) 71- 36 = 47H- 24H= 23H (3) -5+ 120 =0FBH+ 78H= 73H (4) -10- 20 =0F6H- 14H=0E2H (5) -85-(-40)=0ABH-0D8H=0D3H 1.10
57H,69H,6EH,64H,6FH,77H,73H,20H,39H,35H, 56H,69H,73H,75H,61H,6CH,20H,62H,61H,73H,69H,63H
2.7
2.8
000B0H 5AH 4017H:000AH=4017AH 34H 4015H:002AH=4017AH — 4010H:007AH=4017AH 000B3H 78H 说明了同一个物理地址可以 12H 用多个逻辑地址表示。
《汇编语言程序设计》习题答案 共16页 第2页
P74
3.1 (1) 寄存器寻址
(2) 寄存器间接寻址, 物理地址=30700H (3) 变址寻址/寄存器相对寻址,物理地址=31804H (4) 基址寻址/寄存器相对寻址,物理地址=41700H (5) 基址变址寻址, 物理地址=30800H (6) 相对基址变址寻址, 物理地址=42504H 3.2 (1) 错:源不能是 基址基址寻址。
(2) 错:源和目不能同时为 内存单元。 (3) 错:直接给出的移位位数不能是3。 (4) 错:取反指令只能有一个操作数。
(2) L1: JCXZ L2
L2:
DEC CX CMPSB JZ L1
第三章 习题·答案
3.9 MOV CL,3
MOV BX,4DABH ;(BX)= 4DABH ROL BX,1 ROR BX,CL
;(BX)= 9B56H ;(BX)=0D36AH
3.10 MOV AX,BCD1
ADD AL,BYTE PTR BCD2 DAA
MOV BYTE PTR BCD3,AL MOV AL,AH
ADC AL,BYTE PTR BCD2+2 DAA
MOV BYTE PTR BCD3+2,AL
BCD3 BCD3 46H
23H CLD LEA SI,STRING1 LEA DI,DESTIN
MOV CX,20 ;也可以这样 MOV CX,20/2 REP MOVSB ; REP MOVSW
MOV AX,X CMP AX,50 JG N_HIGH SUB AX,Y JO OVERFLOW ;求绝对值 JNS L ;正数转
NEG AX ;负数的补码求补=绝对值 L: MOV RESULT,AX
设变量单元为字长
(1) MOV AX,W SUB AX,Z SUB AX,X MOV Z,AX (2) MOV AX,W
ADD AX,X ADD AX,6 SUB AX,R SUB AX,9 MOV Z,AX (3) MOV AX,W
MUL AX,X ADD Y,6 DIV Y MOV Z,AX
MOV R,DX
(5) 错:不能将立即数直接送入段寄存器。 (6) 错:目不能是 段寄存器CS。 (7) 错:第一个操作数不能是 立即数。
(8) 当VALUE1为字变量时,对;否则为错:源和目的类型(长度)不一致。 (9) 错:源和目不能同时为 段寄存器。 (10)对。
(11)错:出栈指令的目不能是 立即数。
(12)错:输入指令的目必须是累加器,源必须是小于0FFH的端口地址
或者是存放端口地址DX寄存器。
(13)错:源不能是 立即数。
(14)错:寄存器CX不能用于寄存器间接寻址。 3.3 MOV AX,84A0H ;所有的标志位保持不变
ADD AX,9460H ;AF=0,CF=1,OF=1,SF=0,ZF=0,PF=1。
3.4 (1) SUB AX,AX;或用XOR AX,AX;或用 MOV AX,0;或用 AND AX,0
(2) MOV CL,4
ROR BL,CL ;也可以用 ROL BL,CL
(3) ① 若都为字节变量,程序如下: ② 若都为字变量,程序如下:
MOV AL,N1 CBW
IDIV N2 MOV M1,AL MOV M2,AH
MOV AX,N1 CWD IDIV N2 MOV M1,AX MOV M2,DX
程序段执行完后,单元的值如左示:
3.11
3.12(4) AND BX,0F7AFH;0F7AFH =1111 0111 1010 1111B (5) XOR AX,4020H ; 4020H =0100 0000 0010 0000B (6) TEST DX,0201H ; 0201H =0000 0010 0000 0001B (7) OR CX,1
3.5 (1) MOV BX,OFFSET BLOCK+(6-1)*2
MOV AX,[BX]
(2) MOV BX,OFFSET BLOCK
MOV AX,10[BX] (3) LEA BX,BLOCK
MOV SI,0
MOV AX,10[BX+SI] (4) MOV AX,BLOCK+10 3.6 (1) (BX)= 009AH
(2) (BX)= 0061H 3.7 (AX)=8D00H,(CX)=0004H 3.8 (1)
L2:
JCXZ L2 LOOP L1 L1: MOVSB
(3) (BX)= 8071H
(4) (BX)= 10F7H (5) (BX)=0FF1CH
;也可以用LEA BX,BLOCK
3.13《汇编语言程序设计》习题答案 共16页 第3页
P95
4.1 BLOCK DB 20H,30H,40H,50H,60H,70H,80H,90H
BLOCK DW 3020H,5040H,7060H,9080H BLOCK DD 50403020H,90807060H
4.5 (1) 29
(2) 0
(3) 0E6H或者FFE6H (4) 103 4.6 (1) BX=(0002H)
(2) AL=( 02H) (3) CX=(0001H) (4) DL=( 0AH) 第四章 习题·答案 4.2 (1) DATA1 DB 86H,27H,23H,00H,24H,1AH (2) DATA2 DW 0B430H,1062H
(3) DATA3 DB 4 DUP(20H),20,0,6 DUP(1,2) (4) X EQU THIS BYTE ;或者用 Y EQU THIS WORD
X DB 10H,00H,41H,42H
Y DW 0010H,4241H ;
(5) TITLE 标题
SUBTIT 子标题 (6) .386 (7) .8086 (1)
(2) 4.3 0FFH 03H 41H 00H 42H 15H 00H 00H 02H 03H 43H 00H 0AH 15H 43H 00H 0AH 42H 00H 41H 02H 64H 43H 00H 0AH 43H
0AH
4.4 DATA SEGMENT INFOR1 DB 7FH
INFOR2 DB ‘EXAMPLE’ INFOR3 DW 65535
INFOR4 DB 42H,31H ;也可以用INFOR4 DW 3142H
INFOR5 EQU INFOR3- INFOR2
DATA ENDS P115
第五章 习题·答案
5.1
D SEGMENT PARA STACK
array db 1,9,0,255,99,2 ;具体数据由编程者自行设定max db ? min db ? D ENDS C SEGMENT
ASSUME CS:C,DS:D MAIN PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,D MOV DS,AX mov cx,max-array lea si,array
4.7 (1) 0030H,003AH
(2) 10H=16 (3) 02H
(3) 4.8
02H D_SEG SEGMENT PARA STACK 02H FLD1 DB 0,256,A ;①256超过一个字节,②A无定义 20H FLD2 DW A400H,60H
;A400H无定义 20H FLD3 DB THIS IS COMPUTER ;字符串定义不对 20H FLD3 DW 0,4000H,'ABCD' ; 'ABCD'定义超长
02H D_SEG ENDS
02H C_SEG SEGMENT PARA 'CODE' 20H ASSUME CS:C_SEG DS:D_SEG ;缺少逗号
20H MAIN PROC FAR 20H ...
02H LEA SI,FLD1 02H S1: MOV DI,OFFSET FLD2 20H MOV AX,[SI] 20H MOV [DI],4200H
;类型不确定 20H ... MAIN ENDP C_SEG ENDS END MAIN
mov ah,[si] mov al,ah l: inc si cmp ah,[si] jae i mov ah,[si] jmp e i: cmp al,[si] jbe e mov al,[si] e: loop l
RET
MAIN ENDP C ENDS END MAIN
《汇编语言程序设计》习题答案 共16页 第4页
5.2 设数组的数据为字节型的有符号数,和为字型的。
①按COM文件格式编写的程序如下:
②按EXE文件格式编写的程序如下: D SEGMENT PARA STACK a db 1,9,0,-1,99,2 m dw ? D ENDS
;具体数据由编程者自行设定
C SEGMENT
ASSUME CS:C,DS:D s PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,D MOV DS,AX xor dx,dx mov cx,m-a lea si,a l: mov al,[si] cbw add dx,ax inc si loop l mov m,dx RET S ENDP C ENDS END S
;具体数据由编程者自行设定
C SEGMENT
ASSUME CS:C,DS:C ORG 100H B: JMP S
a db 1,9,0,-1,99,2 m dw ? S: PUSH DS XOR AX,AX PUSH AX MOV AX,CS MOV DS,AX xor dx,dx mov cx,m-a lea si,a l: mov al,[si] cbw add dx,ax inc si loop l mov m,dx RET C ENDS END B
5.3 为计算 1+2*3+3*4+4*5+5*6+6*7+7*8+8*9+9*10+10*11+11*12+12*13+13*14+14*15的值。
5.4 设数组中的元素为字节型的有符号数,结果为字型。 D SEGMENT
a db -3, 5,-6,8 b db 7,-1, 9,2 D ENDS C SEGMENT
ASSUME CS:C,DS:D s PROC FAR MOV AX,D MOV DS,AX lea si,a mov di,offset b sub dx,dx
5.5 ①程序的结构不一样(略);
②最终生成的文件不一样(略)。
;具体数据由编程者自行设定 ;具体数据由编程者自行设定
mov cx,b-a l: mov al,[si] imul byte ptr [di] add dx,ax inc si inc di loop l mov n,dx MOV AX,4C00H INT 21H S ENDP C ENDS END S
n dw ? ;根据上面a和b的值运算结果为:0ffc0h=-40h=-64
共分享92篇相关文档