部分,主要用来驱动输入输出设备,也负责系统的上电检测,磁盘引导等初始化操作,在ROM--BIOS中还有CMOS微机设置程序以及使用的字符图符信息等内容。
〔习题1.15〕罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。
〔解答〕
(1)数据寄存器:AX称为累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;BX称为基址寄存器,常用做存放存储器地址;CX称为计数器,作为循环和串操作等指令中的隐含计数器;DX称为数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。
(2)指针及变址寄存器包括SI,DI,BP,S P,四个寄存器,常用于存储器寻址时提供地址。SI是源变址寄存器,DI是目的变址寄存器,一般与DS联用确定数据段和附加段中某一存储单元地址,在串指令中,SI与DS联用、DI和ES联用,分别寻址数据段和附加段;同时,在串指令中,SI和DI还都具有自动增量或减量的功能。S P,为堆栈指针寄存器,指示栈顶的偏移地址;BP为基地址指针寄存器,表示堆栈段中的基地址。S P与BP寄存器均可与SS段寄存器联合使用以确定堆栈段中的存储单元地址。
〔习题1.16〕什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。
〔解答〕
标志用于反映指令执行结果或控制指令执行形式。它是汇编语言程序设计中必须特别注意的一个方面,状态用来记录运行的结果的状态信息,许多指令的执
- 9 -
行都将相应地设置它,控制标志位可由程序根据需要用指令设置,用来控制处理器执行指令的方式。
CF是进位标志;ZF 是零标志;SF是符号标志;PF奇偶标志;OF溢出标志;AF辅助进位标志;DF方向标志;IF中断允许标志;TF陷阱标志。
〔习题1.17〕举例说明CF和OF标志的差异。 〔解答〕
溢出标志OF和进位标志CF是两个意义不同的标志。
进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。
例1:3AH + 7CH=B6H
无符号数运算:58+124=182,范围内,无进位 有符号数运算: 58+124=182 ,范围外,有溢出 例2:AAH + 7CH=(1)26H
无符号数运算:170+124=294,范围外,有进位 有符号数运算:-86+124=28 ,范围内,无溢出
〔习题1.18〕字和双字在存储器中如何存放,什么是“小端方式”?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?
〔解答〕
字或双字在存储器中占相邻的2个或4个存储单元;存放时,低字节存入低地址,高字节存入高地址;字或双字单元的地址用它的低地址来表示。80x86处理器采用的这种“低对低,高对高”的存储形式,被称为“小端方式”;将字
- 10 -
单元安排在偶地址,双字节单元安排在模4地址,被称为“地址对齐方式”因为对于不对齐地址的数据,处理器访问时,需要额外的访问时间,所以通常应该将数据的地址对齐,以取得较高的存取速度。
〔习题1.19〕什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:
(1)FFFFh:0 (2)40h:17h (3)2000h:4500h (4)B821h:4567h 〔解答〕
在8086处理器中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H~FFFFFH。
在8086内部和用户编程时,采用的段基地址 : 段内偏移地址形式称为逻辑地址。
将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地址
如下逻辑地址用物理地址表达: (1)FFFFh:0=FFFF0H (2)40h:17h=00417H (3)2000h:4500h=24500H
(4)B821h:4567h=BC777H (不要算错)
〔习题1.20〕8086有哪4种逻辑段,各种逻辑段分别是什么用途? 〔解答〕
代码段(Code Segment)用来存放程序的指令序列。处理器利用CS : IP取得下一条要执行的指令。
- 11 -
堆栈段(Stack Segment)确定堆栈所在的主存区域。处理器利用SS : SP操作堆栈中的数据。
数据段(Data Segment)存放当前运行程序所用的数据。处理器利用DS : EA存取数据段中的数据。
附加段(Extra Segment)是附加的数据段,也用于数据的保存。处理器利用ES : EA存取数据段中的数据
〔习题1.21〕数据的默认段是哪个,是否允许其他段存放数据?如果允许,如何实现,有什么要求?
〔解答〕
数据的默认段是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段,允许其它段存放数据,数据的存放比较灵活的,实际上可以存放在任何一种逻辑段中,这时,只要明确指明是哪个逻辑段就可以了。
〔习题1.22〕什么是操作码、操作数和寻址方式?有哪三种给出操作数的方法?
〔解答〕
操作码说明计算机要执行哪种操作,它是指令中不可缺少的组成部分,操作数是指令执行的参与者,也是各种操作的对象,我们把寻找数的方式叫做操作数的寻址方式。给出操作数的三种方法是直接给出,间接给出,隐藏操作数方式给出。
〔习题1.23〕什么是有效地址EA?8086的操作数如果在主存中,有哪些寻址方式可以存取它?
〔解答〕
- 12 -

