汇编语言程序设计课后习题解答.pdf
《汇编语言程序设计课后习题解答.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计课后习题解答.pdf(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!汇编语言程序设计(宋人杰 主编)课后习题解答 第 1 章 汇编语言基础知识 1 简述汇编语言源程序、汇编程序、和目标程序的关系。答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。2.简述汇编语言的优缺点。答:(1)汇编语言的优点:可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O 端口等。.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。可与高级语言配合使用,应用十分广泛。(2)汇编语言的缺点:通用性和可移植性较差 相对于高
2、级语言来说较繁锁、易出错、不够直观。3 CPU 的寻址能力为 8KB,那么它的地址总线的宽度为多少?答:13 4.1KB的存储器有多少个存储单元?答:1024个字节。5.指令中的逻辑地址由哪两部分组成?答:指令中的逻辑地址由段基址和偏移量组成。6.以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。(1)12F8:0100 (2)1A2F:0103 (3)1A3F:0003 (4)1A3F:A1FF 答:(1)13080H (2)1A3F3H (3)1A3F3H (4)245EFH 7.自 12FA:0000 开始的内存单元中存放以下数据(用十六进制形式表示):03 06 11 A
3、3 13 01,试分别写出 12FA:0002 的字节型数据、字型数据及双字型数据的值。答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8.内存中某单元的物理地址是 19318H,段基地址为 1916H,则段内偏移地址为多少?若段内偏移地址为 2228H,则段基地址为多少?答:若段基地址为 1916H,则段内偏移地址为 01B8H;若段内偏移地址为 2228H,则段基地址为 170FH 9.在实模式环境中,一个段最长不能超过多少字节?答:64KB 10.实模式可寻址的内存范围是多少?答:1MB 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们
4、将竭诚为您提供优质的文档!第 2 章 汇编语言源程序格式 1 请解释变量和标号的含义,两者有何区别?答:标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地址符号名,在除代码段以外的其他段中定义。变量和标号的主要区别在于变量指的是数据,而标号则对应的是指令。2.变量和标号有什么属性?答:都具有三种属性:段属性、偏移属性和类型属性 3.伪指令语句与指令语句的区别是什么?伪指令有什么用途?答:伪指令并不像指令语句那样在程序运行期间由计算机自动执行,而是在汇编程序对源程序汇编期间由汇编程序处理的操作。伪指令可以完成如处理器选择、定义程序模块、数据定义、存储区分配、指示程序开始
5、和结束等功能。4.数值返回运算符有哪几种?简述 LENGTH 和 SIZE 的区别。答:数值返回运算符包括:SEG(取段地址)、OFFSET(取偏移地址)、TYPE(取类型值)、LENGTH(取长度)、SIZE(取总字节数)。对于变量中使用 DUP 的情况,LENGTH 回送分配给该变量的单元数,对于其他情况则送 1;而 SIZE 会送分配给变量的总字节数,也就是 LENGTH 和 TYPE 的乘积。5.画图说明下列伪指令所定义的数据在内存中的存放形式。(1)ARR1 DB 6,34H,-7 (2)ARR2 DW 3C5DH,1,?(3)ARR3 DB 2 DUP(1,2,DUP(2,5),3
6、)(4)ARR4 DB HELLO (5)ARR%DB 1234 答:(1)见题图 2.1 06H34HF9HARR1 题图 2.1 (2)见题图 2.2 00HARR201H3CH5DH-题图 2.2 (3)见题图 2.3 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!02HARR305H02H01H05H03H02H05H02H01H05H03H 题图 2.3 (4)见题图 2.4 4CHARR44CH45H48H4FH 题图 2.4 (5)题图 2.5 34HARR533H32H31H 题图 2.5 6.写出下列变量定义语句。(1)为缓冲区
7、 BUF1 预留 20B的存储空间。(2)将字符串ABCD,1234存放于 BUF2 存储区中。答:(1)BUF1 DB 20 DUP(?)(2)BUF2 DB ABCD DB 1234 7.符号定义语句如下:BUF DB 2,3,4,5,345 EBUF DB 8 LT DB EQU EBUF-BUF 问 LT 的值是多少?答:LT的值为 7 8.假设程序中的数据定义如下:A DW?B DB 16 DUP(?)C DD?T EQU$-A 问 T 的值是多少?它表示什么意义?欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!答:T 的值是 22;它表
8、示从变量 A 到 T 之间分配的存储空间(字节)数目。9.如何规定一个程序执行的开始位置?主程序执行结束应该如何返回 DOS?源程序在何处停止汇编过程?答:程序开始位置:END 伪指令后的标号所对应的地址;应用程序开始伪指令.STARTUP处。返回DOS:RET指令结合PUSH DS等指令;用DOS功能调用的第4CH号中断;.EXIT伪指令。END 伪指令处停止汇编过程。10.EQU 伪指令与“=”伪指令有何区别?答:在同一程序中,“=”伪指令可对一个符号重复定义 11.指出下列伪指令表达方式的错误,并改正之。(1)DATA SEG (2)SEGMENT CODE (3)MYDATA SEGM
9、ENT DATA ENDS (4)MAIN PROC FAR END MAIN MAIN ENDP 答:(1)SEG 改为 SEGMENT (2)没有段名 (3)DA TA ENDS 改为 MYDA TA ENDS (4)END MAIN 删除 第 3 章 8086/8088 寻址方式及指令系统 1 什么是寻址方式,8086/8088 微处理器有几种寻址方式,各类寻址方式的基本特征是什么?答:寻址方式就是寻找指令中操作数的方式,或寻找指令转移目的地址的方式。8086/8088 微处理器的寻址方式分为数据寻址方式和程序转移寻址方式。数据寻址方式主要包括立即数寻址方式、寄存器寻址方式、直接寻址方式
10、、寄存器间接寻址方式、寄存器相对寻址方式、基址变址寻址方式和相对基址变址寻址方式;程序转移寻址方式主要包括段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址。立即数寻址:操作数就在指令中,作为指令的一部分,跟在操作码后存放在代码段。寄存器寻址:操作数在寄存器中,指令中指定寄存器号。直接寻址方式:操作数在存储器中,指令直接包含操作数的有效地址 EA。寄存器间接寻址:操作数在存储器中,操作数的有效地址在 SI,DI,BX,BP 这 4 个寄存器之一中。寄存器相对寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的内容加上 8 位或 16 位的位移之
11、和。基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)加上变址寄存器(SI,DI)的内容。相对基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)和变址寄存器(SI,DI)的内容加上 8 位或 16 位的位移之和。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!段内直接寻址:转向的有效地址是当前 IP 寄存器的内容和指令中指定的 8 位或 16 位位移量之和。段内间接寻址:转向的有效地址是一个寄存器或是一个存储单元的内容。段间直接寻址:在指令中直接提供了转向段地址和偏移地址。段间间接寻址:用存储
12、器里的两个相继字的内容来取代 IP 和 CS 寄存器中的原始内容,以达到段间转移的目的。2.假 定(DS)=1000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,变 量 TABLE 的 偏 移 地 址 为0100H,试指出下列指令的源操作数字段的寻址方式,它的有效地址(EA)和物理地址(PA)分别是多少?(1)MOV AX,1234H (2)MOV AX,TABLE (3)MOV AX,BX+100H (4)MOV AX,TABLEBPSI 答:(1)直接寻址,EA=1234H,PA=11234H(2)直接寻址,EA=0100H,PA=10100H (3)寄存器相对寻址
13、,EA=0140H,PA=10140H(4)相对基址变址寻址,EA=0195H,PA=10195H 3.若 TABLE为数据段 0032 单元的符号名,其中存放的内容为 1234H,试问下列两条指令有什么区别?执行完指令后,AX 寄存器的内容是什么?MOV AX,TABLE LEA AX,TABLE 答:第一条指令是取 0032单元的内容,执行完后 AX 的内容是 1234H 第二条指令是取 TABLE 的偏移地址,执行完后 AX 的内容为 0032H 4.指出下列指令的错误。(1)MOV CX,DL (2)MOV IP,AX (3)MOV ES,1234H (4)MOV ES,DS (5)M
14、OV AL,300H (6)MOV SP,AX (7)MOV AX,BX+DI (8)MOV 20H,AH 答:(1)两操作数长度不一致 (2)目的操作数不能为 IP (3)立即数不能直接送段寄存器 (4)两个段寄存器之间不能直接进行数据传送 (5)两操作数长度不一致 (6)SP 不能用作间址寄存器 (7)BX+DI 改为BXDI或BX+DI (8)目的操作数不能为立即数 5.指出下列指令的错误。(1)POP CS(2)SUB SI,DI(3)PUSH AH(4)ADC AX,DS(5)XCHG SI,30H(6)OUT DX,AH 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删
15、除!我们将竭诚为您提供优质的文档!(7)IN AL,3FCH (8)MUL 5 答:(1)POP 指令不允许使用 CS (2)两操作数不能同时是存储器寻址方式 (3)堆栈的操作必须以字为单位 (4)段寄存器不允许直接参加运算 (5)XCHG 指令的操作数不允许是立即数 (6)OUT 指令只能用 AL 做源操作数 (7)端口号大于 255,必须将其放到 DX 中 (8)MUL 指令源操作数不允许是立即数 6.请分别用一条汇编语言指令完成如下功能。(1)把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器。(2)用寄存器 BX 和 SI 的基址变址寻址方式把存储器的一个字节与 AL
16、寄存器的内容相加,并把结果送到 AL 中。(3)用 BX 和位移量 0B2H的寄存器相对寻址方式把存储器中的一个字和 CX 寄存器的内容相加,并把结果送回存储器中。(4)把数 0A0H 与 AL 寄存器的内容相加,并把结果送回 AL 中。答:(1)ADD DX,BX (2)ADD AL,BX+SI (3)ADD BX+0B2H,CX (4)ADD AL,0A0H 7.求出以下各十六进制数与十六进制数 58B0 之和,并根据结果设置标志位 SF、ZF、CF和 OF 的值。(1)1234H(2)5678H(3)0AF50H (4)9B7EH 答:(1)和为 6AE4H,SF=0,ZF=0,CF=0
17、,OF=0 (2)和为 0AF28H,SF=1,ZF=0,CF=0,OF=1 (3)和为 0800H,SF=0,ZF=0,CF=1,OF=0 (4)和为 0F42EH,SF=1,ZF=0,CF=0,OF=0 8.执行指令 ADD AL,72H 前,(AL)=8EH,标志寄存器的状态标志 OF、SF、ZF、AF、PF 和 CF 全为 0,指出该指令执行后标志寄存器的值。答:指令执行后,AL 的内容为 0000000H,且有进位,标志寄存器中各标志位的值为:OF=0,SF=0,ZF=1,AF=1,PF=1,CF=1 9.已知程序段如下:MOV AX,1234H MOV CL,4 ROL AX,CL
18、 DEC AX MOV CX,4 MUL CX 试问:1、每条指令执行完后,AX 的内容是什么?2、每条指令执行完后,CF、SF 和 ZF 的值是什么?欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!3、程序执行完后,AX 和 DX 的内容是什么?答:(1)(2)MOV AX,1234H ;(AX)=1234H,各标志位不变 MOV CL,4 ;(AX)=1234H,各标志位不变 ROL AX,CL ;(AX)=2341H,CF=1,其它标志位不变 DEC AX ;(AX)=2340H,CF不变,SF=0,ZF=0 MOV CX,4 ;(AX)=2
19、340H,各标志位不变 MUL CX ;(AX)=8D00H,CF=0,ZF=0,SF=0(3)程序执行完后,(AX)=8D00H,(DX)=0000H 10.编程序段,将 AL、BL、CL、DL 相加,结果存在 DX 中。答:MOV AH,0 ADD AL,BL ADC AH,0 ADD AL,CL ADC AH,0 ADD AL,DL ADC AH,0 MOV DX,AX 11.编程序段,从 AX 中减去 DI,SI 和 BP 中的数据,结果送 BX。答:SUB AX,DI SUB AX,SI SUB AX,BP MOV BX,AX 12.假设(BX)=0E3H,变量 VALUE 中存放的
20、内容为 79H,确定下列各指令单独执行后的结果。(1)OR BX,VALUE (2)AND BX,VALUE (3)XOR BX,OFFH (4)AND BX,01H (5)TEST BX,05H(6)XOR BX,VALUE 答:(1)(BX)=0FBH(2)(BX)=61H(3)(BX)=1CH(4)(BX)=01H(5)(BX)=0E3H (6)(BX)=9AH 13.已知数据段 500H600H 处存放了一个字符串,说明下列程序段执行后的结果。MOV SI,600H MOV DI,601H MOV AX,DS MOV ES,AX MOV CX,256 STD 欢迎您阅读并下载本文档,本
21、文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!REP MOVSB 答:将数据段 501H600H 中存储的字符串移到数据段 502601H 中 14.说明下列程序段的功能。CLD MOV AX,0FEFH MOV CX,5 MOV BX,3000H MOV ES,BX MOV DI,2000H REP STOSW 答:将附加段的 32000H开始的连续 5 个字初始化为 0FEFH 15.判断下列程序段跳转的条件。(1)XOR AX,1E1EH JE EQUAL (2)TEST AL,10000001B JNZ THERE (3)CMP CX,64H JB THERE 答
22、:(1)AX 中的值为 1E1EH 时会跳转(2)AL 的最低和最高位至少有一位为 1 时发生跳转(3)CX 中的值小于 64H 时发生跳转 16.选取正确指令,完成以下任务。(1)右移 DI 三位,并将 0 移入最左一位。(2)AL内容左移一位,0 移入最后一位。(3)DX 寄存器右移一位,并且使结果的符号位与原符号位相同。答:(1)MOV CL,3 SHR DI,CL(2)SHL AL,1(3)SAR DX,1 17.假设 AX 和 SI 存放的是有符号数,DX 和 DI 存放的是无符号数,请用比较指令和条件转移指令实现以下判断。(1)若 DXDI,转到 ABOVE 执行(2)若 AXSI
23、,转到 GREA TER 执行。(3)若 CX=0,转到 ZERO 执行(4)若 AX-SI 产生溢出,转到 OVERFLOW 执行。(5)若 SIAX,转到 LESS_EQ 执行。(6)若 DIDX,转到 BELOW_EQ 执行。答:(1)CMP DX,DI JA ABOVE(2)CMP AX,SI JG GREATER(3)CMP CX,0 JE ZERO(4)CMP AX,SI JO OVERFLOW(5)CMP AX,SI JGE LESS_EQ(6)CMP DX,DI JAE BELOW_EQ 18.有一个首地址为 ARRAY 的 20 个字数组,说明下列程序段的功能。欢迎您阅读并下
24、载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV CX,20 MOV AX,0 MOV SI,AX SUM_LOOP:ADD AX,ARRAYSI ADD SI,2 LOOP SUM_LOOP MOV TOTAL,AX 答:将首地址为 ARRAY 的 20 个字数组元素求和,将结果存放到 TOTAL 单元 22.已知内存中起始地址为 BLOCK 的数据块(字节数为 COUNT)的字节数据有正有负。试编写一个程序,将其中的正、负分开,分别送至同一段中的两个缓冲区,设正、负缓冲区的首地址分别为 PLUS 和 MINUS。答:DATA SEGMENT BLOCK
25、 DB 16 DUP(?)PLUS DB 16 DUP(?)MINUS DB 16 DUP(?)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS MOV BX,OFFSET MINUS MOV CX,COUNT NEXT:MOV AL,SI TEST AL,80H JNZ MD MOV DI,AL INC DI JMP AGAIN MD:MOV BX,AL INC BX AGAIN:INC SI LOOP NEXT MO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 课后 习题 解答
限制150内