汇编习题解答
2.1 8086 CPU共有哪些16位寄存器?其中哪些16位寄存器可分为二个8位寄存器来使用?
参考答案:8086 CPU共有AX、BX、CX、DX、SI、DI、SP、BP、IP、FLAGS、CS、DS、ES、SS共14个16位的寄存器。其中AX、BX、CX、DX可分为二个8位寄存器来使用
2.2 简述8086 CPU各通用寄存器的主要功能?
参考答案:8086 CPU包含AX、BX、CX、DX、SI、DI、SP、BP共8个通用寄存器。其中AX主要用在字的乘、除法,输入/输出指令中;BX主要在寄存器间接寻址和XLAT指令中作基址寄存器使用;CX主要在串操作指令和LOOP指令中作计数器使用;DX主要在字的乘除法指令和输入/输出指令中使用;SI主要在字符串操作指令中作源变址寄存器使用;DI主要在字符串操作指令中作目的变址寄存器使用;SP主要在堆栈操作中作堆栈指针使用;BP主要在寄存器间接寻址中作基址指针使用 。
2.3 8086 CPU的标志寄存器有几个状态标志位?几个控制标志位?它们各自的含义和作用是什么?在Debug环境下,对应的用什么符号来表示之?
参考答案:8086 CPU的标志寄存器有6个状态标志位,有3个控制标志位。
其中CF进位标志位主要用来反映运算结果是否产生进位或借位,如果运算结果的最高位向前产生了一个进位(加法)或借位(减法),则其值为1,否则其值为0;PF奇偶标志位用于反映运算结果中低8位含有“1”的个数的奇偶性,如果“1”的个数为偶数,则PF的值为1,否则为0;AF辅助进位标志位表示加法或减法运算结果中D3位向D4位产生进位或借位的情况,有进位(借位)时AF=1;无进位(借位)时AF=0;ZF零标志位用来反映运算结果是否为0,如果运算结果为0,则其值为1,否则其值为0;SF用来反映运算结果的符号位,当运算结果为负数时,SF的值为1,否则其值为0;OF溢出标志位用于反映带符号数运算所得结果是否溢出,如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
IF中断允许标志位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求,当IF=1时,CPU响应;当IF=0时,CPU不响应。DF方向标志位用来控制串操作指令中地址指针的变化方向。在串操作指令中,当DF=0时,地址指针为自动增量,即由低地址向高地址变化;当DF=1时,地址指针自动减量,即由高地址向低地址变化。TF追踪标志位被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。
在Debug环境下,对应的表示符号如下表
标志位 |
OF |
DF |
IF |
SF |
ZF |
AF |
PF |
CF |
状 态 |
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
显 示 |
OV/NV |
DN/UP |
EI/DI |
NG/PL |
ZR/NZ |
AC/NA |
PE/PO |
CY/NC |
2.4 默认情况下,哪些寄存器可用于读取堆栈段的数据?
参考答案:SP和BP
2.5有效地址就是偏移地址的说法正确吗?
参考答案:正确
2.6假设用以下寄存器组合来访问存储单元,试求出它们所访问单元的物理地址。
(1)DS=1000H和DI=F000H (2)SS=C300H和BP=3200H (3)DS=A000H和BX=1000H
参考答案:(1)物理地址=1000H*16+ F000H= 1F000H
(2)物理地址=C300H*16+3200H=C6200H
(3)物理地址=A000H*16+1000H=A1000H
2.7 8086 微机最大可编址的存储空间是多少?它是由什么决定的?
参考答案:8086 微机最大可编址的存储空间是1MB,由CPU的地址线条数决定。
2.8 给出下列8位数据在执行加法运算后,CF、OF、SF、ZF的值。
(1)EFH+2 (2)80H+80H (3)F9H+63H
参考答案:
(1)EFH+2=F1H CF= 0 OF=0 SF=1 ZF=0
(2)80H+80H=00H CF= 1 OF=1 SF=0 ZF=1
(3)F9H+63H=5CH CF= 1 OF=0 SF=0 ZF=0
2.9给出2.8中的每小题在执行减法运算后,CF、OF、SF、ZF的值。
参考答案:
(1)EFH-2=EDH CF= 0 OF=0 SF=1 ZF=0
(2)80H-80H=00H CF= 0 OF=0 SF=0 ZF=1
(3)F9H-63H=96H CF= 0 OF=0 SF=1 ZF=0
2.10 简要说明8086 CPU的内部结构及各部分的作用。
参考答案:8086 CPU的内部结构分为两大部分,分别为总线接口部件BIU和执行部件EU。BIU负责取指令;EU负责指令的执行。
2.11解释说明逻辑地址、偏移地址、有效地址和物理地址的含义。
参考答案:逻辑地址:是用户程序设计时所采用的地址,其表示形式为“段地址:偏移地址”。
偏移地址:是指某存储单元距离本段段地址的偏移量(距离),偏移地址值最大不超过FFFFH。
有效地址即为偏移地址。
物理地址:对于CPU的20条地址线所形成的1MB个存储单元(从小到大范围为00000H~FFFFFH)就是存储单元的物理地址,每一个存储单元都有惟一的一个物理地址。
2.12 8086 CPU的最大工作模式和最小工作模式的主要区别是什么?如何进行控制?
参考答案:主要区别反映在提供微处理器的数量及总线控制信号的产生。由引脚MN/MX来控制。
2.13试解释时钟周期、总线周期和指令周期的概念。并结合指令“ADD [2000H],BX”,说明执行该指令需要几个总线周期?属于什么样的总线周期?
参考答案:时钟周期为一个时钟脉冲的时间长度,是CPU的基本时间计量单位。
总线周期:是CPU通过总线对存储器或I/O接口进行一次访问所需要的时间,一个基本的总线周期由4个T状态构成,分别称为T1、T2、T3和T4。
指令周期:CPU执行一条指令所需要的时间,不同指令的指令周期是不等长的。
指令“ADD [2000H],BX”共需要3个总线周期,分别为:存储器读、存储器读和存储器写。
2.17 8086 CPU按每个逻辑段最大为64KB划分,最多可分为多少个?最少可分为多少个?各段之间的关系如何?每个段寄存器的作用是什么?
参考答案:8086 CPU按每个逻辑段最大为64KB划分,最多可划分成64K个逻辑段?最少可划分成16个逻辑段。