第二章 8086体系结构与80x86
1.8086由哪两部分构成?它们的主要功能是什么? 答:8086由两部分组成:指令执行部件(, )和总线接口部件(, )。指令执行部件()主要由算术逻辑运算单元()、标志寄存器、通用寄存器组和控制器等4个部件组成,其主要功能是执行指令。总线接口部件()主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或I/O端口读取操作数参加运算或存放运算结果等。
2.8086预取指令队列有什么好处?8086内部的并行操作体现在哪里?答:8086的预取指令队列由6个字节组成,按照8086的设计要求,指令执行部件()在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。从速度上看,该指令队列是在内部,从指令队列中获得指令的速度会远远超过直接从内存中读取指令。8086内部的并行操作体现在指令执行的同时,待执行的指令也同时从内存中读取,并送到指令队列。
5.简述8086系统中物理地址的形成过程。8086系统中的物理地址最多有多少个?逻辑地址呢?答:8086系统中的物理地址是由20根地址总线形成的。8086系统采用分段并附以地址偏移量办法形成20位的物理地址。采用分段结构的存储器中,
任何一个逻辑地址都由段基址和偏移地址两部分构成,都是16位二进制数。通过一个20位的地址加法器将这两个地址相加形成物理地址。具体做法是16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址。由于8086的地址线是20根,所以可寻址的存储空间为1M字节,即8086系统的物理地址空间是1。逻辑地址由段基址和偏移地址两部分构成,都是无符号的16位二进制数,程序设计时采用逻辑地址,也是1。
6.8086系统中的存储器为什么要采用分段结构?有什么好处?
答:8086中的寄存器都是16位的,16位的地址只能访问64的内存。086系统中的物理地址是由20根地址总线形成的,要做到对20位地址空间进行访问,就需要两部分地址
采用段基址和偏移地址方式组成物理地址的优点是:满足对8086系统的1存储空间的访问,同时在大部分指令中只要提供16位的偏移地址即可。
9.在某系统中,已知当前()=2360H,()=0800H,那么该堆栈段在存储器中的物理地址范围是什么?若往堆栈中存入20个字节数据,那么的内容为什么值?答:()×10H+()=23600H+0800H=23E00H,堆栈段在存储器中的物理地址范围是23600H~23E00H。若往堆栈中存入20个字节数据,那么的内容为0800H-14H=07。(20的十六进制为14H)。
10.已知当前数据段位于存储器的B4000H到C3范围内,则段寄存器的内容为多少?答:段寄存器的内容为B4000H。
11.8086系统中为什么一定要有地址锁存器?需要锁存哪些信息?
答:由于8086受芯片封装的限制,只有40个管脚,所以地址线和数据线只能采用复用的方式共同使用某些管脚。对存储器进行访问时,在读取数据或写入数据时,存储器芯片要求在这个过程中地址信息必须稳定提供给存储器,而由于8086地址线和数据线是复用的,就不可能在同一时刻具有地址和数据的两种功能。这就需要在提供地址信息时,将地址锁存起来,以保证下一个时刻当这些复用的管脚起着数据线的功能时,存储器有正确的地址信息。要锁存的信息包括这些复用管脚的地址和等信号。
12.8086读/写总线周期各包括最少几个时钟周期?什么情况下需要插入等待周期?插入多少个取决于什么因素?答:8086读/写总线周期各包括最少四个时钟周期。在系统中增加等待周期的一般情况是:当提供了地址后,由于外设或存储器的读出或写入时间较慢,不能与的速度匹配,就需要插入等待周期,等待能从外设或存储器将数据正确地读出或写入为止。显然,插入的等待周期的个数取决于外设或存储器的取出或写入时间。
13.若已知当前()=7F06H,在偏移地址为0075H开始的存储器中连续存放6个字节的数据,分别为11H,22H,33H,44H,55H和66H,请指出这些数据在存储器中的物理地址,如果要从
存储器中读出这些数据,需要设备部几次存储器?各读出哪些数据?
答:物理地址:7F06H×10H+0075H=7F0,故从7F0起6个地址数据在存储器中的地址。最少要访问四次:第一次:11。第二次:33,22。第三次:55,44。第四次:66。
14:某程序在当前数据段中存有两个数据字0和1234H,它们对应的物理地址分别为385H和40,若已知当前()=30H,请说明这两个数据的偏移地址,并用图说明它们在存储器中的存放格式。
答:偏移地址为:0485H和0。
第三章8086的指令系统
1: ,[] 寄存器寻址 寄存器间接寻址 2: ,100寄存器寻址 立即寻址 3: [] 寄存器间接 寄存器 4: [][] 基址+变址 寄存器 5: ,106H[]变址 寄存器
6: 寄存器 7: :[] 8 寄存器
2:设寄存器2000H,1500H,3200H,=0A0H,=100H,=10H,数据段中变量的偏移地址为50H,试指出下列各条指令中源操作数的寻址方式是什么?对于存储器操作数,其物理地址是多少?
(1) ,[100H]直接寻址:20100H (2) :[] 寄存器寻址
(3) ,[][]基址+变址:200F0h (4) []变址寻址:200F0h (5) ,1234[]基址寻址:205D2H (6) ,[]寄存器寻址:15010H
3.答案
(3) 3 改 (4) 改 ,3 6) ,5改 ,5 (5) ,25改 (8) 改
,25 (9) 234改 ,234H
(10) []改 []
(11) [],456H改 [],456H
(12) O错 (13) 改 (14) []改 [] (15) 错 (16) 1改 ,1或 (17) 改
4:带符号数-86所表示的二进制:10101010B 执行 ,2 和 ,1两条指令后:00010101 0
可将寄存器中D058和D11位求反,其余位不变的指令: ,0921H