汇编语言课后习题解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章汇编语言基础知识
1.简述汇编语言源程序、汇编程序、和目标程序的关系。
答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。
2. 简述汇编语言的优缺点。
答:(1) 汇编语言的优点:
①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。.
②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
③可与高级语言配合使用,应用十分广泛。
(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 A3 13
01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。
答:字节型数据:11H
字型数据:0A311H
双字型数据:0113A311H
8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少?若
段内偏移地址为2228H,则段基地址为多少?
答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH
9. 在实模式环境中,一个段最长不能超过多少字节?
答:64KB
10. 实模式可寻址的内存范围是多少?
答:1MB
第2章汇编语言源程序格式
1.请解释变量和标号的含义,两者有何区别?
答:标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地址符号名,在除代码段以外的其他段中定义。变量和标号的主要区别在于变量指的是数据,而标号则对应的是指令。 2. 变量和标号有什么属性?
答:都具有三种属性:段属性、偏移属性和类型属性
3. 伪指令语句与指令语句的区别是什么?伪指令有什么用途?
答:伪指令并不像指令语句那样在程序运行期间由计算机自动执行,而是在汇编程序对源程序汇编期间由汇编程序处理的操作。伪指令可以完成如处理器选择、定义程序模块、数据定义、存储区分配、指示程序开始和结束等功能。
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) (4) ARR4 DB ‘HELLO ’ (5) ARR% DB ‘1234’ 答:(1) 见题图2.1
06H 34H F9H
ARR1
题图2.1
(2) 见题图2.2
00H ARR2
01H 3CH 5DH - -- -
题图2.2
(3) 见题图2.3
02H ARR3
05H 02H 01H 05H 03H 02H 05H 02H 01H 05H 03H
题图2.3
(4) 见题图2.4
4CH ARR4
4CH 45H 48H 4FH
题图2.4
(5) 题图2.5
34H
ARR5
33H 32H 31H
题图2.5
6. 写出下列变量定义语句。
(1) 为缓冲区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 D
D ? T EQU $-A
问T 的值是多少?它表示什么意义?
答:T的值是22;它表示从变量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 SEGMENT
┇
DATA ENDS
(4) MAIN PROC FAR
┇
END MAIN
MAIN ENDP
答:(1) SEG改为SEGMENT
(2) 没有段名
(3) DATA ENDS改为MYDATA ENDS
(4) END MAIN删除
第3章8086/8088寻址方式及指令系统
1.什么是寻址方式,8086/8088微处理器有几种寻址方式,各类寻址方式的基本特征是什么?
答:寻址方式就是寻找指令中操作数的方式,或寻找指令转移目的地址的方式。
8086/8088微处理器的寻址方式分为数据寻址方式和程序转移寻址方式。数据寻址方式主要包括立即数寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址变址寻址方式和相对基址变址寻址方式;程序转移寻址方式主要包括段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址。
立即数寻址:操作数就在指令中,作为指令的一部分,跟在操作码后存放在代码段。
寄存器寻址:操作数在寄存器中,指令中指定寄存器号。
直接寻址方式:操作数在存储器中,指令直接包含操作数的有效地址EA。
寄存器间接寻址:操作数在存储器中,操作数的有效地址在SI,DI,BX,BP这4个寄存器之一中。
寄存器相对寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的内容加上8位或16位的位移之和。
基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)加上变址寄存器(SI,DI)的内容。