汇编语言程序设计课后习题解答

上传人:ji****72 文档编号:37982520 上传时间:2018-04-25 格式:DOC 页数:40 大小:666.33KB
返回 下载 相关 举报
汇编语言程序设计课后习题解答_第1页
第1页 / 共40页
汇编语言程序设计课后习题解答_第2页
第2页 / 共40页
汇编语言程序设计课后习题解答_第3页
第3页 / 共40页
汇编语言程序设计课后习题解答_第4页
第4页 / 共40页
汇编语言程序设计课后习题解答_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《汇编语言程序设计课后习题解答》由会员分享,可在线阅读,更多相关《汇编语言程序设计课后习题解答(40页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序设计汇编语言程序设计 (宋人杰(宋人杰 主编)课后习题解答主编)课后习题解答第第 1 章章 汇编语言基础知识汇编语言基础知识1简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机 语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: 可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O 端口等。 . 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: 通用性和可移植性较差 相对于高级语言来说

2、较繁锁、易出错、不够直观。 3CPU 的寻址能力为 8KB,那么它的地址总线的宽度为多少? 答:134. 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 开始的内存单元中存放以下数据(用十六进制形式表示)

3、: 03 06 11 A3 13 01,试分别写出 12FA:0002 的字节型数据、字型数据及双字型数据的值。 答: 字节型数据:11H字型数据:0A311H双字型数据:0113A311H 8. 内存中某单元的物理地址是 19318H,段基地址为 1916H,则段内偏移地址为多少?若 段内偏移地址为 2228H,则段基地址为多少? 答:若段基地址为 1916H,则段内偏移地址为 01B8H;若段内偏移地址为 2228H,则段基 地址为 170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB第第 2 章章 汇编语言源程序

4、格式汇编语言源程序格式1请解释变量和标号的含义,两者有何区别? 答:标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地 址符号名,在除代码段以外的其他段中定义。变量和标号的主要区别在于变量指的是数 据,而标号则对应的是指令。 2. 变量和标号有什么属性?答:都具有三种属性:段属性、偏移属性和类型属性 3. 伪指令语句与指令语句的区别是什么?伪指令有什么用途? 答:伪指令并不像指令语句那样在程序运行期间由计算机自动执行,而是在汇编程序对源程 序汇编期间由汇编程序处理的操作。伪指令可以完成如处理器选择、定义程序模块、数 据定义、存储区分配、指示程序开始和结束等功能。 4.

5、 数值返回运算符有哪几种?简述 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.106H34HF9HARR1题图 2.1(2) 见题图 2.200HARR201H3CH5DH- - -题图 2.2(3) 见题图 2.302HARR305H02H01H05H 03H02H05H02H01H05H 03H题图 2.3(4) 见题图 2.44CHARR44CH45H48H4FH题图 2.4(5) 题图 2.534HARR533H32H31H题图 2.56. 写出下列变量定义语句。(1) 为缓冲区 BUF1 预留 20B 的存储空间。 (2) 将字符串ABCD, 1234存放于 BUF2

7、存储区中。 答: (1) BUF1 DB 20 DUP(?)(2) BUF2 DB ABCDDB 1234 7. 符号定义语句如下:BUF DB 2,3,4,5,345EBUF DB 8LT DB EQU EBUF-BUF问 LT 的值是多少? 答:LT 的值为 7 8. 假设程序中的数据定义如下:A DW ?B DB 16 DUP(?)C DD ?T EQU $-A问 T 的值是多少?它表示什么意义?答:T 的值是 22;它表示从变量 A 到 T 之间分配的存储空间(字节)数目。 9. 如何规定一个程序执行的开始位置?主程序执行结束应该如何返回 DOS?源程序在何 处停止汇编过程? 答:程序

8、开始位置:END 伪指令后的标号所对应的地址;应用程序开始伪指令.STARTUP 处。返回 DOS:RET 指令结合 PUSH DS 等指令;用 DOS 功能调用的第 4CH 号中断;.EXIT 伪指令。END 伪指令处停止汇编过程。10.EQU 伪指令与“=”伪指令有何区别? 答:在同一程序中, “=”伪指令可对一个符号重复定义 11.指出下列伪指令表达方式的错误,并改正之。(1) DATA SEG(2) SEGMENT CODE(3) MYDATA SEGMENTDATA ENDS(4) MAIN PROC FAREND MAINMAIN ENDP 答:(1) SEG 改为 SEGMENT

9、(2) 没有段名(3) DATA ENDS 改为 MYDATA 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 位的位移之和。 基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)加上 变址寄存器(

11、SI,DI)的内容。 相对基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP) 和变址寄存器(SI,DI)的内容加上 8 位或 16 位的位移之和。段内直接寻址:转向的有效地址是当前 IP 寄存器的内容和指令中指定的 8 位或 16 位位 移量之和。 段内间接寻址:转向的有效地址是一个寄存器或是一个存储单元的内容。 段间直接寻址:在指令中直接提供了转向段地址和偏移地址。 段间间接寻址:用存储器里的两个相继字的内容来取代 IP 和 CS 寄存器中的原始内容, 以达到段间转移的目的。 2. 假定(DS)=1000H,(SI)=007FH,(BX)=0040H,(BP)=0

12、016H,变量 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) 寄存器相对寻址,EA=0140H,PA=10140H(4)相对基址变址寻址, EA=0195H,PA=10195H 3. 若 TABLE 为数据段 0032 单元的符号名,其中存放的内容为

13、 1234H,试问下列两条指 令有什么区别?执行完指令后,AX 寄存器的内容是什么?MOV AX,TABLELEA 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) MOV AL,300H(6) MOV SP,AX(7) MOV AX,BX+DI(8) MOV 20H,AH 答:(1) 两操作数长度不一致(2) 目的操作数不能为

14、 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(7) IN AL,3FCH (8) MUL 5 答:(1) POP 指令不允许使用 CS(2) 两操作数不能同时是存储器寻址方式(3) 堆栈的操作必须以字为单位(4) 段寄存器不允许直接参加运算(

15、5) XCHG 指令的操作数不允许是立即数(6) OUT 指令只能用 AL 做源操作数(7) 端口号大于 255,必须将其放到 DX 中(8) MUL 指令源操作数不允许是立即数 6. 请分别用一条汇编语言指令完成如下功能。(1) 把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器。(2) 用寄存器 BX 和 SI 的基址变址寻址方式把存储器的一个字节与 AL 寄存器的内容 相加,并把结果送到 AL 中。(3) 用 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和 CX 寄存器 的内容相加,并把结果送回存储器中。(4) 把数 0A0H 与 AL 寄存器的内容相

16、加,并把结果送回 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,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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号