(完整word版)8086的常见问答题
8086的常见问题
18086CPU由哪两部分构成?它们的主要功能是什么?
答:8086CPU由两部分组成:指令执行部件(EU)和总线接口部件(BIU)
指令执行部件(EU)主要由算术逻辑运算单元(ALU)、标志寄存器FR、通用寄存器组和EU控制器等4个部件组成,其主要功能是执行指令。总线接口部件(BIU)主要由地址加法器、寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或IO端口读取操作数参加EU运算或存放运算结果等。
28086CPU预取指令队列有什么好处?8086CPU内部的并行操作体现在哪里?
答:8086CPU的预取指令队列由6个字节组成,按照8086CPU的设计要求,指令执行部件(EU)在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。从速度上看,该指令队列是在CPU内部,EU从指令队列中获得指令的速度会远远超过直接从内存中读取指令。
8086CPU内部的并行操作体现在指令执行的同时,待执行的指令也同时从内存中读取,并送到指令队列。
38086CPU中有哪些寄存器?各有什么用途?
答:指令执行部件(EU)设有816位通用寄存器AXBXCXDXSPBPSIDI,主要用途是保存数据和地址(包括内存地址和I/O端口地址)。其中AXBXCXDX主要用于保存数据,BX可用于保存地址,DX还用于保存I/O端口地址;BPSIDI主要用于保存地址;SP用于保存堆栈指针。
标志寄存器FR用于存放运算结果特征和控制CPU操作。
BIU中的段寄存器包括CSDSESSS,主要用途是保存段地址,其中CS代码段寄存器中存放程序代码段起始地址的高16位,DS数据段寄存器中存放数据段起始地址的高16位,SS堆栈段寄存器中存放堆栈段起始地址的高16位,ES扩展段寄存器中存放扩展数据段起始地址的高16位。
指令指针寄存器IP始终存有相对于当前指令段起点偏移量的下一条指令,即IP总是指向下一条待执行的指令。
5.简述8086系统中物理地址的形成过程。8086系统中的物理地址最多有多少个?逻辑地址呢?
答:8086系统中的物理地址是由20根地址总线形成的。8086系统采用分段并附以地址偏移量办法形成20位的物理地址。采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是16位二进制数。通过一个20位的地址加法器将这两个地址相加形成物理地址。具体做法是16位的段基址左移4(相当于在段基址最低位后添4“0”),然后与偏移地址相加获得物理地址。
由于8086CPU的地址线是20根,所以可寻址的存储空间为1M字节,即8086系统的物理地址空间是1MB。逻辑地址由段基址和偏移地址两部分构成,都是无符号的16位二进制数,程序设计时采用逻辑地址,也是1MB
68086系统中的存储器为什么要采用分段结构?有什么好处?
答:8086CPU中的寄存器都是16位的,16位的地址只能访问64KB的内存。086系统中的物理地址是由20根地址总线形成的,要做到对20位地址空间进行访问,就需要两部分地址,在8086系统中,就是由段基址和偏移地址两部分构成。这两个地址都是16位的,将这两个地址采用相加的方式组成20位地址去访问存储器。
8086系统的地址形成中,当段地址确定后,该段的寻址范围就已经确定,其容量不大于64KB。同时,通过修改段寄存器内容,可达到逻辑段在整个1MB存储空间中浮动。各个逻辑段之间可以紧密相连,可以中间有间隔,也可以相互重叠(部分重叠,甚至完全重叠)。采用段基址和偏移地址方式组成物理地址的优点是:满足对8086系统的1MB存储空间的访问,同时在大部分指令中只要提供16位的偏移地址即可。
78086存储器中存放数据字时有rom是什么对准字非对准字之分,请说明它们的差别。
答:一个16位的数据字是按照低地址存放低位数据、高地址存放高位数据来存放的。若16位数据的低8位存放在偶地址,则该数据字就是对准字,否则就是非对准字。主要差别是CPU读取和存储数据字时,如果是对准字,只需要一次读写操作即可,而非对准字就需要两次读写操作才能实现一个数据字的存取。
9.在某系统中,已知当前(SS)=2360H,(SP)=0800H,那么该堆栈段在存储器中的物理地址范围是什么?若往堆栈中存入20个字节数据,那么SP的内容为什么值?
答:(SS×10H+(SP)=23600H0800H23E00H,堆栈段在存储器中的物理地址范围是23600H23E00H。若往堆栈中存入20个字节数据,那么SP的内容为0800H14H07ECH。(20的十六进制为14H)。
10.已知当前数据段位于存储器的B4000HC3FFFH范围内,则段寄存器DS的内容为多少?
答:段寄存器DS的内容为B4000H
118086系统中为什么一定要有地址锁存器?需要锁存哪些信息?
答:由于8086CPU受芯片封装的限制,只有40个管脚,所以地址线和数据线只能采用复用的方式共同使用某些管脚。对存储器进行访问时,在读取数据或写入数据时,存储器芯片
要求在这个过程中地址信息必须稳定提供给存储器,而由于8086CPU地址线和数据线是复用的,就不可能在同一时刻具有地址和数据的两种功能。这就需要在CPU提供地址信息时,将地址锁存起来,以保证下一个时刻当这些复用的管脚起着数据线的功能时,存储器有正确的地址信息。要锁存的信息包括这些复用管脚的地址和BHE等信号。
128086/写总线周期各包括最少几个时钟周期?什么情况下需要插入等待周期TW?插入多少个TW取决于什么因素?
答:8086/写总线周期各包括最少四个时钟周期。在系统中增加等待周期TW的一般情况是:当CPU提供了地址后,由于外设或存储器的读出或写入时间较慢,不能与CPU的速度匹配,就需要插入等待周期TW,等待CPU能从外设或存储器将数据正确地读出或写入为止。显然,插入的等待周期TW的个数取决于外设或存储器的取出或写入时间。
4 8086汇编语言程序设计
1.编写8086汇编语言程序,将寄存器AX的高8位传送到寄存器BL,低8位传送到寄存器DL
答:CODE SEGMENT
ASSUME CS:CODE
START: MOV BL,AH
MOV DL,AL
MOV AX,4C00H
INT 21H
CODE ENDS
END STAR 
2.将寄存器DX的内容按从低位到高位的顺序分成4组,并将各组数分别送到寄存器AL,BL,CLDL中。(例如:(DX)=0ABCDH,分成四组(DL)=0AH,(CL)=0BH,(BL)=0CH,(AL)=0DH
答:CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,DX
AND AL,0FH
MOV BL,DL
MOV CL,4
SHR BL,CL
AND AH,0FH
MOV CL,4
SHR DH,CL
MOV CL,AH
MOV AH,4CH
INT 21H
CODE ENDS
END START
4.试统计9个数中偶数的个数,并将结果在屏幕上显示。
答:DATA SEGMENT
BUFF DB 3BH,47H,8DH,-75,0AH,69,-2EH,0CCH,200
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUFF
MOV CX,9
XOR DL,DL
A1: SHR BYTE PTR [SI],1
JC NEXT
INC DL
NEXT: INC SI
LOOP A1
ADD DL,30H
MOV AH,2
MOV AX,4C00H
INT 21H
CODE ENDS
END START
5.试将一串16位无符号数加密,加密方法是每个数乘以2。(不考虑进位)
答:DATA SEGMENT
MEM DW 20 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。