② 取指是指从主存取出指令代码通过总线传输到处理器内部指令寄存器的过程。8086分成总线接口单
元和指令执行单元,可以独立操作。在执行单元执行一条指令的同时,总线接口单元可以读取下一条指令,等到执行时不需要进行取指了,所以称为预取。
③ Pentium采用分离的Cache结构,一个用做指令Cache,一个用做数据Cache。 ④ 堆栈的存取原则是先进后出(也称为后进先出)操作方式存取数据。
⑤ 标志寄存器主要保存反映指令执行结果和控制指令执行形式的有关状态。 ⑥ 执行了一条加法指令后,发现ZF=1,表明运算结果为0。 ⑦ 没有。
⑧ 汇编语言的标识符大小写不敏感,即表示字母大小写不同、但表示同一个符号。 ⑨ 不会。
⑩ 指令的操作数需要通过存储器地址或I/O地址,才能查找到数据本身,故称数据寻址方式。 〔习题2.2〕判断题
(1)程序计数器PC或指令指针EIP寄存器属于通用寄存器。
(2)处理器的指令译码是将指令代码翻译成它代表的功能的过程,与数字电路的译码器是不同的概念。 (3)EAX也被称为累加器,因为它使用最频繁。
(4)处理器的传送指令MOV属于汇编语言的执行性语句。
(5)汇编语言的语句由明显的4部分组成,不需要分隔符区别。
(6)80减90(80-90)需要借位,所以执行结束后,进位标志CF=1。 (7)MASM汇编语言的注释用分号开始,但不能用中文分号。 (8)IA-32处理器在实地址方式下,不能使用32位寄存器。 (9)存储器寻址方式的操作数当然在主存了。
(10)保护方式下,段基地址加偏移地址就是线性地址或物理地址。
〔解答〕
① 错 ② 对 ③ 对 ④ 对 ⑤ 错 ⑥ 对 ⑦ 对 ⑧ 错 ⑨ 对 ⑩ 对 〔习题2.3〕填空题
(1)寄存器EDX是__________位的,其中低16位的名称是__________,还可以分成两个8位的寄存
器,其中D8~D15部分可以用名称__________表示。
(2)IA-32处理器在保护方式下,段寄存器是__________位的。
(3)逻辑地址由__________和__________两部分组成。代码段中下一条要执行的指令由CS和
__________寄存器指示,后者在实地址模型中起作用的仅有__________寄存器部分。
(4)进行8位二进制数加法:10111010+01101100,8位结果是__________,标志PF=__________。 (5)在实地址工作方式下,逻辑地址“7380H∶400H”表示的物理地址是__________,并且该段起始
于__________物理地址。
(6)IA-32处理器有8个32位通用寄存器,其中EAX,__________,__________和EDX,可以分成
16位和8位操作;还有另外4个是__________,__________,__________,和__________。
(7)IA-32处理器复位后,首先进入是__________工作方式。该工作方式分段最大不超过__________。 (8)MASM要求汇编语言源程序文件的扩展名是_____________,汇编产生扩展名为OBJ的文件被称
为_____________文件,编写32位Windows应用程序应选择_____________存储模型。
(9)除外设数据外的数据寻址方式有3类,分别被称为_____________、_____________和
_____________。
(10)用EBX做基地址指令,默认采用__________段寄存器指向的数据段;如果采用BP,EBP或SP,
ESP作为基地址指针,默认使用__________段寄存器指向堆栈段。 〔解答〕
① 32,DX,DH ② 16
③ 段地址,偏移地址,EIP,IP ④ 00100110,0
⑤ 73C00H,73800H
⑥ EBX,ECX,ESI,EDI,EBP,ESP ⑦ 实地址,64KB
⑧ ASM,目标模块,FLAT
- -5
⑨ 立即数寻址、寄存器寻址和存储器寻址 ⑩ DS,SS
〔习题2.4〕处理器内部具有哪3个基本部分?8086分为哪两大功能部件?其各自的主要功能是什么? 〔解答〕
处理器内部有ALU、寄存器和指令处理三个基本单元。 8086有两大功能部件:总线接口单元和执行单元。
总线接口单元:管理着8086与系统总线的接口,负责处理器对存储器和外设进行访问。8086所有对外
操作必须通过BIU和这些总线进行。
执行单元EU:负责指令译码、数据运算和指令执行。
〔习题2.5〕8086怎样实现了最简单的指令流水线?
〔解答〕
8086中,指令的读取是在BIU单元,而指令的执行是在EU单元。因为BIU和EU两个单元相互独立、
分别完成各自操作,所以可以并行操作。也就是说,在EU单元对一个指令进行译码执行时,BIU单元可以同时对后续指令进行读取;这就是最简单的指令流水线技术。 〔习题2.6〕
什么是标志?什么是IA-32处理器的状态标志、控制标志和系统标志?说明状态标志在标志寄存器
EFLAGS的位置和含义。
〔解答〕
标志:用于反映指令执行结果或控制指令执行形式的一个或多个二进制数位。例如,有些指令执行后会
影响有关标志位;有些指令的执行要利用相关标志。
状态标志:用来记录程序运行结果的状态信息。 控制标志:DF标志,控制字符串操作的地址方向。 系统标志:用于控制处理器执行指令的方式。
状态标志在标志寄存器EFLAGS中的位置和含义如下: 31 11 10 9 8 7 6 5 4 3 2 1 0
……
〔习题2.7〕举例说明CF和OF标志的差异。
〔解答〕
进位标志CF表示无符号数运算结果是否超出范围,超出范围后加上进位或借位,运算结果仍然正确;
溢出标志OF表示有符号数运算结果是否超出范围,如果超出范围,运算结果已经不正确。
例1:3AH + 7CH=B6H
无符号数运算:58+124=182,范围内,无进位。 有符号数运算:58+124=182,范围外,有溢出。 例2:AAH + 7CH=①26H
无符号数运算:170+124=294,范围外,有进位。 有符号数运算:-86+124=28 ,范围内,无溢出。
〔习题2.8〕什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达(均为十六进制形式):
① FFFF∶0 ② 40∶17 ③ 2000∶4500 ④ B821∶4567
OF SF ZF AF PF CF - -6
〔解答〕
物理地址:在处理器地址总线上输出的地址称为物理地址。每个存储单元有一个唯一的物理地址。 逻辑地址:在处理器内部、程序员编程时采用逻辑地址,采用“段地址:偏移地址“形式。某个存储单
元可以有多个逻辑地址,即处于不同起点的逻辑段中,但其物理地址是唯一的。
逻辑地址转换成物理地址:逻辑地址由处理器在输出之前转换为物理地址。将逻辑地址中的段地址左移
二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地址。
① FFFFH:0=FFFF0H ② 40H:17H=00417H
③ 2000H:4500H=24500H ④ B821H:4567H=BC777H
〔习题2.9〕IA-32处理器有哪三类基本段,各是什么用途?
〔解答〕
IA-32处理器有代码段、数据段、堆栈段三类基本段。
代码段:存放程序的指令代码。程序的指令代码必须安排在代码段,否则将无法正常执行。
数据段:存放当前运行程序所用的数据。程序中的数据默认是存放在数据段,也可以存放在其他逻辑段
中。
堆栈段:主存中堆栈所在的区域。程序使用的堆栈一定在堆栈段。
〔习题2.10〕什么是平展存储模型、段式存储模型和实地址存储模型?
〔解答〕
平展存储模型下,对程序来说存储器是一个连续的地址空间,称为线性地址空间。程序需要的代码、数
据和堆栈都包含在这个地址空间中。
段式存储模型下,对程序来说存储器由一组独立的地址空间组成,独立的地址空间称为段。通常,代码、
数据和堆栈位于分开的段中。
实地址存储模型是8086处理器的存储模型。它是段式存储模型的特例,其线性地址空间最大为1MB容
量,由最大为64KB的多个段组成。
〔习题2.11〕什么是实地址方式、保护方式和虚拟8086方式?它们分别使用什么存储模型?
〔解答〕
实地址方式:与8086具有相同的基本结构,只能寻址1MB物理存储器空间,逻辑段最大不超过64KB;
但可以使用32位寄存器、32位操作数和32位寻址方式;相当于可以进行32位处理的快速8086。实地址工作方式只能支持实地址存储模型。
保护方式:具有强大的段页式存储管理和特权与保护能力,使用全部32条地址总线,可寻址4GB物理
存储器。保护方式通过描述符实现分段存储管理,每个逻辑段可达4GB。处理器工作在保护方式时,可以使用平展或段式存储模型。
虚拟8086方式:在保护方式下运行的类似实方式的运行环境,只能在1MB存储空间下使用“16位段”。
处理器工作在虚拟8086方式时,只能使用实地址存储模型。
〔习题2.12〕汇编语句有哪两种,每个语句由哪4个部分组成?
〔解答〕
汇编语句有两种:执行性语句(处理器指令)、说明性语句(伪指令)。 每个语句有:标号、指令助记符、操作数或参数、注释4个部分组成。
- -7
〔习题2.13〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕
汇编语言程序的开发有4个步骤:
编辑:用文本编辑器形成一个以ASM为扩展名的源程序文件。 汇编:用汇编程序将ASM文件转换为OBJ模块文件。
连接:用连接程序将一个或多个目标文件链接成一个EXE或COM可执行文件。 调试:用调试程序排除错误,生成正确的可执行文件。
〔习题2.14〕MASM汇编语言中,下面哪些是程序员可以使用的正确的标识符。
FFH,DS,0xvab,Again,next,@data,h_ascii,6364b,.exit,small
〔解答〕
FFH,Again,next,h_ascii
〔习题2.15〕给出IA-32处理器的32位寻址方式和16位寻址方式的组成公式,并说明各部分作用。 〔解答〕
① 32位存储器寻址方式的组成公式
32位有效地址 = 基址寄存器+(变址寄存器×比例)+位移量 其中的4个组成部分是:
·基址寄存器??任何8个32位通用寄存器之一;
·变址寄存器??除ESP之外的任何32位通用寄存器之一;
·比例??可以是1,2,4或8(因为操作数的长度可以是1,2,4或8字节); ·位移量??可以是8或32位有符号值。 ② 16位存储器寻址方式的组成公式
16位有效地址 = 基址寄存器+变址寄存器+位移量
其中基址寄存器只能是BX或BP,变址寄存器只能是SI或DI,位移量是8或16位有符号值 〔习题2.16〕说明下列指令中源操作数的寻址方式?假设VARD是一个双字变量。
(1)mov edx,1234h (2)mov edx,vard (3)mov edx,ebx (4)mov edx,[ebx]
(5)mov edx,[ebx+1234h] (6)mov edx,vard[ebx] (7)mov edx,[ebx+edi]
(8)mov edx,[ebx+edi+1234h] (9)mov edx,vard[esi+edi] (10)mov edx,[ebp*4]
〔解答〕
① 立即数 ② 直接 ③ 寄存器 ④ 寄存器间接 ⑤ 寄存器相对 ⑥ 寄存器相对 ⑦ 基址变址 ⑧ 相对基址变址
- -8