ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:41.69KB ,
资源ID:2897042      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2897042.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编清华版习题参考答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编清华版习题参考答案.docx

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

3、。请画出数据存放示意图,并回答以下问题:(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 ADD指令和ADC指令在什么情况下是一样的结

4、果? 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,DL / MOV AL,DL(5) PUSH AL / PU

5、SH 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 / CMP AX,6(16) MOV FFFF,AX / MOV

6、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:4524 (3)使用BX的寄存器寻址;无EA (4)使用BX的间接寻址 ;EA=46

7、3DH,物理地址=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:EA 3.10 用一条指令完成以下操作。(1)把BX寄存器和DX寄存器的内容相加,结果存人DX寄存器中。ADD DX,BX(2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。ADD AL,BX+SI

8、(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+6 (2)使用BX的间接寻址 LEA BX,ARRAY+6 ;MOV AX,BX (3)使用BX的寄存器相对寻址 LEA BX,ARRAY

9、;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 segment assume cs:code,ds:datastart: mov ax, data mov ds, ax mov bx, array+1 mov di, offset array mov cx, di+5 mov dl,

10、buff+3 mov ah, 4ch int 21hcode ends end start 1E,00,00,00,20,00,00,64 3.13 在DEBUG下设置(SP)=20H,设置AX、BX、CX、DX为不同值,把这四个寄存器内容依次压入堆栈,再从堆栈中依次弹出到SI、DI、BP、BX寄存器。写出一段程序实现上述操作,并画出每条入栈指令执行后SP和堆栈中数据的变化。3.14 求出7450H与以下各十六进制数的和及差,并根据结果标出SF、ZF、CF、OF标志位的值。(1) 1234H (2)5678H (3)9804H (4)E0A0H SF、ZF、CF、OF(1)1234H+7450

11、H, 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,DATAX ADD AX,DATAY MOV SUM AX (2)DATAX和DATAY两个双字数据相加,和存放在SUM开始的字单元中。 MOV AX,DATAX MOV DX,DATAX+2 ADD AX,D

12、ATAY ADC DX,DATAY+2 MOV SUM,AX MOV SUM+2,DX(3)DATAX和DATAY两个字数据相乘(用MUL),积存放在SUM开始的字单元中。 (4)DATAX和DATAY两个双字数据相乘(用MUL),积存放在SUM开始的字单元中。 (5)DATAX双字除以字DATAY(用DIV),商和余数存放在SUM开始的字单元中。(6)DATAX和DATAY两个压缩BCD码数据相加,和存放在SUM中。3.16 双字长数X存放在DX和AX中,设(DX)=1004H,(AX)=1002H,要求用16位指令写出:(1) 对存放在DX和AX中的双字长数求补的指令序列,并验证结果。NO

13、T 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 DX,8000HJZ ZSNOT AXNOT DXADD AX,1ADC DX,0ZS:MOV B,AXMOV B+2,DX3.18 用移位指令为主实现对AX中的无符号数乘以5,不考虑乘积可能超出16位。 MOV DX,AXM

14、OV CL,2 SHL AX,CL ADD 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)

15、从左到右把BUFF中的字符串传送到STR1。MOV AX,DATAMOV DS,AXMOV ES,AXCLDLEA SI,BUFFLEA DI,STR1MOV CX,STR1-BUFFREP MOVSB(3) 从右到左把BUFF中的字符串传送到STR1。MOV AX,DATAMOV DS,AXMOV ES,AXSTDLEA SI,STR1-1LEA DI,LEN-1MOV CX,STR1-BUFFREP MOVSB(4) 比较BUFF与STR1两个字符串是否相等,如相等则DX=1,否则DX=0。MOV AX,DATAMOV DS,AXMOV ES,AXCLDLEA SI,BUFFLEA DI,STR1MOV CX,STR1-BUFFREP

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1