汇编语言基础

上传人:豆浆 文档编号:37525729 上传时间:2018-04-17 格式:DOC 页数:13 大小:124KB
返回 下载 相关 举报
 汇编语言基础_第1页
第1页 / 共13页
 汇编语言基础_第2页
第2页 / 共13页
 汇编语言基础_第3页
第3页 / 共13页
 汇编语言基础_第4页
第4页 / 共13页
 汇编语言基础_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《 汇编语言基础》由会员分享,可在线阅读,更多相关《 汇编语言基础(13页珍藏版)》请在金锄头文库上搜索。

1、习题习题 31.如果用 24b 储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的 有符号数,那么这个数的范围又是什么? 答:如果用 24b 储存一个无符号数,这个数的范围应为:0224-1 如果用 24b 储存一个补码表示的有符号数,这个数的范围应为:-223+223-12.用符号“ ”把下面的数按从大到小的顺序“连接”起来 X1补=10110111 X2原=10110111 X3反=10110111 X4补=10110110 X5无符号数=10110111 解:X1=-0100 1001B, X2=-011 0111B, X3=-0100 1000B, X4=-0100 10

2、10B, X5=+1011 0111B因此:X5X2X3X1X43.用 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

3、,126-127=-000 0001COZSP=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 0100COZSP=000014.把二进制代码 1001011101011000 分别“看作”是: (1)二进制无符号数 (2)

4、二进制补码 (3)压缩 BCD 码 (4)非压缩 BCD 码 哪一种情况下它代表的“值”最大? 答:看作二进制无符号数时,它代表的“值”最大。 分析:看作二进制补码时,它代表一个负数,而其它的情况下,它均为正数。因此,看作二进 制补码时,它代表的值最小。 把这组代码用十六进制数字形式写出:97581EH 30H 41H 42H 43H 0FFH 00H 0CAH0FFH 00H 0FEH 0FFH 44H 43H0020H002EHXY对于无符号数,它的值等于十六进制的 9758H; 对于压缩 BCD 码,它的值等于十进制的 9758,显然小于 9758H; 对于非压缩 BCD 码,它的值等于

5、十进制的 78,显然更小于 9758H; 因此,看作二进制无符号数时,它代表的“值”最大。5.某数据段内有如下数据定义:Xdb30, 30H, ABC, 2-3, ?, 11001010B dw0FFH,-2, “CD” Ydd20 dup(15, 3 dup(?), 0) Zdb3 dup(?)WdwZ-X 假设变量 X 的偏移地址为 20H。 (1)写出变量 X 各数据在内存中的具体位置和相关内存单元的值。 (2)写出变量 Y,Z 的偏移地址。 (3)写出变量 W 的值 答:(1)变量 X 各数据在内存中的具体位置和相关内存单元的值如 右图。 (2(变量 Y 的偏移地址为 002EH; 变

6、量 Z 的偏移地址为 002EH+4520=01BEH (3(变量 W 的值等于变量 Z 和 X 偏移地址之差01BEH-0020H=019EH 它等于变量 X、Y 所占用内存单元的字节数。6.下列指令的源操作数段基址在哪个段寄存器中? (1)MOVAX, BPSI(2)MOVAX, CS:8DI (3)MOVAX, 2EBP*1(4)MOVAX, FS:4ESP (5)MOVAX, 2EBPEAX (6)MOVAX, ECXEBP*4 (7)MOCAX, EDXEBP(8)MOVAX, ES:10EBPEAX*2 答:各指令源操作数段基址使用的段寄存器如下: (1) SS(2) CS (3)

7、 SS(4) FS (5) SS(6) DS (7) DS (8) ES7.判断下列指令是否正确。若不正确,指出错误原因 (1)MOVAX, EBX (2)MOVSI, DL (3)MOVEBP, ESPEAX*3(4)LEAAX, 3006H (5)MOVBPDI, 0 (6)MOVSI, DI (7)MOVES, 1000H (8)MOVAX, X+2 (9)MOVAX, CX+2 (10)MOVEAXEAX*2, AL 答: (1)指令 MOVAX, EBX是正确的。 (2)指令 MOVSI, DL 是错误的,两个操作数类型不匹配。 (3)指令 MOVEBP, ESPEAX*3 是错误的

8、,比例因子不能为 3。 (4)指令 LEA AX, 3006H 是错误的,LEA 指令的源操作数必须为内存操作数。 (5)指令 MOVBPDI, 0 是错误的,操作数类型无法确定。(6)指令 MOVSI, DI 是错误的,不能同时出现两个内存操作数。 (7)指令 MOVES, 1000H 是错误的,装载段寄存器时,源操作数不能为立即数。 (8)如果“X”是用常数表达式定义的符号(例如:X EQU 5+6),或者是用“DW”定义 的内存变量,指令 MOVAX, X+2 是正确的。否则这条指令是错误的。 (9)指令 MOVAX, CX+2 是错误的,源操作数表达式 CX+2 不是一个可以直接计算的

9、“常数表达式”。 (10)指令 MOVEAXEAX*2, AL 是正确的。8.现有(DS)=2000H ,(BX)=0100H, (SI)=0002H, (20100H)=12H, (20101H) =34H, (20102H)=56H, (20103H)=78H, (21200H)=2AH, (21201H)=4CH, (21202H) =0B7H, (21203H)=65H,说明下列指令执行后 AX 寄存器的内容。 (1)MOVAX, 1200H (2)MOVAX, BX (3)MOVAX, 1200H (4)MOVAX, BX (5)MOVAX, 1100HBX (6)MOVAX, BX

10、SI (7)MOVAX, 1100HBXSI 答 :(1)指令 MOVAX, 1200H 执行后,(AX)=1200H (立即数操作数)。 (2)指令 MOVAX, BX 执行后,(AX)=0100H (寄存器操作数)。 (3)指令 MOVAX, 1200H 执行后,(AX)=4C2AH(直接地址,EA=1200H) (4)指令 MOVAX, BX 执行后,(AX)=3412H(寄存器间接寻址,EA=0100H) (5)指令 MOVAX, 1100HBX 执行后,(AX)= 4C2AH(相对地址,EA=1200H) (6)指令 MOVAX, BXSI 执行后,(AX)=7856H(基址变址寻址

11、,EA=0102H) (7)指令 MOVAX, 1100HBXSI 执行后,(AX)=65B7H (相对基址变址寻址,EA=1202H)9.下面两条指令的功能有什么区别?MOV AX, BX MOV AX, BX 答:指令“MOV AX, BX”把 BX 寄存器的内容装入到 AX 中。 指令“MOVAX, BX”把内存储器一个字的内容装入 AX 寄存器。该字的段基址在DS 中,偏移地址在 BX 中。10. 写出执行以下计算的指令序列,其中各变量均为 16 位有符号数。(1)ZW+(Z-X) (2)ZW-(X+6)-(R+9) (3)Z(W*X)/(Y+6), R余数(4)Z(W-X)/(5*Y

12、)*2 解: (1)MOVAX, W MOVBX, Z SUBBX, X ADDAX, BXMOVZ, AX (2)MOVAX, W MOVBX, X ADDBX, 6 SUBAX, BX MOVBX, R ADDBX, 9 SUB AX, BX MOVZ, AX (3)MOVAX, W IMULX MOVBX, Y ADDBX, 9 IDIVBX MOVZ, AX MOVR, DX (4)MOVAX, Y MOVBX, 5 IMULBX MOVBX, AX MOVAX, W SUBAX, X MOVCX, 2 IMULCX IDIVBX MOVZ, AX11. 一个双字长有符号数存放在 DX

13、(高位)AX(低位)中,写出求该数相反数的指令序列。结果仍存入 DX,AX 寄存器 解:NOT DX;首先将(DX, AX)取反 NOTAX ADDAX, 1;最低位加 1,注意:不能用 INC 指令 ADCDX, 0;把进位(如果有)传递到高位12. 内存缓冲区 BUFFER 定义如下,按照要求,写出指令序列BUFFERDB20 DUP(?) (1)将缓冲区全部置为 0,并使执行时间最短 (2)将缓冲区全部置为空格字符(ASCII 代码 20H) ,使用的指令条数最少 (3)将缓冲区各字节依次设置为 0,1,2,3,4,19 (4)将缓冲区各字节依次设置为 0,-1,-2,-3,-4,-19

14、 (5)将缓冲区各字节依次设置为 30,29,28,27,11 (6)将缓冲区各字节依次设置为 0,2,4,6,8,38 (7)将缓冲区各字节依次设置为 0,1,2,3,0,1,2,3,3解: (1)XOREAX, EAX MOVDWORD PTR BUFFER, EAX MOVDWORD PTR BUFFER+4, EAX MOVDWORD PTR BUFFER+8, EAX MOVDWORD PTR BUFFER+12, EAX MOVDWORD PTR BUFFER+16, EAX (2)MOVAL, 20H MOVCX, 20 LEABX, BUFFER ONE:MOVBX, AL I

15、NCBX LOOPONE (3)XORBX, BX MOVCX, 20 ONE:MOVBUFFERBX, BL INCBX LOOPONE (4)XORBX, BX XORAL, AL MOVCX, 20 ONE:MOVBUFFERBX, AL INCBX DECAL LOOPONE (5)XORBX, BX MOVAL, 30 MOVCX, 20 ONE:MOVBUFFERBX, AL INCBX DECAL LOOPONE (6)XORBX, BX XORAL, AL MOVCX, 20 ONE:MOVBUFFERBX, AL INCBX ADDAL, 2 LOOPONE (7)XORBX, BX MOVCX, 5 ONE: MOVBUFFERBX, 0 MOVBUFFERBX+1, 1MOVBUFFERBX+2, 2 MOVBUFFERBX+3, 3 ADDBX, 4 LOOPONE13. 编写循环结构程序,进行下列计算,结果存入 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)CODESEGMENT ASSUMECS: CODE RESULT

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号