汇编 部分习题参考答案

上传人:第*** 文档编号:31146439 上传时间:2018-02-05 格式:DOC 页数:24 大小:362.50KB
返回 下载 相关 举报
汇编 部分习题参考答案_第1页
第1页 / 共24页
汇编 部分习题参考答案_第2页
第2页 / 共24页
汇编 部分习题参考答案_第3页
第3页 / 共24页
汇编 部分习题参考答案_第4页
第4页 / 共24页
汇编 部分习题参考答案_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《汇编 部分习题参考答案》由会员分享,可在线阅读,更多相关《汇编 部分习题参考答案(24页珍藏版)》请在金锄头文库上搜索。

1、 部分习题参考答案1.5 下列各数均为十进制数,请采用 8 位二进制补码运算,并回答标志寄存器 FLAGS 中 CF 和 OF 的值,运算结果所代表的十进制数是多少?如果用 16 位二进制补码运算,其结果所代表的十进制数是多少?FLAGS 中 CF 和 OF 的值呢?(1)85+69 (2)85+(-69) (3)85-(-69) (4)85-(69) 85=55H,69=45H,-69=BBH, 8 位二进制补码运算: (1)85+69 =55H+45H=9AH, CF=0,OF=1(2)85+(-69)=55H+BBH=110H,CF=1,OF=0其余略1.6 实模式下,写出段地址和偏移地

2、址为1234:2002、1430:0042、FF00:0FFF 的物理地址。1234:2002=12340+2002=143421430:0042=14300+0042=14342FF00:0FFF=FF000+0FFF=FFFFF1.7 已知 8086 系统某存储单元物理地址为:52506H,你认为段基址的最大值、最小值分别是多少? 8086 微机最多可以有多少个不同的段基址?52506=5250:0006, 段基址的最大值=525052506=4251:FFF6, 段基址的最小值=42511.8 从物理地址为 00100H 开始到 00103H 单元中顺序存放的数据为:12H,34H,56

3、H,78H。请画出数据存放示意图,并回答以下问题:(1) 写出 00101H 字节单元的内容(00101)= 34H(2) 写出 00102H 字单元的内容(00102)= 7856H习题 33.1 分别说明 8086 处理器中各寄存器的名称和作用是什么?3.2 溢出标志 OF 与进位标志 CF 有何作用和区别?3.3 何为段地址?何为有效地址? 何为物理地址?用指令举例说明。3.4 带符号数比较大小,当 AX BX 时程序转向标号 L1,若前导指令为 CMP AX, BX后续指令应为什么?若视为二个无符号数比较大小, 后续指令应为什么?带符号数:JL L1, 无符号数:JB L13.5 AD

4、D 指令和 ADC 指令在什么情况下是一样的结果?CF=03.6 说出 CALL 指令和 INT 21H 指令的操作,有何异同?CALL 把断点压入堆栈,不一定是远调,INT 21H 还要把 FLAGS 压入堆栈,且是远调,总入口地址为 84H 内存中的两个字。3.7 除了用 4CH 号系统功能调用结束程序的执行并退出,还有哪些办法?RET 指令,INT 20H 3.8 指出下列错误的指令,说出错误原因,并给出合适的修改。(1) MOV AX,DX / MOV AX,BX(2) MOV DS,DATA / MOV DS,BX(3) MOV CS,AX / MOV ES,AX(4) MOV AX

5、,DL / MOV AL,DL(5) PUSH AL / PUSH AX(6) ADD BX,DI / ADD BX,DI(7) LEA BX,2000H / LEA BX,2000H (8) MOV BX,OFFSET 2000H (9) MOV SI,2 / MOV BYTE PTR SI,2(10) MUL BX,CX / MUL BX(11) DIV 5 / DIV BX(12) MOV BYTESI,2 / MOV BYTE PTR SI,2(13) MOV AX,SI+DI / MOV AX,BX+SI(14) SHR AX,4 / SHR AX,1(15) CMP 6,AX /

6、CMP AX,6(16) MOV FFFF,AX / MOV FFFE,AX(17) MOV AX,BX+4 / MOV AX,BX+4(18) JMP FAR PRO / JMP FAR PTR PRO3.9 假定(DS)=1200H,(SS)=4400H, (BX)=463DH,(BP)=2006H, (SI)=6A00H,位移量 D=4524H,以 AX 寄存器为目的操作数,试写出以下各种寻址方式下的传送指令,并确定源操作数的有效地址 EA 和物理地址。 (1)立即寻址 ;操作数的 EA 就是指令的 EA/操作数在指令中/无 EA(2)直接寻址 ;EA=4524H,物理地址=DS:452

7、4(3)使用 BX 的寄存器寻址;无 EA(4)使用 BX 的间接寻址 ;EA=463DH,物理地址=DS:463D(5)使用 BP 的寄存器相对寻址 ;MOV AX,BP+4524,EA=2006+4524,物理地址=SS:EA(6)基址变址寻址 ;MOV AX,BX+SI,EA= BX+SI,物理地址=DS:EA(7)相对基址变址寻址;MOV AX,4524+BX+SI,EA=4524+BX+SI,物理地址=DS:EA3.10 用一条指令完成以下操作。(1)把 BX 寄存器和 DX 寄存器的内容相加,结果存人 DX 寄存器中。ADD DX,BX(2)用寄存器 BX 和 SI 的基址变址寻址

8、方式把存储器中的一个字节与 AL 寄存器的内容相加,并把结果送到 AL 寄存器中。ADD AL,BX+SI(3)用寄存器 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和 AX 寄存器的内容互换。XCHG AX,BX+0B2(4)用位移量为 0524H 的直接寻址方式把存储器中的一个字与数 2A59H 相加,并把结果送回该存储单元中。ADD WORD PTR 524, 2A59H3.11 在数据段定义了 ARRAY 数组,其中依次存储了五个字数据,请用以下寻址方式的指令把第 4 个字送 AX 寄存器。(1)直接寻址 MOV AX,ARRAY+6 或 MOV AX,ARRAY+

9、6(2)使用 BX 的间接寻址 LEA BX,ARRAY+6 ;MOV AX,BX(3)使用 BX 的寄存器相对寻址 LEA BX,ARRAY ;MOV AX,BX+6(4)基址变址寻址 LEA BX,ARRAY ; MOV SI,6 ; MOV AX,BX+SI3.12 画出数据在数据段中的存放情况,程序执行后,BX、DI、CX、DX 寄存器中的内容是什么? 程序如下:data segmentarray dw 20,30,40,20h,30h,-6buff db abcd$data endscode segmentassume cs:code,ds:datastart:mov ax, dat

10、amov ds, axmov bx, array+1mov di, offset arraymov cx, di+5mov dl, buff+3mov ah, 4chint 21hcode endsend start1E,00,00,00,20,00,00,643.13 在 DEBUG 下设置(SP)=20H,设置 AX、BX、CX、DX 为不同值,把这四个寄存器内容依次压入堆栈,再从堆栈中依次弹出到 SI、DI、BP、BX 寄存器。写出一段程序实现上述操作,并画出每条入栈指令执行后 SP 和堆栈中数据的变化。3.14 求出 7450H 与以下各十六进制数的和及差,并根据结果标出SF、ZF、C

11、F、OF 标志位的值。(1) 1234H (2)5678H (3)9804H (4)E0A0HSF、ZF、CF、OF(1)1234H+7450H, 1 0 0 1(2)5678H+7450H, 1 0 0 1(3)9804H+7450H, 0 0 1 0(4)E0A0H+7450H, 0 0 1 03.15 在数据段有如下定义:DATAX DW ?,?DATAY DW ?,?SUM DW ?,?,?,?请用 16 位指令按下列要求写出指令序列:(1)DATAX 和 DATAY 两个字数据相加,和存放在 SUM 中。MOV AX,DATAXADD AX,DATAYMOV SUM AX(2)DAT

12、AX 和 DATAY 两个双字数据相加,和存放在 SUM 开始的字单元中。MOV AX,DATAXMOV DX,DATAX+2ADD AX,DATAYADC DX,DATAY+2MOV SUM,AXMOV SUM+2,DX(3)DATAX 和 DATAY 两个字数据相乘(用 MUL),积存放在 SUM 开始的字单元中。(4)DATAX 和 DATAY 两个双字数据相乘(用 MUL),积存放在 SUM 开始的字单元中。(5)DATAX 双字除以字 DATAY(用 DIV),商和余数存放在 SUM 开始的字单元中。(6)DATAX 和 DATAY 两个压缩 BCD 码数据相加,和存放在 SUM 中

13、。3.16 双字长数 X 存放在 DX 和 AX 中,设(DX)=1004H,(AX)=1002H,要求用16 位指令写出:(1) 对存放在 DX 和 AX 中的双字长数求补的指令序列,并验证结果。NOT AXNOT DXADD AX,1ADC DX,0(2) 用减法指令求 0-X 的指令序列,并验证结果。MOV BX,0 MOV CX,0SUB BX,AXSBB CX,DX ;结果在 CX,BX3.17 试编写一个程序求出双字长数的绝对值。双字长数在 A 开始的字单元中,结果存放在 B 开始的字单元中。A DW ?,?B DW ?,?。 。 。MOV AX,AMOV DX,A+2TEST D

14、X,8000HJZ ZSNOT AXNOT DXADD AX,1ADC DX,0ZS:MOV B,AXMOV B+2,DX3.18 用移位指令为主实现对 AX 中的无符号数乘以 5,不考虑乘积可能超出 16 位。MOV DX,AXMOV CL,2SHL AX,CLADD AX,DX3.19 用移位指令为主实现对 AX 中的无符号数乘以 5,考虑乘积可能超出16 位的情况。提示:用 DX 接 AX 左移的位,32 位操作。3.20 把 AX 中的内容依次倒排序,即第 0 位移到第 15 位,第 1 位移到第14 位,。3.21 在数据段有如下定义:BUFF DB ABCD$EFGHIJK$STR1 DB 12 DUP(?)LEN DB ?用串指令编写程序完成以下操作:(1) 对字符串 STR1 全部置空格符。MOV AX,DATAMOV DS,AXMOV AL,20HLEA DI,STR1MOV CX,STR1-BUFFCLDREP STOSB (2) 从左到右把 BUFF 中的字符串传送到 STR1。MOV AX,

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

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

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