8086与80386微处理器的通用寄存器有何不同,为什么?
因为数据总线宽度不同,8086的数据总线是16位的,80386的数据总线是32位的,所以
8086的通用寄存器是16的,包括AX、BX、CX、DX、SI、DI、BP、SP,而80386的通用寄存器是32位的,包括EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。
为了和8086兼容,32位寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP的低16位可以当做16位寄存器来使用,分别是AX、BX、CX、DX、SI、DI、BP、SP,
同时为了支持8位操作,EAX、EBX、ECX、EDX的低16位可以分别当做2个8位寄存器使用,即AH、AL、BH、BL、CH、CL、DH、DL。
CF(Carry Flag)——进位标志位。当执行一个加法(或减法)运算,使最高位产生进位(或借位)时,CF为1;否则为0。
PF(Parity Flag)——奇偶标志位。该标志位反映运算结果中1的个数是偶数还是奇数。当指令执行结果的低8位中含有偶数个1时,PF=1;否则PF=0。
AF(Auxiliary carry Flag)——辅助进位标志位。当执行一个加法(或减法)运算,使结果的低4位向高4位有进位(或借位)时,AF=1;否则AF=0。
ZF(Zero Flag)——零标志位。若当前的运算结果为零,ZF=1;否则ZF=0。
SF(Sign Flag)——符号标志位。它和运算结果的最高位相同。
OF(Overflow Flag)——溢出标志位。当补码运算有溢出时,OF=1;否则OF=0。
(2) 3个控制标志位用来控制CPU的操作,由指令进行置位和复位。
DF(Direction Flag)——方向标志位。它用以指定字符串处理时的方向,当该位置“1”时,字符串以递减顺序处理,即地址以从高到低顺序递减。反之,则以递增顺序处理。
IF(Interrupt enable Flag)——中断允许标志位。它用来控制8086是否允许接收外部中断请求。若IF=1,8086能响应外部中断,反之则不响应外部中断。
注意:IF的状态不影响非屏蔽中断请求(NMI)和CPU内部中断请求。
TF(Trap Flag)——跟踪标志位。它是为调试程序而设定的陷阱控制位。当该位置“1”时,8086 CPU处于单步状态,此时CPU每执行完一条指令就自动产生一次内部中断。
当该位复位后,CPU恢复正常工作。
段寄存器有什么作用,为什么在32位微处理器中段寄存器仍是16位的?
段寄存器是存放段地址的,段地址是十六位的,所以,段寄存器是16位的。
简述8086引脚信号中M/IO,DT/R,RD,WR,ALE,DEN和BHE的作用。?
答:M/IO:输出信号,高电平时,表示CPU与存储器之间数据传输;低电平时,表示CPU与I/O设备之间数据传输。
DT/R:控制其数据传输方向的信号。DT/R=1时,进行数据发送;DT/R=0时,进行数据接收。
RD:CPU的读信号,RD=0时,表示8086为存储口或I/O端口读操作。 WR:CPU的写信号,WR =0时,表示8086为存储口或I/O端口写操作。 ALE:地址存锁信号,在T1能时刻有效。
DEN:数据选通信号,当DEN有效时,表示允许传输。
BHE:数据总线允许信号,与A0组合使用,表示是否访问奇地址字节
什么是双重总线?以AD15~D0引脚说明双重总线的功能是 怎样实现的?
答:常把分时复用的总线称为双重总线,如某一时刻总线上出现 的是地址,另一时刻,总线上出现的是数据或状态(控制)信号。 8086CPU的AD15~AD0引脚,是地址/数据复用引脚。在总线周 期的T1时刻,它们传送地址信息,在总线的T2、T3、TW和T4时刻 时,用来传送数据信息。
试说明8086的最小方式和最大方式的区别. ?
答: 8086微处理器有两种工作方式: 在最小方式下,由8086提供系统所需要的全部控制 信号,用 以构成一个单处理器系统。此时MN/MX*线接VCC(高电平)。 在最大方式下,系统的总线控制信号由专用总线控制器8288 提供,构成一个多处理机或协处理机系统。此时MN/MX*线接地
什么叫总线周期、时钟周期、指令周期?它们之间一般有什么关系
时钟周期是系统工作的最小时间单位,它由计算机主频决定;总线周期指总线上两个设备进行一次信息传输所需要的时间(如CPU对存储器或I/O端口进行一次读/写操作所需的时间);指令周期指CPU执行一条指令所需要的时间。
三者之间的关系是:时钟周期是基本动作单位;一个总线周期通常由n个时钟周期组成;而一个指令周期中可能包含有一个或几个总线周期,也可能一个总线周期都没有,这取决于该指令的功能。
3. 1. 设,DS=1000H:SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(1135OH)=OA5H,(11351H)=3CH,(11352H)=OFFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H 下列各指令都在此环境下执行,在下列各小题的空格中填入相应各指令的执行结果。
(1) MOV AX,1352H
AX=?
(2) MOV AX,[1352H]
AX= ?
(3) MOV 0150H[BX],CH
(11350H)=?,(11351H)= ? (4) MOV AX,0150H[BP]
AX=?
(5) POP AX
AX= ,SP=
(6) ADD[SI],CX
(11354H)= ,(11355H)= ,SF= ZF= ,PF= ,CF= ,OF= (7) SUB BH,0150H[BX][SI]
BH= ,SF= ,ZF= , PF= ,CF= ,OF=
(8) INC BYTE PTR 0152H[BX]
(11352H)= ,(11353H)=?,CF=?
(9) INC WORD PTR 0152H[BX]
(11352H)= ,(11353H)= ,CF=
(10) SAR BYTE PTR 0150H[BX],1
(11350H)= ,CF= ,OF= (11) SAL BYTE PTR 0150H[BX],
(11350H)= ,CF= ,OF=
解: (1) AX=1352H
(2) AX=26FFH
(3) [11350H]=33H; [11351H]=3CH
(4) AX=5188H
(5) AX=5188H SP=1352H
(6) [11354H]=ECH; [11355H]=1AH; SF==ZF=PF=OF=0; CF=1
(7) BH=75H; SF==ZF=PF=OF=0; CF=1
(8) [11352H]=00H; [11353H]=26H; CF不变
(9) [11352H]=00H; [11353H]=27H; CF不变
(10) [11350H]=D2H; CF=1; OF=0
(11) [11350H]=4AH; CF=1; OF=1
3.2 阅读下列各小题的指令序列,在后面空格中填入该指令序列的执行结果。
(1)MOV BL, 85H ; BL=85H
MOV AL, 17H ; AL=17H
ADD AL, BL ;
AL=9CH 9C+06=A2+60=02
DAA ;
AL=02H
AL=__02H__, BL=_85H___,CF=__1___
(2) MOV AX, BX ; AX=BX (=0001)
NOT AX ; AX=BX (=1110)
ADD AX, BX; AX= BX+BX=FFFFH CF=0
INC AX ;AX=0
AX= 0 , CF= 0
(3) MOV AX, 0FF60H ;AX= FF60H
STC ; CF=1
MOV DX , 96 ; DX=0060H
XOR DH , 0FFH ;
DH=FFH ,DX=FF60H, CF=0
SBB AX , DX ; AX=0000H,CF=0
AX= 0000H , CF= 0
(4) MOV BX , 0FFFEH ;BX=FFFEH
MOV CL , 2 ;CL=2 1110
SAR BX , CL ; BX=FFFFH
BX= FFFFH , CF= 1
3.3,
AND AL , AL
JZ BRCH1
RCR AL , 1
JZ BRCH2
RCL AL, 1
INC AL
JZ BRCH3
…
上书程序运行后,试回答:
(1)当(AL)= 0 时,程序转向BRCH1
AND AL , AL;AL=0,ZF=1
JZ BRCH1; ZF=1,转BRCH1
RCR AL , 1
JZ BRCH2
RCL AL, 1
INC AL
JZ BRCH3
(2)当(AL)= 01 时,程序转向BRCH2
AND AL , AL ;AL=01H,ZF=0,CF=0
JZ BRCH1; ZF=0,不转BRCH1
RCR AL , 1;AL=0 , ZF=1
JZ BRCH2 ; ZF=1,转BRCH2
RCL AL, 1
INC AL
JZ BRCH3
(3)当(AL)= FFH 时,程序转向BRCH3
AND AL , AL ;AL=FFH,ZF=0,CF=0
JZ BRCH1; ZF=0,不
转BRCH1
RCR AL , 1;AL=7FH , ZF=0 ,CF=1
1111 1111
0111 1111 CF=1
JZ BRCH2 ; ZF=0,不转BRCH2
RCL AL, 1;AL=FFH
0111 1111 CF=1
1111 1111 CF=0
INC AL;AL=0 , ZF=1
JZ BRCH3; ZF=1,转BRCH3
3.4,完成下列操作,选用什么指令:
(1)将AX的内容减去0520H,和上次运算的借位;
SBB AX , 0520H
(2)将变量名TABL的段地址送AX。
MOV AX , SEG TABL
3.5,
D1 DB 20H DUP(?)
D2 DW D1
请写出用一条指令实现取D1的偏移地址 SI中的三种方法。
1、MOV SI , OFFSET D1
2、LEA SI , D1
3、MOV SI , [D2]
MOV BX,00FFH
AND BX,0FFFH
OR BX,0F0FH
XOR BX,00FFH
执行上述指令序列后,BX=___,CF=___
3.7,
CMP AX,BX JGE NEXT XCHG AX,BX NEXT: CMP AX,CX JGE DONE XCHG AX,CX DONE: ┆ 试回答: ①上述程序执行后,原有AX,BX,CX中最大数存放在哪个寄存器? ②这三个数是带符号数还是无符号数?答:
①最大数存放在AX中
②这三个数是带符号数
因为JGE是带符号数的判断指令
3.8,
画出下列语句中的数据在存储器中的存储情况。 ARRAYB DB 63,63H,‘ABCD’,
3DUP(?),2 DUP(1,3)
ARRAYW DW 1234H,5,‘AB’,‘CD’,?,
2DUP(1,3)
解:
地址 数据 地址 数据
ARRAYB 3FH 42H 63H 41H 41H 44H 42H 43H 43H ? 44H ? ? 01H ? 00H ? 03H 01H 00H 03H 01H 01H 00H 03H 03H 34H 00H 12H 05H 00H
详见(第):http://wenku.baidu.com/link?url=qsZFQz5TroamhrKfayFjS8LpwCAe5OC2O-V71JXkeud8FN3RkOa9M9DKunmrjhlBmVW9N4WnWukHNUSYGvU_Pt3dhIpDXpI9oCEt1o0nf9K
3.9,
程序中数据定义如下:
DATA1 DW ?
DATA2 DB 32DUP(?)
DATA3 DD ?
DLENGTH EQU $-DATA1
此时
DLENGTH的值是多少?
解:
DLENGTH=38=26
3.10,
程序中数据定义如下:
ARRAY DB ‘ABCDEF’ RESULT DB ?
TABLE DW 20 DUP(?)
则执行指令 MOV AX,TYPE RESULT后,AX=?
MOV BX,TYPE TABLE后,BX=? MOV CX,LENGTH TABLE后,CX=? MOV DX,LENGTH ARRAY后,DX=? MOV SI,SIZE TABLE后,SI=? MOV DI,SIZE ARRAY后,DI=?
解:
AX=1; BX=2; CX=20; DX=1; SI=40; DI=1
3.11
试按下列要求在数据段中依次书写各数据定义语句:
(1) 以DA1为首字节的连接存储单元中存放20H个重复的数据序列:2,3, 10 个4,一个7。
(2) DA2为字符串变量,用字变量(DW)设置一字符串;‘STUDENTS’(按 此顺序存放在各单元中)
(3) 用等值语句给符号COUNT赋值以DA1为首址的数据区共占有的字节数,此等值语句必须放在最后一语句。 解:
(1) DAT1 DB 20H DUP (2,3,10 DUP (4),7) (2) DAT2 DW ‘TS’, ‘DU’ ,’NE’,’ST’ (3) COUNT EQU DATA2-DATA1
3.12
下面程序段是实现从键盘输入十个一位10进数后累加。最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。试把程序段中所空缺的指令填上。
XOR BX,BX
____
LOP: MOV AH,01H ;键盘字符输入
INT 21H
MOV AH,BH ADD AL,BL
_______
MOV BX,AX
解:
MOV CX, 10
AAA
3.13 ,
下面程序段的功能是把DA1数据区的数0~9转换为对应的ASCII码。试完善本程序段。
DA1 DB OOH,O1H,02H,03H,04H,05H,06H,07H,08H,09H
ASCI DB 10 DUP(?)
CUNT=ASCI-DA1
LEA SI,DA1
LEA DI,ADCI
______
LOP1: MOY AL,[SI]
______
MOV[DI],AL
INC SI
INC DI
LOOP LOP1
解:
MOV CX, COUT
ADD AL, 30H
3.14
设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换,试完善本程序。
DATA SEGMENT
A DB1,2,3,4,5,6,7,8,9,0AH
DRG OO10H
B DB 0AH,9,8,7,6,5,4,3,2,1
DATA ENDS
.....
LEA SI,A
LEA DO,B
MOV CX,10
LOP: LODSB
XCHG AL,[DI]
____
DEC DI
STOSB
_____
INC D
LOOP LOP
解:
XCHG SI, DI XCHG SI, DI
3.15,
编写一程序段,将AL中的第7和0位,第6和1位,第5和2位,第4和3位互换。 解:
MOV CX, 8
MOV AH, 0
K1: SHR AL, 1
RCL AH, 1
DEC CX
JNZ K1
MOV AL,AH
3.16
试编写一程序段,在CHAR为首址的26个字节单元中依次存放字母‘A’~‘Z’
解:
MOV AL, ‘A’
MOV DI, OFFSET CHAR
MOV CX, 26
LOP: MOV [DI], AL
INC AL
INC DI
LOOP LOP
3.17,
可以参考http://wenku.baidu.com/link?url=qsZFQz5TroamhrKfayFjS8LpwCAe5OC2O-V71JXkeud8FN3RkOa9M9DKunmrjhlBmVW9N4WnWukHNUSYGvU_Pt3dhIpDXpI9oCEt1o0nf9K
4. 1. 用下列芯片构成存储系统,各需要多少个RAM芯片?需要多少位地址作为片外地址译码?设系统为20位地址线,采用全译码方式。
(1) 512×4位RAM构成16KB的存储系统;
(2) 1024×1位RAM构成128KB的存储系统;
(3) 2K×4位RAM构成64KB的存储系统;
(4) 64K×1位RAM构成256KB的存储系统;
解:
1) 需要16KB/512×4=64片
片外地址译码需11位地址线。
2) 需要128KB/1K×1=1024片
片外地址译码需10位地址线。
3) 需要64KB/2K×4=64片
片外地址译码需9位地址线。
4) 需要256KB/64K×1位=32片
片外地址译码需4位地址线。
4. 2. 现有一种存储芯片容量为512×4位,若要用它组成4KB的存储容量,需多少这样的存储芯片?每块芯片需多少寻址线?而4KB存储系统最少需多少寻址线?
解:
4KB/ 512×4b= 16,需要16片
每片芯片需9条寻址线
4KB存储系统最少需12条寻址线
图习 5-1
解:
2732的地址范围为
11111111000000000000~11111111111111111111=FF000H~FFFFFH,
存储容量为4KB。
4. 4. 某一存储器系统如图习5-2所示,回答它们的存储容量各是多少?RAM和EPROM存储器地址分配范围各是多少?
解:
EPROM的地址范围为FD000H~FDFFFH,存储容量为4KB;RAM的地址范围为F9000H~F97FFH或F9800H~F9FFFH,存储容量为2KB。由于A11未参加译码,因而有地址重叠,一个内存单元有2个地址对应。
4. 5. 使用6116、2732和74LS138译码器构成一个存储容量为12KBROM(00000H~02FFFH)、8KBRAM(03000H~04FFFH)的存储系统。系统地址总线为20位,数据总线为8位。
解:
4. 6. 8086CPU执行MOV[2001]H,AX指令从取指到执行指令最少需要多少时间?设时钟频率为5MHZ,该指令的机器码为4个字节,存放在1000H;2000H开始的4个单元中。
解:
在无等待周期的情况下,从取指到执行共需:
4×4×1/5M=3.2µs(一个总线周期在无等待周期的情况下由4个时钟周期T组成)。
图习5-3
解:
芯片#1的地址范围为:
A19 ~ A14 A13 A12 A11 ~ A0
×××××× 0 1 0 ~ 0
×××××× 0 1 1 ~ 1
当A19~A14为全“0”时,其地址范围为01000H~01FFFH,
芯片#2的地址范围为:
A19 ~ A14 A13 A12 A11 A10 ~ A0
×××××× 1 0 0 0 ~ 0
×××××× 1 0 0 1 ~ 1
当A19~A14为全“0”时,其地址范围为02000H~027FFH,芯片#1的存储容量4KB;芯片#2为2KB。
图习5-4
解:
芯片 #1的的地址范围计算:
A19 ~ A15 A14 A13 A12 ~ A0
××××× 1 0 0 ~ 0
××××× 1 0 1 ~ 1
当无关项取“0”时,地址范围为04000H~05FFFH
芯片 #2的的地址范围计算:
A19 ~ A15 A14 A13 A12 ~ A0
××××× 0 1 0 ~ 0
××××× 0 1 1 ~ 1
当无关项取“0”时,地址范围为02000H~03FFFH。该存储器的总容量为16KB。
4. 9. 微机系统的存储器由5片RAM芯片组成,如图习5-5所示,其中U1有12 条地址线,8条数据线,U2~U5各有10条地址线,4条数据线,试计算芯片U1和U2,U3的地址范围,以及该存储器的总容量。
解:
芯片 U1的的地址范围计算:
A19 ~ A14 A13 A12 A11 A10 ~ A0
0 ~ 0 0 1 0 0 ~ 0
0 ~ 0 0 1 1 1 ~ 1
地址范围为01000H~01FFFH
芯片 U2和U3的的地址范围计算:
A19 ~ A14 A13 A12 A11 A10 A9 ~ A0
0 ~ 0 1 0 0 0 0 ~ 0
0 ~ 0 1 0 0 0 1 ~ 1
地址范围为02000H~023FFH。总容量为6KB(U1为4KB、U2、U3为1KB、U4、U5为1KB)。