新版汇编语言程序设计【课后习题答案】钱晓捷主编电子工业出版社.pdf
《新版汇编语言程序设计【课后习题答案】钱晓捷主编电子工业出版社.pdf》由会员分享,可在线阅读,更多相关《新版汇编语言程序设计【课后习题答案】钱晓捷主编电子工业出版社.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!新版汇编语言程序设计【课后习题答案】钱晓捷主编电子工业出版社 第 2 章 8086 的指令系统 习题 2.1DS2000H、BX0100H、SI0002H,储备单元20200H20203H依次存放12 34 56 78H,21200H21203H依次存放 2A 4C B7 65H,说明以下每条指令执行完后 AX寄存器的内容。1 mov ax,1200h 2 mov ax,bx 3 mov ax,1200h 4 mov ax,bx 5 mov ax,bx+1100h 6 mov ax,bx+si 7 m
2、ov ax,bxsi+1100h 解答 1AX1200H 2AX0100H 3AX4C2AH ;偏移地址=bx=0100h 4AX3412H ;偏移地址=bx=0100h 5AX4C2AH ;偏移地址=bx+1100h=1200h 6AX7856H ;偏移地址=bx+si=0100h+0002h=0102h 7AX65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 习题 2.2指出以下指令的错误 1 mov cx,dl 2 mov ip,ax 3 mov es,1234h 4 mov es,ds 5 mov al,300 6 mov sp,ax 7
3、mov ax,bx+di 8 mov 20h,ah 解答 1两操作数类型不匹配 2IP 指令指针禁止用户访问 3赶忙数不承诺传给段寄存器 4段寄存器之间不承诺传送 5两操作数类型不匹配 6目的操作数应为 SI 7源操作数应为 BX+DI 8赶忙数不能作目的操作数 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!习题 2.3数字 0 9 对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以 table 为首地址设为 200H的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执
4、行结果。lea bx,table mov al,8 xlat 解答 lea bx,table ;猎取 table 的首地址,BX200H mov al,8 ;传送欲转换的数字,AL8 xlat ;转换为格雷码,AL12H P35 习题 2.4什么是堆栈,它的工作原那么是什么,它的差不多操作有哪两个,对应哪两种指令?解答 堆栈是一种按先进后出原那么存取数据的储备区域,位于堆栈段中,使用 SS 段寄存器记录其段地址;它的工作原那么是先进后出;堆栈的两种差不多操作是压栈和出栈,对应的指令是 PUSH 和 POP。习题 2.5SS=2200H、SP=00B0H,画图说明执行下面指令序列时,堆栈区和 S
5、P 的内容如何变化?mov ax,8057h push ax mov ax,0f79h push ax pop bx pop bx 解答 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop bx ;DS:0f79h=8057h 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!习题 2.6给出以下各条指令执行后 AL 值,以及 CF、ZF、SF、OF 和 PF 的状态:mov al,89h add al,al add al,9dh cmp al,0bch sub al,al d
6、ec al inc al 解答 mov al,89h ;AL=89h CF ZF SF OF PF add al,al ;AL=12h 1 0 0 1 1;1000 1001+1000 1001 10001 0010 add al,9dh ;AL=0afh 0 0 1 0 1;0001 0010+1001 1101 1010 1111 cmp al,0bch ;AL=0afh 1 0 1 0 1;1010 1111-1011 1100*0100 0011 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!sub al,al ;AL=00h 0 1 0
7、 0 1 dec al ;AL=0ffh 0 0 1 0 1;0000 0000-0000 0001 *1111 1111 inc al ;AL=00h 0 1 0 0 1;1111 1111+0000 0001*1111 1111 习题 2.7设 X、Y、Z 均为双字数据,分别存放在地址为 X、X+2;Y、Y+2;Z、Z+2 的储备单元中,它们的运算结果存入 W 单元。阅读如下程序段,给出运算公式。mov ax,X mov dx,X+2 add ax,Y adc dx,Y+2 add ax,24 adc dx,0 sub ax,Z sbb dx,Z+2 mov W,ax mov W+2,dx
8、 解答 WX+Y+24-Z 习题 2.8请分别用一条汇编语言指令完成如下功能:1把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器。2 用寄存器 BX 和 SI 的基址变址寻址方式把储备器的一个字节与 AL 寄存器的内容相加,并把结果送到 AL 中。3用 BX 和位移量 0B2H 的寄存器相对寻址方式把储备器中的一个字和 CX 寄存器的内容相加,并把结果送回储备器中。4 用位移量为 0520H 的直截了当寻址方式把储备器中的一个字与数 3412H 相加,并把结果送回该储备单元中。5把数 0A0H 与 AL 寄存器的内容相加,并把结果送回 AL 中。解答 1ADD DX,BX 2
9、ADD AL,BX+SI 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!3ADD BX+0B2H,CX 4ADD WORD PTR 0520H,3412H 5ADD AL,0A0H 习题 2.9设 X、Y、Z、V 均为 16 位带符号数,分别装在 X、Y、Z、V 储备单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。mov ax,X ;ax=X imul Y ;DX.AX=X*Y mov cx,ax ;cx=X*Y 的低 16 位 mox bx,dx ;bx=X*Y 的高 16 位 mov ax,Z ;ax=Z cwd add c
10、x,ax ;cx=Z 的低 16 位+X*Y 的低 16 位 adc bx,dx ;bx=Z 的高 16 位+X*Y 的高 16 位+低位进位 sub cx,540 ;cx=Z 的低 16 位+X*Y 的低 16 位-540 sbb bx,0 ;bx=Z 的高 16 位+X*Y 的高 16 位+低位进位-低位借位 mov ax,V ;ax=V cwd sub ax,cx ;ax=V 的低 16 位-Z 的低 16 位+X*Y 的低 16 位-540 sbb dx,bx ;dx=V 的高 16 位-Z 的高 16 位+X*Y 的高 16 位+低位进位-低位借位-低位借位 idiv X;/X 解答
11、 V-(X*Y+Z-540)/X AX 存商,DX 存余数 习题 2.10指出以下指令的错误:1 xchg si,30h 2 pop cs 3 sub si,di 4 push ah 5 adc ax,ds 6 add si,80h 7 in al,3fch 8 out dx,ah 解答 1xchg 的操作数不能是赶忙数 2不应对 CS 直截了当赋值 3两个操作数不能差不多上储备单元 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!4堆栈的操作数不能是字节量 5adc 的操作数不能是段寄存器 6没有确定是字节依旧字操作 7in 不支持超过 FFH
12、的直截了当寻址 8out 只能以 AL/AX 为源操作数 习题 2.11给出以下各条指令执行后的结果,以及状态标志 CF、OF、SF、ZF、PF 的状态。mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h 解答 mov ax,1470h ;AX1470H CF ZF SF OF PF and ax,ax ;AX1470H 0 0 0 0 0 ;0001 0100 0111 0000 or ax,ax ;AX1470H 0 0 0 0 0 xor ax,ax ;AX0000H 0 1 0 0 1 not ax ;AXFF
13、FFH 0 1 0 0 1 test ax,0f0f0h ;AXFFFFH 0 0 1 0 1 注意:MOV 和 NOT 指令不阻碍标志位;其他逻辑指令使 CFOF0,依照结果阻碍其他标志位。习题 2.12假设例题 2.32 的程序段中,AX=08H,BX=10H,请说明每条指令执行后的结果和各个标志位的状态。解答 指令 ;执行结果 CF OF SF ZF PF mov si,ax ;SI=AX=0008H -shl si,1 ;SI=2*AX=0010H 0 0 0 0 0 add si,ax ;SI=3*AX=0018H 0 0 0 0 1 mov dx,bx ;DX=BX=0010H 0
14、 0 0 0 1 mov cl,03h ;CL=03H 0 0 0 0 1 shl dx,cl ;DX=8*BX=0080H 0 u 0 0 0 sub dx,bx ;DX=7*BX=0070H 0 0 0 0 0 add dx,si ;DX=7*BX+3*AX=0088H 0 0 0 0 1 注意:逻辑左移 N 次相当于无符号整数乘以 2 的 N 次方,逻辑右移 N 次相当于无符号整数除以 2 的 N 次方。移位指令依照移位的数据设置 CF,依照移位后的结果阻碍 SF,ZF,PF。在进行一位移位时,依照最高符号位是否改变设置 OF,如改变那么 OF1。另外,程序注释用u表示标志无定义不确定,
15、-表示无阻碍。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!习题 2.13编写程序段完成如下要求:1用位操作指令实现 AL无符号数乘以 10 2用逻辑运算指令实现数字 0 9 的 ASCII 码与非压缩 BCD 码的互相转换 3把 DX.AX 中的双字右移 4 位 解答 1;不考虑进位 mov bl,al mov cl,3 shl al,cl ;*8 add al,bl ;shl bl,1 add al,bl ;考虑进位 xor ah,ah mov bx,ax mov cl,3 shl ax,cl add ax,bx ;shl bx,1 add
16、ax,bx 2数字 09 的 ASCII 码是:30h39h 非压缩 BCD 码的 09 是:00h09h 方法一:and al,0fh ;实现 ASCII 到非压缩 BCD 码的转换 or al,30h ;实现非压缩 BCD 码到 ASCII 的转换 方法二:xor al,30h ;求反 D5D4 位,其他不变 ;即高 4 位为 3,那么变为 0;高 4 位为 0,那么变为 3 3 mov cl,4 again:shr dx,1 ;实现逻辑右移 ;采纳sar dx,1,那么实现算术右移 rcr ax,1 dec cl jnz again 习题 2.14AL=F7H表示有符号数-9,分别编写用
17、 SAR 和 IDIV 指令实现的除以 2 的程序段,并说明各自执行后,所得的商是什么?解答 1用 sar 编写 mov al,0f7h ;-9 送 AL 1111 1001 sar al,1 ;结果:AL=1111 1100B=0FBH 即-5 2用 idiv 编写 mov al,0f7h ;-9 送 al cbw ;字节符号扩展位字 mov bl,2 ;注意除数不可为赶忙数 idiv bl ;结果:商为 al=fch (-4)欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!;余数:ah=ffh(-1)结论:符号数的除法用 idiv 准确。习题
18、2.15数据段 500h 600h 处存放了一个字符串,说明以下程序段执行后的结果:mov si,600h mov di,601h mov ax,ds mov es,ax mov cx,256 std rep movsb 解答 习题 2.16说明以下程序段的功能 cld mov ax,0fefh mov cx,5 mov bx,3000h mov es,bx mov di,2000h rep stosw 解答 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!将 es:di(即 3000:2000h 或 32000h)开始的 5 个单元的内容置为 0
19、fefh。习题 2.17指令指针 IP 是通用寄存器依旧专用寄存器?有指令能够直截了当它赋值吗?哪类指令的执行会改变它的值?解答 指令指针 IP 不是通用寄存器,不可直截了当赋值,属于专用寄存器。有且仅有循环、转移、子程序调用和返回、中断类等指令能够改变它的值。习题 2.18操纵转移类指令中有哪三种寻址方式?解答 操纵转移类指令的寻址方式:相对寻址、直截了当寻址方式和间接寻址方式又能够分成寄存器和储备器间接寻址。习题 2.19什么是短转移 short jump、近转移 near jump 和远转移 far jump?什么是段内转移和段间转移?8086 有哪些指令能够实现段间转移?解答 短转移:
20、指段内128127 之间的转移,位移量用一个字节表示 近转移:指段内32K 之间的转移,位移量用一个字表示 远转移:指段间 1MB 范畴的转移 段内转移:指在同一个代码段内的转移,能够是短转移或者近转移 段间转移:指转移到另外一个代码段,确实是远转移 8086/8088CPU 的 JMP、CALL 和 INT n 指令能够实现段间转移 习题 2.208086 的条件转移指令的转移范畴有多大?实际编程时,你如何处理超出范畴的条件转移?解答 8086 的条件转移的转移范畴:在当前指令地址的+127-128 之内。如条件转移的转移范畴超出此范畴,可在此范畴内安排一条无条件转移,再转移到范畴外的目标地
21、址。习题 2.21假设 DS=2000H,BX=1256H,SI=528FH,位移量 TABLE=20A1H,欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!232F7H=3280H,264E5H=2450H,试问执行以下段内间接寻址的转移指令后,转移的有效地址是什么?1 JMP BX 2 JMP TABLEBX 3 JMP BXSI 解答 1转移的有效地址 EA=BX=1256H 2转移的有效地址 EA=DS:20A1H+1256H=232F7=3280H 3转移的有效地址 EA=DS:1256H+528FH=264E5H=2450H 习题 2.
22、22判定以下程序段跳转的条件 1 xor ax,1e1eh je equal 2test al,10000001b jnz there 3cmp cx,64h jb there 解答 1AX1e1eh异或后为 0 2AL 的 D0 或 D7 至少有一位为 1 3CX无符号数 64h 习题 2.23设置 CX=0,那么 LOOP 指令将循环多少次?例如:mov cx,0 delay:loop delay 解答 216 次。习题 2.24假设 AX 和 SI 存放的是有符号数,DX 和 DI 存放的是无符号数,请用比较指令和条件转移指令实现以下判定:1假设 DX DI,转到 above 执行;2假
23、设 AX SI,转到 greater 执行;3假设 CX=0,转到 zero 执行;4假设 AXSI 产生溢出,转到 overflow 执行;5假设 SIAX,转到 less_eq 执行;6假设 DIDX,转到 below_eq 执行。解答 1假设 DX DI,转到 above 执行 cmp dx,di ja above ;jnbe above 2假设 AX SI,转到 greater 执行 cmp ax,si jg greater ;jnle greater 3假设 CX=0,转到 zero 执行 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
24、cmp cx,0 jz zero ;jcxz zero 4假设 AXSI 产生溢出,转到 overflow 执行;cmp ax,si jo overflow 5假设 SIAX,转到 less_eq 执行;cmp si,ax ;cmp ax,si jle less_eq ;jge less_eq 6假设 DIDX,转到 below_eq 执行。cmp di,dx ;cmp dx,di jbe below_eq ;jae below_eq 习题 2.25有一个首地址为 array 的 20 个字的数组,说明以下程序段的功能。mov cx,20 mov ax,0 mov si,ax sum_loop
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课后习题答案 新版 汇编语言 程序设计 课后 习题 答案 钱晓捷 主编 电子 工业出版社
限制150内