云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 汇编语言程序设计习题及答案

汇编语言程序设计习题及答案

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 12:45:23

汇编语言程序设计 习题及参考答案

习题一

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)

搜索更多关于: 汇编语言程序设计习题及答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

汇编语言程序设计 习题及参考答案 习题一 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)(111

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com