钱晓捷新版汇编语言程序设计习题答案(修改).pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《钱晓捷新版汇编语言程序设计习题答案(修改).pdf》由会员分享,可在线阅读,更多相关《钱晓捷新版汇编语言程序设计习题答案(修改).pdf(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!.1/62 钱晓捷新版汇编语言程序设计习题答案 第一章 汇编语言基础知识 1.1、简述计算机系统的硬件组成与各部分作用 1.2、明确下列概念或符号:主存和辅存,RAM 和 ROM,存储器地址和 I/O 端口,KB、MB、GB 和 TB 1.3、什么是汇编语言源程序、汇编程序、目标程序?1.4、汇编语言与高级语言相比有什么优缺点?1.5、将下列十六进制数转换为二进制和十进制表示 1FFH 20H 35EH 4EFH 52EH 610H 71FH 8ABH 1.6、将下列十进制数转换为 BCD 码表示 1
2、12 224 368 4127 5128 6255 71234 82458 1.7、将下列 BCD 码转换为十进制数 110010001 210001001 300110110 410010000 500001000 610010111 710000001 800000010 1.8、将下列十进制数分别用 8 位二进制数的原码、反码和补码表示 10 2-127 3127 4-57 5126 6-126 7-128 868 1.9、完成下列二进制数的运算 110111001 210111001 310111001 4101110001001 51011 1011 81011 1001100161
3、011 10017 1.10 数码 09、大写字母 AZ、小写字母 az 对应的 ASCII 码分别是多少?ASCII 码为0dh、0ah 对应的是什么字符?1.11、计算机中有一个01100001编码,如果把它认为是无符号数,它是 10 进制什么数?如果认为它是 BCD 码,则表示什么数?又如果它是某个 ASCII 码,则代表哪个字符?1.12、简述 Intel 80 x86 系列微处理器在指令集方面的发展.1.13、什么是 DOS 和 ROM-BIOS?1.14、简述 PC 机最低 1MB 主存空间的使用情况.1.15、罗列 8086CPU 的 8 个 8 位和 16 位通用寄存器,并说明
4、各自的作用.1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义.1.17、举例说明 CF 和 OF 标志的差异.溢出标志 OF 和进位标志 CF 是两个意义不同的标志 进位标志表示无符号数运算结果是否超出 X 围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出 X 围,运算结果已经不正确例 1:3AH+7CHB6H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!.2/62 无符号数运算:58124182,X 围内,无进位 有符号数运算:58124182,X 围外,有溢出例
5、2:AAH+7CH126H 无符号数运算:170124294,X 围外,有进位 有符号数运算:8612428,X 围内,无溢出 1.18、字和双字在存储器中如何存放,什么是小端方式?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?1.19、什么是 8086 中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:1FFFFh:0 240h:17h 32000h:4500h 4B821h:4567h 1.20、8086 有哪 4 种逻辑段,各种逻辑段分别是什么用途?解答 代码段Code Segment用来存放程序的指令序列.处理器利用 CS:IP 取得下一
6、条要执行的指令 堆栈段Stack Segment确定堆栈所在的主存区域.处理器利用 SS:SP 操作堆栈中的数据 数据段Data Segment存放当前运行程序所用的数据.处理器利用 DS:EA 存取数据段中的数据 附加段Extra Segment是附加的数据段,也用于数据的保存.处理器利用 ES:EA 存取数据段中的数据 第二章 8086 指令系统 2.1 已知 DS 2000H、BX=0100H、SI=0002H,存储单元20100H 20103H依次存放 12 34 56 78H,21200H 21203H依次存放 2A 4C B7 65H,说明下列每条指令执行完后 AX 寄存器的内容.
7、1 mov ax,1200h ;AX1200h 2 mov ax,bx ;AX0100h 3 mov ax,1200h ;AX4C2Ah 4 mov ax,bx ;AX3412h 5 mov ax,bx+1100h ;AX4C2Ah 6 mov ax,bx+si ;AX7856h 7 mov ax,bxsi+1100h ;AX65B7h 2.2 指出下列指令的错误 mov cx,dl 两操作数类型不匹配 mov ip,ax IP 指令指针禁止用户访问 mov es,1234h 立即数不允许传给段寄存器 mov es,ds 段寄存器之间不允许传送 mov al,300 两操作数类型不匹配 mov
8、 sp,ax 目的操作数应为 BP 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!.3/62 mov ax,bx+di 源操作数应为 BX+DI mov 20h,ah 立即数不能作目的操作数 2.3 已知数字 0 9 对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以 table 为首地址设为 200H的连续区域中.请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果.lea bx,table;获取 table 的首地址,BX200H mov al,8;传送欲转换的数字,AL8
9、 xlat;转换为格雷码,AL12H 2.4 什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?堆栈是一种按先进后出原则存取数据的存储区域.堆栈的两种基本操作是压栈和出栈,对应的指令是 PUSH 和 POP.2.5 已知 SS=FFA0H、SP=00B0H,画图说明执行下面指令序列时,堆栈区和 SP 的内容如何变化?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
10、,89hAL=89h CF ZF SF OF PF add al,alAL=12h 1 0 0 1 1 add al,9dh AL=0afh 0 0 1 0 1 cmp al,0bchAL=0afh 1 0 1 0 1 sub al,al AL=00h 0 1 0 0 1 dec alAL=0ffh 0 0 1 0 1 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!.4/62 inc alAL=00h 0 1 0 0 1 2.7 设 X、Y、Z 均为双字数据,分别存放在地址为 X、X+2;Y、Y+2;Z、Z+2 的存储单元中,它们的运算结果存入
11、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 W=X+Y+24-Z 2.8 请分别用一条汇编语言指令完成如下功能:1把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器.ADD DX,BX 2用寄存器 BX 和 SI 的基址变址寻址方式把存储器的一个字节与AL 寄存器的内容相加,并把结果送到 AL 中.ADD AL,BX+SI 3 用 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中
12、的一个字和 CX 寄存器的内容相加,并把结果送回存储器中.ADD BX+0B2H,CX 4 用位移量为 0520H 的直接寻址方式把存储器中的一个字与数 3412H 相加,并把结果送回该存储单元中.ADD WORD PTR 0520H,3412H 5把数 0A0H 与 AL 寄存器的内容相加,并把结果送回 AL 中.ADD AL,0A0H 2.9;设 X、Y、Z、V 均为 16 位带符号数,分别装在 X、Y、Z、V 存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处.为了避免与操作数地址混淆,将题中 X,Y,Z,V 字操作数改为 A,B,C,D mov ax,X;ax=A i
13、mul Y;dx,ax=A*B 将操作数看作符号数,以下同 mov cx,ax mov bx,dx;bx,ax-dx,ax=A*B mov ax,Z;ax=C cwd;dx,ax=C 扩展符号后为双字 add cx,ax adc bx,dx;bx,cx-bx,cx+dx,ax=A*B+C sub cx,540 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!.5/62 sbb bx,0;bx,cx-A*B+C-540 mov ax,V;ax=D cwd;dx,ax=D 扩展符号后为双字 sub ax,cx sbb dx,bx;dx,ax=dx,ax
14、-bx,cx=D-idiv X;运算结果:D-/A;ax 存商,dx 存余数 2.10;1xchg si,30h xchg 的操作数不能是立即数 2 pop cs 不能对 CS 直接赋值 3 sub si,di 两个操作数不能都是存储单元 4push ah 堆栈的操作数不能是字节量 5 adc ax,ds adc 的操作数不能是段寄存器 6 add si,80h 没有确定是字节还是字操作 7 in al,3fchin 不支持超过 FFH 的直接寻址 8 out dx,ahout 只能以 AL/AX 为源操作数 2.11;给出下列各条指令执行后的结果,以与状态标志 CF、OF、SF、ZF、PF
15、的状态.指令 AX 的值 CF OF SF ZF PF Mov ax,1470h 1470h-And ax,ax 1470h0 0 0 00 Or ax,ax 1470h 0 0 0 0 0 Xor ax,ax 0 0 0 0 1 1 Not ax 0ffffh-Test ax,0f0f0h 0ffffh 0 0 1 0 1 注意:1.mov,not 指令不影响标志位 2.其他逻辑指令使 CF=OF=0,根据结果影响其他标志位.2.12;假设例题 2.32 的程序段中,AX=08H,BX=10H,请说明每条指令执行后的结果和各个标志位的状态.指令 注释 执行结果 CF OF SF ZF PF
16、mov si,ax si=ax si=0008h -shl si,1 si=2*ax si=0010h 0 0 0 0 0 add si,ax si=3*ax si=0018h 0 0 0 0 1 mov dx,bx dx=bx dx=0010h -mov cl,03h cl=03h -shl dx,cl dx=8*bx dx=0080h 0 u 0 0 0 sub dx,bx dx=7*bx dx=0070h 0 0 0 0 0 add dx,si dx=7*bx+3*ax dx=0088h 0 0 0 0 1 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提
17、供优质的文档!.6/62 注意:1.左移 N 次相当于乘于 2 的 N 次方,右左移 N 次相当于除乘于 2 的 N 次方.2.移位指令根据是否移入1到 CF,设置 CF,根据移位后的结果影响 SF,ZF,PF.根据最高符号位是否改变设置 OF,如改变 OF=1.3.u 表示无定义,-表示无影响.2.13 编写程序段完成如下要求:用位操作指令实现 AL无符号数乘以 10;不考虑进位 mov bl,al mov cl,3 shl al,cl add al,bl;shl bl,1 add al,bl ;考虑进位 xor ah,ah mov bx,ax mov cl,3 shl ax,cl add
18、ax,bx;shl bx,1 add ax,bx 用逻辑运算指令实现数字 0 9 的 ASCII 码与非压缩 BCD 码的互相转换 数字 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 mov cl,4 again:shr dx,1;实现逻辑右移 ;采用sar dx,1,则实现算术右移 rcr
19、 ax,1 dec cl jnz again 把 DX:.AX 中的双字右移 4 位 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!.7/62 MOV CL,4 SHR AX,CL MOV BL,DL SHR DX,CL SHL BL,CL OR AH,BL 2.14;已知 AL=F7H表示有符号数-9,分别编写用 SAR 和 IDIV 指令实现的除以 2的程序段,并说明各自执行后,所得的商是什么?1用 sar 编写 mov al,0f7h ;-9 送 al sar al,1 ;结果:al=0fbh 即-5 2用 idiv 编写 mov al,0
20、f7h ;-9 送 al cbw ;字节符号扩展位字 mov bl,2 ;注意除数不可为立即数 idiv bl ;结果:商为 al=fch ;余数为 ah=ffh 结论:符号数的除法用 idiv 准确 2.15、已知数据段 500h 600h 处存放了一个字符串,说明下列程序段执行后的结果:mov si,600h mov di,601h mov ax,ds mov es,ax mov cx,256 std rep movsb 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!.8/62 2.16、说明下列程序段的功能 cld mov ax,0fefh
21、 mov cx,5 mov bx,3000h mov es,bx mov di,2000h rep stosw 2.17、指令指针 IP 是通用寄存器还是专用寄存器?有指令能够直接它赋值吗?哪类指令的执行会改变它的值?调试程序 DEBUG 环境下,如何改变 IP 数值?2.18、控制转移类指令中有哪三种寻址方式?2.19;什么是短转移 short jump、近转移 near jump 和远转移 far jump?什么是段内转移和段间转移?8086 有哪些指令可以实现段间转移?短转移:指段内128127 之间的转移,位移量用一个字节表示 近转移:指段内32K 之间的转移,位移量用一个字表示 远转
22、移:指段间 1MBX 围的转移 段内转移:指在同一个代码段内的转移,可以是短转移或者近转移 段间转移:指转移到另外一个代码段,就是远转移 8086/8088CPU 的 JMP、CALL 和 INT n 指令可以实现段间转移 2.20;8086 的条件转移指令的转移 X 围有多大?实际编程时,你如何处理超出 X 围的条件转移?8086 的条件转移的转移 X 围:在当前指令地址的+127-128 之内.如条件转移的转移 X 围超出此 X 围,可在此 X 围内安排一条无条件转移,再转移到 X 围外的目标地址.2.21;假设 DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20
23、A1H,232F7H=3280H,264E5H=2450H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么?JMP Bx;转移的有效地址 EA=BX=1256h JMP tABLEBx;转移的有效地址 EA=ds:20a1h+1256h=232f7=3280h JMP Bxsi;转移的有效地址 EA=ds:1256h+528fh=264e5h=2450h 2.22、判断下列程序段跳转的条件 1 xor ax,1e1eh je equal ;AX1e1eh异或后为 0 2test al,10000001b jnz there 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系
24、删除!我们将竭诚为您提供优质的文档!.9/62;AL 的 D0 或 D7 至少有一位为 1 3 cmp cx,64h there ;CX无符号数 64h 2.23;设置 CX=0,则 LOOP 指令将循环多少次?例如 mov cx,0;不循环,因为一进入循环就判 cx=0?如 cx=0 就退出循环 delay:loop delay 循环次数是 2 的 16 次方,即 21665536.2.24 假设 AX 和 SI 存放的是有符号数,DX 和 DI 存放的是无符号数,请用比较指令和条件转移指令实现以下判断:1若 DX DI,转到 above 执行 cmp dx,di ja above;jnbe
25、 above 2若 AX SI,转到 greater 执行 cmp ax,si jg greater;jnle greater 3若 CX=0,转到 zero 执行 cmp cx,0 jcxz zero jz zero 4若 AXSI 产生溢出,转到 overflow 执行;cmp ax,di 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 e below_eq jae below_eq 2.25 有一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 钱晓捷 新版 汇编语言 程序设计 习题 答案 修改
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内