汇编语言程序设计习题及答案.pdf
《汇编语言程序设计习题及答案.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计习题及答案.pdf(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!汇编语言程序设计 习题及参考答案 习题一 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1.1 把下列 2、8、16 进制数转换成为十进制数(1)(1011011)2(2)(0.10110)2(3)(111111.01)2(4)(1000001.11)2(5)(377)8 (6)(0.24)8 (7)(3FF)16 (8)(2A.4)16 解:(1)(1011011)2=64+16+8+2+1=91 另解:原式=(5B)16=516+11=91(2)(0
2、.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=364+78+7=255 另解:原式=(400-1)8=464-1=255(6)(0.24)8=20.125+40.015625=0.3125(7)(3FF)16=3256+1516+15=1023 另解:原式=(400-1)16=4256-1=1023(8)(2A.4)16=216
3、+10+40.0625=42.25 另解:原式=216+10+416=42.25 1.2 把下列十进制数转换为 2、16 进制数 (1)(127)10 (2)(33)10 (3)(0.3)10 (4)(0.625)10 (5)(1023.5)10(6)(377)10 (7)(1/1024)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
4、)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=(11 1111 1111.1)2=(3FF.8)16 (6)(377)10=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=(101
5、1.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 (4)(2FF.A)16 解:(1)(3
6、B6)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 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1.5 如果用 24b 储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?答:如果用 24b 储存一个无符号数,这个数的范围应为:0224-1 如果用 24b 储存一个补码表示的有符号数,这个数的范围应为:-223+22
7、3-1 1.6 两个无符号数,它们的大小等于十进制数 210 和 303,用 N 位二进制存储时,相加产生了进位,用 N+1 位二进制存储时,相加没有产生进位。这个N 等于多少?为什么?答:210+303=513,29513X2X3X1X4 1.10 用 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
8、+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,-1
9、20补=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 对于无符号数,它的值等于十六进制
10、的 9758H;对于压缩 BCD 码,它的值等于十进制的 9758,显然小于 9758H;对于非压缩 BCD 码,它的值等于十进制的 78,显然更小于 9758H;因此,看作二进制无符号数时,它代表的“值”最大。1.12 CPU 使用“寄存器”有什么好处?为什么?答:CPU 使用寄存器主要有两个好处:(1)寄存器位于 CPU 内部,访问寄存器比访问内存储器速度快;(2)寄存器数量大大少于内存储器单元个数,标识寄存器使用的二进制代码比标识内存储器单元使用的二进制代码少得多,可以缩短指令长度。1.13 已知 8086 系统某存储单元物理地址为 12345H,写出 4 个可以与它对应的“逻辑地址”。
11、答:可以与物理地址 12345H对应的逻辑地址有:1234H:0005H,1230H:0045H,1220H:0145H,1224H:0105H,1.14 已知 8086 系统某存储单元物理地址为 12345H,可以与它对应的“逻辑地址”中,段基址最大值,最小值分别是多少?答:可以与物理地址 12345H对应的逻辑地址中,段基址的最大值为 1234H,最小值为 0235H。分析:偏移地址取最大值时,对应的段基址为最小。偏移地址可选的最大值为 0FFF5H(最后一位必须为 5),因此最小的段基址=(12345H-0FFF5H)/10H=0235H。偏移地址取最小值时,对应的段基址最大。偏移地址可
12、选的最小值为 0005H(最后一位必须为 5),因此最大的段基址=(12345H-0005H)/10H=1234H。1.15 8086 微机最多可以有多少个不同的“段基址”?为什么?答:由于段基址由 16 位二进制数表示,因此可以有 216=65536 个不同的段基址。1.16 在图 1-6 中,假设已有(R1)=X,(R2)=Y,分别用它的机器指令和符号指令写出计算 R04X2Y 的程序。想一想,怎样做才能尽量减少指令数量?答:假设已有(R1)=X,(R2)=Y,可以编制如下计算 R04X2Y 的程序:符号指令 机器指令 注释 MOV R0,R1 1 000 00 01(81H)R0X AD
13、D R0,R1 1 001 00 01(91H)R0XX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!ADD R0,R2 1 001 00 10(92H)R02XY ADD R0,R0 1 001 00 00(90H)R04X2Y 减少指令的方法是先计算出 2X+Y,然后再计算 4X+2Y。可以有多种不同的写法。1.17 什么是“逻辑地址”?什么是“线性地址”?什么是“物理地址”?它们如何转换?答:由段的起始地址(段基址)或者段的编号和段内相对地址两部分表示的地址称为“逻辑地址”。经过“分段机构”处理后,用一组二进制代码表示的地址称为“线性地址
14、”。经过“分页机构”处理后,用一组二进制代码表示的存储单元的“真实”的地址称为“物理地址”。物理地址的位数等于地址总线的宽度。工作在实地址模式下的 80X86MPU 不使用线性地址,物理地址=段基址16+段内偏移地址。80X86MPU 工作在保护模式下时,分段机构用段的编号在“段描述符表”中找到段的起始地址,加上偏移地址得到“线性地址”。分页机构把线性地址从高位到低位分解为“页组地址:页地址:页内地址”三部分,由页组地址(页组号)查找“页组表”,获得该页组对应的“页表”首地址。然后用页地址(页号)去查“页表”,得到该页的起始地址,拼接上页内地址,得到“物理地址”。保护模式下也可以关闭分页机构,
15、此时线性地址等于物理地址。1.18 32 位 80X86 和 16 位 80X86 中央处理器的段寄存器有什么不同?答:16 位 80X86CPU 的段寄存器长度为 16 位,存放的是一个段起始地址的高 16 位。32 位 80X86CPU 的段寄存器长度仍然为 16 位,存放的是一个段在“段描述符表”中的序号,表的编号(对每一个程序,有两张段描述符表)和这个段的优先级别。1.19 叙述“保护模式”和“虚拟 8086 方式”之间的关系。答:保护模式是 32 位 80X86MPU 的工作方式,对当前运行的所有任务实施保护。虚拟 8086 方式是保护模式下某一个任务的工作模式,该任务使用类似于实地
16、址方式下的物理地址产生方式,使用 1MB的虚拟内存空间,主要用于运行 8086 程序。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1EH30H41H42H43H0FFH00H0CAH0FFH00H0FEH0FFH44H43H0020H002EHXY 习题二 2.1 某数据段内有如下数据定义: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)按照图 2-1 的格式写出
17、变量 X 各数据在内存中的具体位置和相关内存单元的值。(2)写出变量 Y,Z 的偏移地址。(3)写出变量 W 的值 答:(1)变量 X 各数据在内存中的具体位置和相关内存单元的值如右图。(2)变量 Y 的偏移地址为 002EH;变量 Z 的偏移地址为 002EH+4520=01BEH(3)变量 W 的值等于变量 Z和 X 偏移地址之差 01BEH-0020H=019EH 它等于变量 X、Y 所占用内存单元的字节数。2.2 80 x86 指令系统有哪几种类型的指令操作数?比较使用不同类型操作数后的指令长度和指令执行时间。答:80X86 指令系统按照长度划分,有以下四种指令操作数:(1)寄存器操作
18、数,指令短,执行速度快;(2)立即操作数,指令较长,执行速度快;(3)寄存器间接寻址和基址变址寻址表示的内存储器操作数,这类指令长度较短,执行速度较慢(需要访问存储器);(4)直接地址,寄存器相对寻址,相对的基址变址寻址表示的内存储器操作数,这类指令长度较长,执行速度较慢(需要计算物理地址,访问存储器)。2.3 下列指令的源操作数段基址在哪个段寄存器中?(1)MOV AX,BPSI (2)MOV AX,CS:8DI (3)MOV AX,2EBP*1 (4)MOV AX,FS:4ESP (5)MOV AX,2EBPEAX(6)MOV AX,ECXEBP*4 (7)MOC AX,EDXEBP(8)
19、MOV AX,ES:10EBPEAX*2 答:各指令源操作数段基址使用的段寄存器如下:(1)SS(2)CS(3)SS(4)FS (5)SS(6)DS(7)DS(8)ES 2.4 判断下列指令是否正确。若不正确,指出错误原因 (1)MOV AX,EBX (2)MOV SI,DL (3)MOV EBP,ESPEAX*3(4)LEA AX,3006H (5)MOV BPDI,0 (6)MOV SI,DI (7)MOV ES,1000H (8)MOV AX,X+2 (9)MOV AX,CX+2 (10)MOV EAXEAX*2,AL 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们
20、将竭诚为您提供优质的文档!答:(1)指令 MOV AX,EBX 是正确的。(2)指令 MOV SI,DL 是错误的,两个操作数类型不匹配。(3)指令 MOV EBP,ESPEAX*3 是错误的,比例因子不能为 3。(4)指令 LEA AX,3006H 是错误的,LEA 指令的源操作数必须为内存操作数。(5)指令 MOV BPDI,0 是错误的,操作数类型无法确定。(6)指令 MOV SI,DI 是错误的,不能同时出现两个内存操作数。(7)指令 MOV ES,1000H 是错误的,装载段寄存器时,源操作数不能为立即数。(8)如果“X”是用常数表达式定义的符号(例如:X EQU 5+6),或者是用
21、“DW”定义的内存变量,指令 MOV AX,X+2 是正确的。否则这条指令是错误的。(9)指令 MOV AX,CX+2 是错误的,源操作数表达式 CX+2 不是一个可以直接计算的“常数表达式”。(10)指令 MOV EAXEAX*2,AL 是正确的。2.5 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,说明下列指令执行后 AX 寄存器的内容。(1)MOV AX,1
22、200H (2)MOV AX,BX (3)MOV AX,1200H (4)MOV AX,BX (5)MOV AX,1100HBX (6)MOV AX,BXSI (7)MOV AX,1100HBXSI 答:(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,1100HBX
23、执行后,(AX)=4C2AH(相对地址,EA=1200H)(6)指令 MOV AX,BXSI 执行后,(AX)=7856H(基址变址寻址,EA=0102H)(7)指令 MOV AX,1100HBXSI 执行后,(AX)=65B7H(相对基址变址寻址,EA=1202H)2.6 已经定义字符串 MYSTRING 如下:MYSTRING DB A Sample for addressing.用适当的指令把这个字符串的第 5,12 个字符(注:第 0 个字符是A)送入 BX 寄存器。答:可以用如下两条指令完成:MOV BL,MYSTRING5 MOV BH,MYSTRING12 2.7 下面两条指令的
24、功能有什么区别?MOV AX,BX MOV AX,BX 答:指令“MOV AX,BX”把 BX 寄存器的内容装入到 AX 中。指令“MOV AX,BX”把内存储器一个字的内容装入 AX 寄存器。该字的段基址在DS 中,偏移地址在 BX 中。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2.8 已经定义数据段如下:DA TA SEGMENT NUM=56 X DB NUM Y DB 27 Z DW 148 DA TA ENDS 指出下列指令中的错误:(1)MOV Y,X (2)MOV BL,04B8H (3)MOV AL,Z (4)MOV BX,3
25、(5)MOV BX,DI (6)MOV DS,DA TA(7)MOV NUM,AX (8)MOV ES,DS(9)MOV AX,FLAGS (10)MOV CS,AX 答:(1)指令 MOV Y,X 同时出现了两个存储器操作数。(2)指令 MOV BL,04B8H 操作数类型不匹配(04B8H 是 16 位立即数,BL 是 8 位 寄存器)。(3)指令 MOV AL,Z 操作数类型不匹配(Z 是 16 位操作数,BL 是 8 位寄存器)。(4)指令 MOV BX,3 操作数类型不能确定。(5)指令 MOV BX,DI 出现了两个存储器操作数。(6)指令 MOV DS,DA TA 不能把立即数装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 习题 答案
限制150内