651AH,D761H和007BH,请问物理地址388H,389H,38AH,38BH,38CH和38DH 6个单元中分别是什么数据?
答:(388H)=1AH,(389H)=65H,(38AH)=61H,(38BH)=DTH,(38CH)=7BH,(38DH)=00H
10. 8086微处理器有哪几种工作模式?各有什么特点? 答:8086微处理器有最大和最小工作模式。
在最小模式下:8086 CPU直接产生全部总线控制信号(DT/R,DEN,ALE,M/IO)和命令输出信号(RD,WR,INTA)并提出请求访问总线的逻辑信号HOLD,HLDA。
在最大工作模式下,必须配置8288总线控制器,并且根据8086提供的状态信号S2,S1,S0,输出读写控制命令,可以提供灵活多变的系统配置,以实现最佳的系统性能。
11. 简述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组合使用,表示是否访问奇地址字节。
12. 简述8086读总线周期和写总线周期和引脚上的信号动尖态变化过程。8086的读周期时序和写周期时序的区别有哪些? 答:在8086读周期内,有关总线信号的变化如下:
①M/IO:在整个读周期保持有效,当进行存储器读操作时,M/IO为高电平;当进行I/O端口读操作时,M/IO为低电平。
②A19/S6~A16/S3:在T1期间,输出CPU要读取的存储单元或I/O端口的地址高4位。T2~T4期间输出状态信息S6-S3。
③BHE/S7:在T1期间,输出BHE有效信号(BHE为低电平),表示高8位数据总线上的信息可以使用,BHE信号通常作为奇地址存储体的体选信号(偶地址存储体的体选信号是最低地址位A0)。T2—T4期间输出高电平。
④ADl5~AD0:在T1期间,输出CPU要读取的存储单元或I/O端口的地址A15~A0。T2期间为高阻态,T3~T4期间,存储单元或I/O端口将数据送上数据总线。CPU从ADl5~AD0上接收数据。
⑤ALE:在T1期间地址锁存有效信号,为一正脉冲,系统中的地址锁存器正是利用该脉冲的下降沿来锁存A19/S6~A16/S3,ADl5~AD0中的20位地址信息以及BHE。
⑥RD:T2期间输出低电平送到被选中的存储器或I/O接口,注意,只有被地址信号选中的存储单元或I/O端口,才会被RD信号从中读出数据(数据送上数据总线ADl5~AD0)。
⑦DT/R:在整个总线周期内保持低电平,表示本总线周期为读周期,在接有数据总线收发器的系统中,用来控制数据传输方向。
⑧DEN:在T2~T3期间输出有效低电平,表示数据有效,在接有数据总线收发器的系统中,用来实现数据的选通。
总线写操作的时序与读操作时序相似,其不同处在于:
①ADl5~AD0:在T2~T4期间送上欲输出的的数据,而无高阻态。 ②WR:从T2~T4,该信号送到所有的存储器和I/OWR引脚输出有效低电平,接口。注意,只有被地址信号选中的存储单元或I/O端口才会被WR信号写入数据。
③DT/R:在整个总线周期内保持高电平,表示本总线周期为写周期,在接有数据总线收发器的系统中,用来控制数据传输方向。
习题3
1. 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令原操作数是什么寻址方式,其物理地址是多少? (1) MOV AX, 0ABH (3) MOV AX, VAL
(2) MOV AX, [100H] (4) MOV BX, [SI] (6) MOV CL, [BX][SI] (8) MOV [BP][SI], 100
(5) MOV AL, VAL[BX] (7) MOV VAL[SI], BX
答:(1) 立即数寻址,无物理地址
(2) 直接寻址,物理地址=2000H×10H+100H=20100H (3) 直接寻址,物理地址=2000H×10H+0050H=20050H (4) 寄存器间接寻址,物理地址=2000H×10H+00A0=200A0H
(5) 相对寄存器寻址,物理地址=2000H×10H+(0050+0100H)=20150H (6) 基址加变寻址,物理地址=2000H×10H+(0100H+00A0H)=201A0H (7) 寄存器寻址,无物理地址 (8) 立即数寻址,无物理地址
2. 已知(SS)=0FFA0H,(SP)=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。 答:
“8057H”进栈,则SP自动从00B0H指向00B2H,“0F79H”进栈,则SP自动从00B2H指向00B4H;执行一条POP指令,“0F79H”被弹出栈,SP从00B4H指向00B2H。图略。
3. 设有关寄存器及存储单元的内容如下:
(DS)=2000H, (BX)=0100H, (AX)=1200H, (SI)=0002H, (20100H)=12H, (20101H)=34H,
(20102H)=56H,
(20103H)=78H,
(21200H)=2AH,
(21201H)=4CH, (21202H)=0B7H, (21203H)=65H.
试说明下列各条指令单独执行后相关寄存器或存储单元的内容。
(1) MOV AX, 1800H (2) MOV AX, BX
(3) MOV BX, [1200H] (4) MOV DX, 1100[BX] (5) MOV [BX][SI], AL (6) MOV AX, 1100[BX][SI] 答:(1) (AX)=1800H (2) (AX)=0100H (3) (BX)=4C2AH
(4) (DX)=4C2AH (5) (20102H)=00H (6) (AX)=65B7H
4. 写出实现下列计算的指令序列。
(1) Z=W+(X+Z) (2) Z=W-(X+6)-(R+9) 答:(1)
MOV AX, Z
ADD AX, X ADD AX, W MOV Z, AX (2) MOV AX, W ADD X, 6 SUB AX, X ADD R, 9 SUB AX, R MOV Z, AX
5. 若在数据段中从字节变量TABLE相应的单元开始存放了0~15的平方值,
试写出包含XLAT指令的指令序列查找N(0~15)中的某个平方数。 答:LEA BX, TABLE MOV AL, CL XLAT
6. 写出实现下列计算的指令序列。
(1) Z=(W*X)/(R+6) (2) Z=((W-X)/5*Y)*2 答:(1) MOV AX, W IMUL X ADD R, 6 IDIV R
MOV Z, AX (2) MOV AX, W SUB AX, X MOV BL, 5 IDIV BL CBW IMUL Y MOV BX, 2 IMUL BX MOV Z, AX
7. 假定(DX)=11001B,CL=3,CF=1, 试确定下列各条指令单独执行后DX的值。
(1) SHR DX, 1
(2) SHL DL, 1
(3) SAL DH, 1 (4) SAR DX, CL
(5) ROR DX, CL (6) ROL DL, CL (7) RCR DL, 1 (8) RCL DX, CL 答:(1) (DX)=0110 0100 1101 1100B (2) (DX)=1100 1001 0111 0010B
(3) (DX)=1001 0010 1011 1001B (4) (DX)= 1111 1001 0011 0111B (5) (DX)= 0011 1001 0011 0111B (6)(DX)= 0100 1101 1100 1110B (7) (DX)= 1110 0100 1101 1100B (8) (DX)= 1001 0011 0111 0011B
8. 已知程序段如下:
MOV AX, 1234H MOV CL, 4 ROL AX, CL DEC AX MOV CX, 4 MUL CX INT 20H
试问:(1)每条指令执行后,AX寄存器的内容是什么?(2)每条指令执行后,CF,SF及ZF的值分别是什么?(3)程序运行结束后,AX及DX寄存器的值为多少?
答:MOV AX, 1234H (AX)=1234H, CF=0,SF=0,ZF=0