当前位置:首页 > 汇编语言程序设计习题及答案
汇编语言程序设计 习题及参考答案
习题一
1.1 把下列2、8、16进制数转换成为十进制数
(1)(1011011)2 (2)(0.10110)2 (5)(377)8
(6)(0.24)8
(3)(111111.01)2 (4)(1000001.11)2 (7)(3FF)16
(8)(2A.4)16
解: (1)(1011011)2=64+16+8+2+1=91
另解:原式=(5B)16=5×16+11=91
(2)(0.10110)2=0.5+0.125+0.0625=0.6875
(3)(111111.01)2=32+16+8+4+2+1+0.25=63.25 另解:原式=(1000000-1+0.01)2=64-1+0.25=63.25
(4)(1000001.11)2=64+1+0.5+0.25=65.75
(5)(377)8=3×64+7×8+7=255
另解:原式=(400-1)8=4×64-1=255
(6)(0.24)8=2×0.125+4×0.015625=0.3125 (7)(3FF)16=3×256+15×16+15=1023 另解:原式=(400-1)16=4×256-1=1023 (8)(2A.4)16=2×16+10+4×0.0625=42.25 另解:原式=2×16+10+4÷16=42.25
1.2 把下列十进制数转换为2、16进制数
(1)(127)10 (5)(1023.5)10
(2)(33)10 (6)(377)10
(3)(0.3)10 (7)(1/1024)10
(4)(0.625)10 (8)(377/32)10
解: (1)(127)10 =64+32+16+8+4+2+1= (111 1111)2=(7F)16 另解:原式=(128-1)10=(1000 0000-1)2=(111 1111)2=(7F)16
(2)(33)10 =32+1= (10 0001)2=(21)16
(3)(0.3)10 = (0.0100 1100 1……)2=(0.4CCC……)16
(4)(0.625)10= 0.5+0.125=(0.101)2=(0.A)16
(5)(1023.5)10 = 512+256+128+64+32+16+8+4+2+1+0.5 (6)(377)10
=(11 1111 1111.1)2=(3FF.8)16
=256+64+32+16+8+1=(1 0111 1001)2=(179)16
(7)(1/1024)10=(0.0000 0000 01)2=(0.004)16
(8)(377/32)10=(256+64+32+16+8+1)÷(32)= (101111001)2÷(100000)2
=(1011.11001)2=(0B.C1)16
1.3 把下列二进制数转换为十六进制数 (1)(100011)2 (2)(0.11101)2 (3)(11111.11)2 (4)(0.00101)2 解:
(1)(100011)2=(10?0011)2=23H
(2)(0.11101)2=(0.1110?1000)2=0.E8H (3)(11111.11)2=(1?1111.1100)2=1F.CH (4)(0.00101)2=(0.0010?1000)2=0.28H
1.4 把下列十六进制数转换为二进制数 (1)(3B6)16 (2)(100)16 (3)(80.2)16 解:
(1)(3B6)16 =(0011 1011 0110)2 (2)(100)16 =(0001 0000 0000)2 (3)(80.2)16 =(1000 0000.0010)2 (4)(2FF.A)16 =(0010 1111 1111.1010)2
(4)(2FF.A)16
1.5 如果用24b储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?
答:如果用24b储存一个无符号数,这个数的范围应为:0~224-1
如果用24b储存一个补码表示的有符号数,这个数的范围应为:-223~+223-1
1.6 两个无符号数,它们的大小等于十进制数210和303,用N位二进制存储时,相加产生了进位,用N+1位二进制存储时,相加没有产生进位。这个N等于多少?为什么? 答:210+303=513, 2<513<2,取N=9时,相加会产生进位,取N=10,相加就不会产生进位,因此,本题中N=9。
1.7 两个8位二进制无符号数相加后没有产生进位,符号标志SF=1,它们和应在什么范围内?如果SF=0,那么和又在什么范围内?
答:如果SF=1,它们的和应在2~2-1,也就是128~255之内。 如果SF=0,它们的和应在0~27-1,也就是0~127之内。
1.8 两个8位补码表示的有符号数相加时,什么情况下会使进位标志等于“1”?相减时,又是什么情况下会使借位标志等于“1”?
答:两个8位补码表示的有符号数相加时,下列情况会使进位标志等于“1”:
两个负数相加;
两个异号数相加,和为正(不会产生溢出)。
两个8位补码表示的有符号数相减时,下列情况会使借位标志等于“1”:
两个同号数相减,差为负(不会产生溢出);
正数减负数(有可能产生溢出);
1.9 用符号“〉”把下面的数按从大到小的顺序“连接”起来
[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
1.10 用8位补码完成下列运算,用二进制“真值”的格式给出运算结果,并指出运算后CF、OF、ZF、SF、PF标志位的状态。 (1)127+126 解: (1)127+126
(2)126-127
(3)-100-120
(4)-100-(-120)
7
8
9
10
[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
1.11 把二进制代码1001011101011000分别“看作”是:
(1)二进制无符号数 (2)二进制补码 (3)压缩BCD码
(4)非压缩BCD码
哪一种情况下它代表的“值”最大?
答:看作二进制无符号数时,它代表的“值”最大。
分析:看作二进制补码时,它代表一个负数,而其它的情况下,它均为正数。因此,看作二
进制补码时,它代表的值最小。
把这组代码用十六进制数字形式写出:9758
对于无符号数,它的值等于十六进制的9758H;
对于压缩BCD码,它的值等于十进制的9758,显然小于9758H; 对于非压缩BCD码,它的值等于十进制的78,显然更小于9758H;
因此,看作二进制无符号数时,它代表的“值”最大。
1.12 CPU使用“寄存器”有什么好处?为什么? 答:CPU使用寄存器主要有两个好处:
(1) 寄存器位于CPU内部,访问寄存器比访问内存储器速度快;
(2) 寄存器数量大大少于内存储器单元个数,标识寄存器使用的二进制代码比标识
内存储器单元使用的二进制代码少得多,可以缩短指令长度。
1.13 已知8086系统某存储单元物理地址为12345H,写出4个可以与它对应的“逻辑地址”。 答:可以与物理地址12345H对应的逻辑地址有:
1234H:0005H, 1230H:0045H, 1220H:0145H, 1224H:0105H, ……
1.14 已知8086系统某存储单元物理地址为12345H,可以与它对应的“逻辑地址”中,段基址最大值,最小值分别是多少? 答:可以与物理地址12345H对应的逻辑地址中,段基址的最大值为1234H,最小值为0235H。 分析:偏移地址取最大值时,对应的段基址为最小。偏移地址可选的最大值为0FFF5H(最
后一位必须为5),因此最小的段基址=(12345H-0FFF5H)/10H=0235H。
偏移地址取最小值时,对应的段基址最大。偏移地址可选的最小值为0005H(最后一位必须为5),因此最大的段基址=(12345H-0005H)/10H=1234H。
1.15 8086微机最多可以有多少个不同的“段基址”?为什么?
答:由于段基址由16位二进制数表示,因此可以有216=65536个不同的段基址。
1.16 在图1-6中,假设已有(R1)=X,(R2)=Y,分别用它的机器指令和符号指令写出计算R0←4X+2Y的程序。想一想,怎样做才能尽量减少指令数量? 答:假设已有(R1)=X,(R2)=Y,可以编制如下计算R0←4X+2Y的程序:
符号指令
机器指令
注释 R0←X
R0←X+X
MOV R0, R1 ADD R0, R1
1 000 00 01(81H)
1 001 00 01(91H)
共分享92篇相关文档