第4章指令系统层习题参考解答-汇编语言与计算机组成原理 答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.什么是“程序可见”的寄存器?
程序可见寄存器是指在用户程序中用到的寄存器,它们由指令来指定。
2. 80x86微处理器的基本结构寄存器组包括那些寄存器?各有何用途?
基本结构寄存器组按用途分为通用寄存器、专用寄存器和段寄存器3类。
通用寄存器存放操作数或用作地址指针;专用寄存器有EIP和EFLAGS,分别存放将要执行的下一条指令的偏移地址和条件码标志、控制标志和系统标志;段寄存器存放段基址或段选择子。
3.80x86微处理器标志寄存器中各标志位有什么意义?
常用的7位:
CF进位标志: 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。在移位类指令中,CF用来存放移出的代码(0或1)。
PF奇偶标志: 为机器中传送信息时可能产生的代码出错情况提供检验条件。 当操作结果的最低位字节中1的个数为偶数时置1,否则置0。
AF辅助进位标志: 在进行算术运算时,如低字节中低4位(第3位向第4位)产生进位或借位时,则AF置1;否则AF置0。
ZF零标志:如指令执行结果各位全为0时,则ZF置1;否则ZF置0。
SF符号标志:其值等于运算结果的最高位。 如果把指令执行结果看作带符号数,就是结果为负,SF置1;结果为正,SF置0。
OF溢出标志: 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。
DF方向标志: 用于串处理指令中控制处理信息的方向。 当DF位为1时,每次操作后使变址寄存器SI和DI减小;当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。
4.画出示意图,简述实模式下存储器寻址的过程。
20位物理地址如下计算(CPU中自动完成):10H×段基址+偏移地址=物理地址
5. 画出示意图,简述保护模式下(无分页机制)存储器寻址的过程。
采用对用户程序透明的机制由选择子从描述子表中选择相应的描述子,得到欲访问段的段基址、段限等有关信息,再根据偏移地址访问目标存储单元。
6. 比较实模式和保护模式下的逻辑地址的异同。
相同:逻辑地址均由存放于16位段寄存器的信息和偏移地址两部分组成。
不同:实模式下,段寄存器存放段基址,偏移地址16位;保护模式下,段寄存器存放段选择子,偏移地址32位
7. 保护模式下,段描述子表有几种?它们分别是什么?它们的作用又分别是什么?
共有三种描述子表:
全局描述子表(GDT) GDT中包含了操作系统和除中断服务程序所在段以外的各任务公用的描述子,通常包括了使用的代码段、数据段、TSS和系统中各个LDT所在段的描述子,一个系统只能有一个GDT。
局部描述子表(LDT) LDT用于存放各个任务私有的描述子,通常每个任务有一个独立LDT。
中断描述子表(IDT) IDT包含中断服务程序位置的描述子,最多256个。系统所使用的每种类型的中断在IDT中必须有一个描述子项,通过中断指令、外部中断和异常事件来访问。
8. 请写出一个Pentium 4的内存段的段描述子。该内存起始地址是03000000H,结束地址是05FFFFFFH;该内存段是一个用户程序的可写的数据段。
0310 9200 0000 2FFFH
9. 80386的段描述子中段基址为10000000H,段限为001FFH,计算在G=0和1两种情形下该段的起始地址和结束地址。
开始地址均是10000000H
结束地址: G=0 10000000H + 001FFH = 100001FFH
G=1 10000000H + 001FFFFFH = 101FFFFFH
10. 系统工作于实模式下,假定(DS)=2000H,(ES)=2100H,(SS)=1500H, (SI)=00A0H, (BX)=0100H,(BP)=0100H,试指出下列指令源操作数的寻址方式和物理地址:
① MOV AX,0BAH ② MOV AX,[100H]
③ MOV AX,[BX+SI] ④ MOV AX,ES:[BX]
⑤ MOV AX,[BP] ⑥ MOV AX,BP
⑦ MOV AX,[BX+5] ⑧ MOV AX,[BX+SI+5]
①立即寻址
②直接寻址,20100H
③基址变址,201A0H
④寄存器间接寻址,21100H
⑤寄存器间接寻址,20100H
⑥寄存器寻址
⑦寄存器相对寻址,20105H
⑧基址变址寻址,201A5H
11. 系统工作于实模式下,假定(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H。试指出下列指令中内存操作数的寻址方式和物理地址:
① MOV ECX,[EAX+EBX] 基址变址寻址,00003100H
② MOV [EAX+2*EBX],CL 基址比例变址寻址,00005100H
③ MOV DH,[EBX+4*EAX+1000H] 基址比例变址寻址,00007100H
12. 写出把首地址为TABLE的字数组的第5个字送到DX寄存器的指令(或指令序列)。 要求使用以下几种寻址方式:
① 寄存器间接寻址
② 寄存器相对寻址
③ 基址变址寻址
①MOV DX, TABLE[8]
②MOV SI, 8
MOV DX,TABLE[SI]
③MOV BX, OFFSET TABLE
MOV SI, 8
MOV DX, [BX+SI]
13. 系统工作于实模式下,(SS)=0100H, (SP)=00FEH。试画出执行下列程序段后,堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址):
MOV AX,1234H
MOV
BX,5678H
AX
PUSH
BX
PUSH
POP CX
执行后,(SP)=00FCH, 如下图所示:
010FAH 78H
010FBH 56H
SP→ 010FCH 34H
010FDH 12H
14.比较两条指令MOV DI,[1000H]和LEA DI,[1000H]。
MOV DI, [1000H] 将数据段偏移地址为1000H的字单元数据传送到DI;LEA DI,[1000H] 是把偏移地址值1000H传送到DI。