的有符号数,那么这个数的范围又是什么?
答:如果用24b储存一个无符号数,这个数的范围应为:0~224-1 如果用24b储存一个补码表示的有符号数,这个数的范围应为:-223~+223-1 2. 用符号“〉”把下面的数按从大到小的顺序“连接”起来
[X1]补=10110111 [X2]原=10110111 [X3]反=10110111 [X4]补=10110110 [X5]无符号数
=10110111
解:X1=-0100 1001B, X2=-011 0111B, X3=-0100 1000B, X4=-0100 1010B, X5=+1011 0111B
因此:X5>X2>X3>X1>X4
3. 用8位补码完成下列运算,用二进制“真值”的格式给出运算结果,并指出运算后
CF、OF、ZF、SF、PF标志位的状态。 (1)127+126 (2)126-127 (3)-100-120 (4)-100-(-120) 解: (1)127+126 [127]补=0111 1111,[126]补=0111 1110,
[127+126]补=1111 1101,[127+126]=-0000 0011(溢出) COZSP=01010 (2)126-127 [126]补=0111 1110,[-127]补=1000 0001,
[126-127]补=1111 1111,[126-127]=-000 0001 COZSP=10011 (3)-100-120 [-100]补=1001 1100,[-120]补=1000 1000,
[-100-120]补=0010 0100,[-100-120]=+0010 0100(溢出) COZSP=01001 (4)-100-(-120) [-100]补=1001 1100,[-120]补=1000 1000,[ [-120]补]求补=0111 1000,
[-100-(-120)]补=0001 0100,[-100-(-120)]=+0001 0100 COZSP=00001 4. 把二进制代码1001011101011000分别“看作”是: (1)二进制无符号数 (2)二进制补码 (3)压缩BCD码 (4)非压缩BCD码 哪一种情况下它代表的“值”最大?
答:看作二进制无符号数时,它代表的“值”最大。
分析:看作二进制补码时,它代表一个负数,而其它的情况下,它均为正数。因此,看作二进制补码时,它代表的值最小。
把这组代码用十六进制数字形式写出:9758
对于无符号数,它的值等于十六进制的9758H; 对于压缩BCD码,它的值等于十进制的9758,显然小于9758H; 对于非压缩BCD码,它的值等于十进制的78,显然更小于9758H; 因此,看作二进制无符号数时,它代表的“值”最大。 5. 某数据段内有如下数据定义: X db 30, 30H, ‘ABC’, 2-3, ?, 11001010B
dw 0FFH,-2, “CD”
Y dd 20 dup(15, 3 dup(?), 0) Z db 3 dup(?)
W dw Z-X
假设变量X的偏移地址为20H。
(1) 写出变量X各数据在内存中的具体位置和相关内存单元的值。 (2) 写出变量Y,Z的偏移地址。
0020H(3) 写出变量W的值 X1EH30H答:(1)变量X各数据在内存中的具体位置和相关内存单元
41H的值如右图。
42H变量Y的偏移地址为002EH; 43H0FFH变量Z的偏移地址为002EH+4×5×20=01BEH
00H变量W的值等于变量Z和X偏移地址之差 0CAH01BEH-0020H=019EH
0FFH它等于变量X、Y所占用内存单元的字节数。
00H6. 0FEH0FFH7.
44H8. 现有(DS)=2000H ,(BX)=0100H,(SI)=0002H,(20100H)
43H=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,
002EHY
(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,说明下列指令执行后AX寄存器的内容。 (1)MOV AX, 1200H (2)MOV AX, BX
(3)MOV AX, [1200H] (4)MOV AX, [BX]
(5)MOV AX, 1100H[BX] (6)MOV AX, [BX][SI]
(7)MOV AX, 1100H[BX][SI] 答 :(1)指令MOV AX, 1200H执行后,(AX)=1200H (立即数操作数)。 (2)指令MOV AX, BX执行后,(AX)=0100H (寄存器操作数)。 (3)指令MOV AX, [1200H] 执行后,(AX)=4C2AH(直接地址,EA=1200H) (4)指令MOV AX, [BX] 执行后,(AX)=3412H(寄存器间接寻址,EA=0100H) (5)指令MOV AX, 1100H[BX] 执行后,(AX)= 4C2AH(相对地址,EA=1200H) (6)指令MOV AX, [BX][SI] 执行后,(AX)=7856H(基址变址寻址,EA=0102H)
(7)指令MOV AX, 1100H[BX][SI] 执行后,(AX)=65B7H (相对基址变址寻址,EA=1202H)
9. 下面两条指令的功能有什么区别? MOV AX, BX MOV AX, [BX]
答:指令“MOV AX, BX”把BX寄存器的内容装入到AX中。 指令“MOV AX, [BX]”把内存储器一个字的内容装入AX寄存器。该字的段基址在DS中,偏移地址在BX中。 10. 11. 12.
13. 编写循环结构程序,进行下列计算,结果存入RESULT内存单元
(1) 1+2+3+4+5+6+ ?? +100
(2) 1+3+5+7+9+11+ ?? +99 (3) 2+4+6+8+10+ ?? +100 (4) 1+4+7+10+13+ ?? +100 (5) 11+22+33+44+ ?? +99 解: (1) CODE SEGMENT ASSUME CS: CODE RESULT DW ? START: XOR AX, AX MOV CX, 100 AGAIN: ADD AX, CX LOOP AGAIN MOV RESULT, AX MOV AX, 4C00H INT 21H CODE ENDS END START (2)CODE SEGMENT ASSUME CS: CODE RESULT DW ? START: XOR AX, AX MOV CX, 50 MOV BX, 1 AGAIN: ADD AX, BX ADD BX, 2 LOOP AGAIN MOV RESULT, AX MOV AX, 4C00H INT 21H CODE ENDS END START (3) CODE SEGMENT ASSUME CS: CODE RESULT DW ? START: XOR AX, AX MOV CX, 50 MOV BX, 2 AGAIN: ADD AX, BX ADD BX, 2 LOOP AGAIN MOV RESULT, AX
MOV AX, 4C00H INT 21H CODE ENDS END START (4) CODE SEGMENT ASSUME CS: CODE RESULT DW ? START: XOR AX, AX MOV CX, 34 MOV BX, 1 AGAIN: ADD AX, BX ADD BX, 3 LOOP AGAIN MOV RESULT, AX MOV AX, 4C00H INT 21H CODE ENDS END START (5) CODE SEGMENT ASSUME CS: CODE RESULT DW ? START: XOR AX, AX MOV CX, 9 MOV BX, 11 AGAIN: ADD AX, BX ADD BX, 11 LOOP AGAIN MOV RESULT, AX MOV AX, 4C00H INT 21H CODE ENDS END START 14. 15. 16.
17. 编写程序,从键盘上输入20个十进制数字,求这些数字的和,向显示器输出。 INCLUDE YLIB.H DATA SEGEMNT MESS1 DB 0DH, 0AH, ?Input 20 decimal digits please : $? MESS2 DB 0DH, 0AH, ?Their sum is : $? DATA ENDS CODE SEGMENT
ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA DX, MESS1 MOV AH, 09H INT 21H ;输出提示信息 XOR BX, BX ;BX用作累加器,清零 MOV CX, 20 ;循环计数器置初值 AGAIN: MOV AH, 01H INT 21H ;输入一个数字(在AL中) AND AL, 0FH ;转换成二进制数 ADD BL, AL ;累加 ADC BH, 0 LOOP AGAIN LEA DX, MESS2 MOV AX, BX CALL WRITEDEC ;输出20个数字的和 CALL CRLF MOV AX, 4C00H INT 21H CODE ENDS END START 18. 阅读以下程序,指出它的功能。 MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL
答:把32位二进制代码(DX, AX)联合左移4位。 19. 已知(DX)=0B9H,(CL)=3,(CF)=1,确定下列指令单独执行以后DX寄存器的
值。
(1)SHR DX, 1 (2)SAR DX, CL (3)ROR DX, CL (4)ROL DX, CL (5)SAL DH, 1 (6)RCL DX, CL 答:
(1)指令“SHR DX, 1”执行之后,(DX)= 005CH (2)指令“SAR DX, CL”执行之后,(DX)= 0017H (3)指令“ROR DX, CL”执行之后,(DX)= 2017H