汇编语言程序设计教程(第二版)卜艳萍著 下载本文

汇编语言程序设计教程(第二版)

习题参考答案

第1章 计算机基础知识

1. 计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。

科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。

书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。 2. 简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。 电子管、晶体管、集成电路、大规模集成电路

以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium系列

3. 计算机的字长是怎么定义的,试举例说明。

计算机能同时处理二进制信息的位宽定义为计算机的字长。如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。

4. 汇编语言中的基本数据类型有哪些?

数值型数据和非数值型数据。非数值数据如字符、字符串、逻辑值等。 5. 简述定点数和浮点数的区别。 指标 表示范围 精度 运算规则 运算速度 控制电路 成本 程序编制 溢出处理 定点数 较小 决定于数的位数 简单 快 简单,易于维护 低 选比例因子,不方便 由数值部分决定 浮点数 比定点数范围大 规格化时比定点高 运算步骤多 慢 复杂,难于维护 高 方便 由阶码大小判断 6. 按要求完成进制转换。 (1)7BCH=011110111100B=1980D (2)562Q=101110010B=370D (3)90D=01011010B=5AH

(4)1110100.111B=164.7Q=74.EH

7. 当字长为八位时,写出下列各数的原码、补码和反码 真值 25 ? 25 100 ? 100 原码 00011001 10011001 01100100 11100100 反码 00011001 11100110 01100100 10011011 补码 00011001 11100111 01100100 10011100 8. 列出数字0~9、大写字母A~Z及小写字母a~z的ASCII码值。 30H~39H 41H~5AH 61H~7AH

9. 在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?

用相应进制的数值加上进制标记即可。 二进制用B,如10101010B

1

八进制用Q,如437Q。

十进制用D或不用,如54D,或54。 十六进制用H,如27A8H

10. 完成下列二进制数的加减运算。

(1)10101010 + 11110000 (2)11001100 + 01010100 =110011010 =100100000

(3)11011010 ? 01010010 (4)11101110 ? 01001101 =10001000 =10100001 11. 完成下列十六进制数的加减运算。

(1)0FEA9 ? 8888=7621H (2)0FFFF ? 1234=EDCBH (3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H 12. 完成下列BCD码的运算。

(1)3+5 =8

0011+0101=1000 不用进行十进制调整

(2)4+7 =11

0100+0111=1011 此码不是BCD码,需要进行十进制调整 1011+0110=10001=0001,0001 (3)6+5 =11

0110+0101=1011 此码不是BCD码,需要进行十进制调整 1011+0110=10001=0001,0001 (4)8+8 =16

1000+1000=10000 此码不是BCD码,需要进行十进制调整 10000+0110=10110=0001,0110

第2章 微型计算机系统概述 1. 说明二进制位(bit),字节(byte),字(word),双字(double word)的含义及相互之

间的关系。

位(bit):一个二进制位 字节(byte):8位二进制位 字(word):一般为机器字长,在8086机器中为16位二进制位,即两个字节。 双字(double word):双倍字长,在8086机器中为32位二进制位。

2. 一台微型计算机,数据线有8根,地址线有16根,如果采用字节编址,那么它可以访

问的最大存储空间是多少字节?试用十六进制数表示该机的地址范围。 216 = 64KB,0000H~FFFFH

3. 8088CPU内部分为哪两个大的功能部件?试述这两个部件的作用是什么?

8088微处理器内部分为执行单元(EU)和总线接口单元(BIU)两部分。

BIU单元用来实现EU的所有总线操作。它由地址加法器,段寄存器CS、DS、SS、ES,指令指针IP,指令队列缓冲器和总线控制逻辑组成。BIU负责CPU与存储器或外部设备之间的信息交换。地址加法器将段和偏移地址相加,生成20位的物理地址。

EU单元负责指令的执行,由算术逻辑单元ALU、标志寄存器F、通用寄存器及EU控制器等组成,主要进行16位的各种运算及有效地址的计算。EU不与计算机系统总线相关,而从BIU中的指令队列取得指令。这个指令队列中,存放着BIU预先由存储器中取出的若干个字节的指令。

2

4. 8088微处理器中有哪些寄存器?说明它们的功能及分组情况。

5. 8086的寄存器中,有哪些16位寄存器可分为两个8位寄存器来使用?

AX(AH,AL)、BX(BH,BL)、CX(CH,CL)、DX(DH,DL)

6. 8086/8088的标志寄存器F中有哪些标志位?它们的名称和功能是什么? CF——进位标志(Carry Flag)。若CF=1,表示算术运算时产生进位或借位,否则CF=0。移位指令会影响CF。

PF——奇偶标志(Parity Flag)。若PF=1,表示操作结果中“1”的个数为偶数,否则PF=0。这个标志位主要用于检查数据传送过程中的错误。

AF——辅助进位标志(Auxiliary Carry Flag)。若AF=1表示字节运算产生低半字节向高半字节的进位或借位,否则AF=0。辅助进位也称半进位标志,主要用于BCD码运算的十进制调整。

ZF——全零标志(Zero Flag)。若ZF=1,表示操作结果全为零,否则ZF=0。 SF——符号标志(Sign Flag)。若SF=1,表示符号数运算后的结果为负数,否则SF=0。 OF——溢出标志(Overflow Flag)。若OF=1,表示当进行算术运算时,结果超过了最大范围,否则OF=0。

IF——中断允许标志(Interrupt Enable Flag)。若IF=1,则CPU可以响应外部可屏蔽中断请求;若IF=0,则CPU不允许响应中断请求。IF的状态可由中断指令设置。 DF——方向标志(Direction Flag)。若DF=1,表示执行字符串操作时按着从高地址向低地址方向进行;否则DF=0。DF位可由指令控制。 TF——单步标志(Trace Flag)。又称跟踪标志。该标志位在调试程序时可直接控制CPU的工作状态。当TF=1时为单步操作,CPU每执行一条指令就进入内部的单步中断处理,以便对指令的执行情况进行检查;若TF=0,则CPU继续执行程序。

7. 80386有哪几种工作方式?简述每种工作方式的特点。

80386有三种工作方式:实地址方式、保护方式和虚拟8086方式。

实地址方式——80386在实地址方式下的工作原理与8086相同,主要差别是80386可以处理32位的数据,如进行32位的寄存器的运算,以及偏移地址在64KB以内的32位的数据传送。另外,在实地址方式下80386新增加的两个段寄存器FS和GS是可用的。实地

3

址方式是80386复位后立即出现的工作方式。

保护方式——80386在保护方式下可以访问4G字节的物理存储空间,段的长度在启动页功能时是4G字节,不启动页功能时是1M字节,页功能是可选的。在此方式下,可以引入虚拟存储器的概念,以扩充软件所占有的存储器空间。保护方式是支持多任务的方式,提供了一系列的保护机制,如任务地址空间的分离、0~3共四个特权级、特权指令、段和页的访问权限(只读或只执行等)以及段限检查。

虚拟8086方式——这是一种既有保护功能,又能执行8086代码的工作方式,是一种动态方式。在此方式下,80386能够迅速、反复进行虚拟8086方式和保护方式的切换。从保护方式进入虚拟8086方式执行8086程序,然后离开虚拟8086方式,进入保护方式继续执行固有的80386程序。

8. 80486有哪些寄存器?简述各寄存器的功能。 基本结构寄存器组 通用寄存器 指令指针寄存器 标志寄存器 段寄存器 表2-4 80486的寄存器组 系统级寄存器组 浮点寄存器组 系统地址寄存器 控制寄存器 测试寄存器 调试寄存器 数据寄存器 标记字寄存器 指令和数据指针寄存器 控制字寄存器

9. Pentium有哪些主要的寄存器,简述各组寄存器的功能。

Pentium的寄存器组织可以分成三大类,即基本寄存器组、系统寄存器组和浮点寄存器组。其中系统寄存器组只供系统程序访问,其他两组寄存器则供系统程序和应用程序共同访问。Pentium微处理器对80486的寄存器作了一些扩充。EFLAGS标志寄存器增加了两位:VIF(位19)和VIP(位20),它们用于控制Pentium虚拟8086方式扩充部分的虚拟中断。控制寄存器CR0的CD位和NW位被重新定义以控制Pentium的片内高速缓存,并新增了CR4控制寄存器对80486结构扩充。此外,还增加了几个模式专用寄存器,用于控制可测试性、执行跟踪、性能检测和机器检查错误等功能。

10. 在8086系统中,段地址和偏移地址如下所示,请分别计算它们的物理地址。 (1)F000:0100 物理地址为:F0000H+0100H=F0100H (2)2350:1ABC物理地址为:23500H+1ABCH=24FBCH (3)3200:1234物理地址为:32000H+1234H=33234H (4)5000:010E物理地址为:50000H+010EH=5010EH (5)10E0:2020物理地址为:10E00H+2020H=12E20H (6)2010:1020物理地址为:20100H+1020H=21120H (7)1000:1000物理地址为:10000H+1000H=11000H (8)C0C0:C0C0物理地址为:C0C00H+C0C0H=CCCC0H

11. 从8086开始的所有80x86系列微机系统中,寻址内存的地址总线有多少位?内存的寻

址范围为多少?数据宽度为多少? 机型 8086 80286 80386

地址总线宽度 20位 24位 32位 内存地址范围 00000H~FFFFFH 000000H~FFFFFFH 00000000H~FFFFFFFFH 数据总线宽度 16位 16位 32位 4