ADD AX,0C572H
【解答】
2-7说明8086CPU最大方式和最小方式工作时的主要区别
【解答】8086CPU工作于最小模式时,用于构成小型的单处理机系统,而工作于最大模式时用于构成多处理机和协处理机系统。这两种模式的主要区别是最大模式系统的控制总线增加了一片专用的总线控制器芯片8288。
2-8 说明8086系统中内存储器的物理地址的形成过程。
【解答】8086CPU存储器物理单元的20位物理地址是通过将16位的“段基址”左移4位和16位的“段内偏移地址”在 20位地址加法器中相加得到的。“段基址”存放在段寄存器CS、SS、DS、ES中,而“段内偏移地址”由SP、BP、SI、DI、IP、BX以及上述寄存器的组合而形成。
2-9有一双字87654321H的地址为30101H,画出其在字节编址的内存中的存放情况。
【解答】
2-10 说明8086的指令周期、总线周期和时钟周期的区别和关系。
【解答】
执行一条指令所需要的时间称为指令周期,不同的指令周期是不等长的。在取指令过程中以及执行指令时取操作数或存运行结果,都要通过总线,因此一个总线周期中可能由一个或几个总线周期组成。
CPU从存储器或输入输出端口存取一个字节或字的时间叫做总
线周期。8086CPU的总线周期至少由4个时钟周期组成,分别以T1、T2、T3、T4表示。
时钟周期是CPU的时间基准,由计算机的主频决定。例如8086 CPU的主频为5MHZ,则一个时钟周期为1/(5*106)=0.2*10-6s=0.2s=200ns
2-11 根据8086 I/O的读写时序图,回答下列问题:
地址信号在哪段时间内有效?
【解答】在读写总线周期的T1时间内有效。
读与写操作的区别?
【解答】读总线周期中,数据在进入T3状态时才出现在复用总线上,而在写周期中数据在T2状态时就出现在复用总线上。
I/O读写时序同存储器读写时序的区别?
【解答】I/O读写时序同存储器读写时序没有什么区别,只是M/IO信号的状态不同。当进行内存读写操作时,M/IO为高电平;而进行I/O端口读写操作时M/IO为低电平。
什么情况下需要插入等待周期TW?
【解答】当内存或I/O端口存取速度慢,无法在CPU的总线周期内完成相应操作时,需要插入一个或几个等待周期TW ,以延长相应总线周期。
2-12 扼要说明80286同8086的主要区别。
【解答】80286是一种高性能的16位微处理器,片内集成有存储管理和保护机构,能用四层特权支持操作系统和任务的分离,能可靠地支持多用户和多任务系统。它的实地址方式兼容了8086的全部功能,同时它增加了保护虚地址方式。80286有24条地址线,在实地址方式下只使用20条地址线,有1MB的寻址能力;在保护虚地址方式下,使用24条地址线,有16MB寻址能力,它能将每个任务的230字节(1GB)的虚地址映射到224字节的物理地址中去。
80286的内部由地址部件AU、指令部件IU、执行部件EU和总线部件BIU四大部分组成,和8086的EU与BIU组成相比,四个部件的并行操作,进一步提高了吞吐率、加快了处理速度。
2-13 扼要说明80486同80386的主要区别。
【解答】80486是继80386之后新的32位微处理器,同80386相比,在相同的工作频率下,其处理速度提高了2~4倍。80486采用了RISC(精简指令系统计算机)技术,降低了执行每条指令所需要的时钟数;80486采用了与80386不同的突发式总线技术,有效地解决了微处理器同内存之间的数据交换问题;80486内部集成了FPU(浮点部件)和Cache(超高速缓冲存储器),CPU和FPU、CPU和Cache之间都采用高速总线进行数据传送,使其处理速度得到极大的提高。
80486的在体系结构上除沿用80386的总线接口部件BIU、指令预取部件IPU、指令译码部件IDU、执行部件EU、存储器管理部件SU和PU、控制部件外,为提高性能又增加了高速缓存部件Cache、高性能浮点处理部件FPU。
2-14扼要说明Pentium同Pentium Pro的主要区别。(略)
2-15扼要说明Pentium MMX的特点。(略)
2-16扼要说明Pentium Ⅱ同 Pentium Ⅲ的特点 。 (略)
第三章 8086微处理器的指令系统
3-1 指出下列各指令中源操作数和目的操作数的寻址方式,并说明操作数的类型(注:字节数据或字数据)
(1)MOV SI,1000H
(2)MOV BL,[1000H]
(3)MOV [BX+0100H],CX
(4)MOV BYTE PTR [BP] [SI],100
(5)MOV AX,[BX+DI+0004H]
【解答】 源操作数 目的操作数 操作数类型
(1) 立即寻址 寄存器寻址 字类型
(2) 直接寻址 寄存器寻址 字节类型
(3) 寄存器寻址 基址寻址 字类型
(4) 立即寻址 基址加变址寻址 字节类型
(5) 基址加变址寻址 寄存器寻址 字类型
3-2 指出下列各非法指令的错误原因
MOV AL,BX
【解答】源与目的操作数类型不一致。
MOV CL,200H
【解答】源操作数太大了,CL是8位寄存器,能存储的最大数只能到FFH。
MOV CS,AX
【解答】不允许用传送指令给CS赋值。
MOV DS,3000H
【解答】8086没有给段寄存器直接置值的指令,应该通过寄存器辗转设置。
MOV [DI],[SI]
【解答】存储器单元之间不可直接传送,即两个操作数不能同为内存操作数。
MOV AL,[CX]
【解答】CX不可以作为间址寄存器,只能用BX、BP、SI、DI。
MOV AL,[SI] [DI]
【解答】 基址加变址寻址时 ,基址寄存器只能用BX或BP,变址寄存器只能用SI或DI,这里源操作数寻址用[SI+DI]是错误的。
ADD BX,DS
【解答】DS段寄存器不能当通用寄存器用,故不可以出现在ADD指令中。
INC [BX]
【解答】 [BX]寻址数据类型不明确,应加类型说明 BYTE PTR [BX] 或 WORD PTR [BX]。
(10) SHL AX
【解答】缺少一个操作数。正确格式应为SHL AX, 1或SHL AX, CL(1或CL为移位次数)。
设DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H, SP=1352H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H
下列各指令都在此环境下执行,在各小题的空格中填入相应各指令的执行结果。
MOV AX,1352H
【解答】AX=1352H
MOV AX,[1352H]
【解答】AX=26FFH
MOV 0150H [BX],CH
【解答】(11350H)=33H, (11351H)=3CH
MOV AX,0150H [BP]
【解答】AX=5188H
POP AX
【解答】AX=(21352H), SP=1354H
ADD [SI],CX
【解答】(11354H)=0ECH, (11355H)=1AH, SF=0, ZF=0, PF=1, CF=1, OF=0
SUB BH,0150H [BX] [SI]
【解答】BH=75H, SF= 0, ZF=0, PF=0, CF=1, OF=0
INC BYTE PTR 0152H [BX]
【解答】(11352H)=00H, (11353H)=26H, CF=0
INC WORD PTR 0152H [BX]
【解答】(11352H)=00H, (11353H)=27H, CF=0
(10) SAR BYTE PTR 0150H [BX],1
【解答】(11350H)=0D2H, CF=1, OF=0
(11)SAL BYTE PTR 0150H [BX],1
【解答】(11350H)=4AH, CF=1, OF=1
写出下列无条件转移指令执行后的CS和IP值。
【解答】
CS的值 IP的值
(1) 2000H 016EH+2+0FFE7H=0157H
(2) 2000H 016EH+2+0016H=0186H
(3) 2000H 16C0H
(4) 3000H 0146H
(5) 2000H 1770H
(6) 3000H 0146H
3-5 阅读下列各小题的指令序列,在后面空格中填入该指令的执行结果。
【解答】
(1) AL=02H, BL=85H, CF=1
(2) AX=0000H, CF=0
(3) AX=0000H, CF=0
(4) BX=0FFFFH, CF=1
写出每条指令执行后各寄存器内容的变化情况,并画出堆栈的存储情况。
【解答】
(2) 转向 L1
(3) 转向L2bsp; LE
(3) NB, NBE, NL, NLE
(4) NB, NBE, NL, NLE
(5) B, BE, NL, NLE
(6) B, BE, L, LE
(7) B, BE, L, LE
(8) NB, BE, NL, LE
用移位和循环指令编写一段指令序列,实现将在DX:AX中的32位二进制数乘2及除2的功能。
【解答】
乘2功能 除2功能
SHL AX,1 SHR DX,1
RCL DX,1 RCR AX,1
乘2功能 除2功能
SAL AX,1 SAR DX,1
RCL DX,1 RCR AX,1
3-10 数0~15的平方值存放在数据段起始地址为1000H的内存连续单元中,用XLAT指令编写一段指令序列,实现用查表法求得数N(0~15)得平方值。
【解答】MOV BX,1000H
MOV AL,N ;N为0~15之间任意一个数
XLAT ;N的平方值在AL中
3-11 编写一段指令序列,测试AL的内容,若低4位全为0,就转移去由标号NEXT表示的目标地址执行程序,否则就继续顺序执行下去。
【解答】TEST AL,0FH
JZ NEXT
3-12 寄存器AX和BX各有两位非压缩BCD数,编写一段指令序列,将这两个两位非压缩BCD数的和存入AX。
【解答】 ADD AL,BL ;个位加
AAA ;个位非压缩BCD加法调整
MOV CL,AL ;个位BCD和暂保存在CL
MOV AL,AH
ADD AL,BH ;十位加
AAA ;十位非压缩BCD加法调整
MOV AH,AL
MOV AL,CL ;两位非压缩BCD和存入AX
3-13 用串操作指令编写一段指令序列。
【解答】 (1)MOV SI,0200H
MOV DI,1400H
STD
MOV CX,100
REP MOVSB
(2)MOV DI,0100H
MOV CX,100
CLD
MOV AX,2A84H
REPNZ SCASW
JZ FOUND