第5章86系列微型计算机的指令系统——郑学坚、周斌《微型计算机原理及应用》讲述
5 控制类指令 指令组成: STD方向标志位置1指令:DF 1 CLD方向标志位置0指令:DF 0 指令说明:执行串操作指令过程中,决定字符地址的修改方向。STD置1:字符地址减量修改,CLD置0:字符地址增量修改。 方向标志DF操作指令 4.处理器控制指令 5 控制类指令 中断允许标志IF操作指令 指令组成: STI中断标志位置1指令:IF 1 CLI中断标志位置0指令:IF 0 指令说明: STI置1,开放中断;CLI清0,屏蔽外部中断。 4.处理器控制指令 5 控制类指令 2)其它处理机控制指令 (1)NOP无操作指令 (2)HLT停机指令 (3)WAIT等待指令 (4)LOCK总线封锁指令 (5)ESC交权指令 操作:不执行任何操作 操作:使CPU处于暂停状态 操作:不断测试引脚 操作:使引脚输出低电平信号 操作:为协助处理器提供操作码,数据总线把存储单元内容送出,并开始一条协处理器指令的执行 4.处理器控制指令 5 控制类指令 暂停指令 指令格式: HLT 指令说明: 该指令经常和中断过程联系在一起,常用于外部硬件中断。 4.处理器控制指令 交权指令 指令格式: ESC 指令说明: 在带协处理器的系统中,程序中的交权指令表示8086调用协处理器工作。 5 控制类指令 等待指令 指令格式: WAIT 指令说明: 该指令一般是和ESC指令配合使用。8086用ESC指令使协处理器工作以后,自己还可以执行一些其他操作,此时处于并行工作状态。要取回协处理器的处理结果。可安排一条等待指令WAIT指令过程中,不断测试CPU的TEST引腿上的信号。 4.处理器控制指令 5 控制类指令 总线封锁指令 指令格式: LOCK 指令说明: 该指令可以放在任何一条指令的前面,LOCK实际上是一个指令前缀。LOCK前缀用在8086最大模式中,在硬件上将CPU的LOCK引腿与总线控制器8289的LOCK输入端相连,用了指令前缀LOCK以后,CPU在执行前缀后面的一条指令时,会从LOCK引腿往外送1个低电平信号,CPU访问存储器或外设时,总线控制器会对总线实行封锁,使其他处理器得不到总线控制权,不能访问存储器或外设。 4.处理器控制指令 习题 5.1 分别指出下列指令中的源操作数和目的操作数的寻址方式: (1) MOV SI,200 (2) MOV CX,DATA[SI] (3) ADD AX,[BX][DI] (4) AND AX,BX (5) MOV [SI],AX (6) PUSHF 5.2 试述指令MOV AX,2010H和MOV AX,DS:[2010H]的区别。 习题 5.3 写出以下指令中内存操作数的所在地址。 (1) MOV AL,[BX+5] (2) MOV [BP+5],AX (3) INC BYTE PTR[SI+3] (4) MOV DL,ES∶[BX+DI] (5) MOV BX,[BX+SI+2] 5.4判断下列指令书写是否正确: (1) MOV AL,BX(6) MOV BL,F5H (2) MOV AL,CL(7) MOV DX,2000H (3) INC [BX](8) POP CS (4) MOV 5,AL(9) PUSH CS (5) MOV [BX],[SI] 习题 5.5 设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问: (1) 执行指令PUSH AX后SP=? (2) 再执行PUSH BX及POP AX后SP=?AX=?BX=? 5.6 要想完成把[2000H]送[1000H]中,用指令: MOV [1000H],[2000H]是否正确?如果不正确,应用什么方法? 5.7 假如想从100中减去AL中的内容,用SUB 100,AL是否正确?如果不正确,应用什么方法? 5.8 用两种方法写出从88H端口读入信息的指令。再用两种方法写出从42H口输出100H的指令。 习题 5.9 假如AL=20H,BL=10H,当执行CMP AL,BL后,问: (1) 若AL,BL中内容是两个无符号数,比较结果如何?影响哪几个标志位? (2) 若AL,BL中内容是两个有符号数,结果又如何?影响哪几个标志位? * * 交换过程可以在CPU的内部寄存器之间进行,也可以在内部寄存器和存储单元之间进行,但不能在两个存储单元之间执行数据交换过程。 * 执行XLAT指令可将任意一个十进制数翻译成7段显示码,其操作步骤如下: (1) 将译码表定位到某个逻辑段的一片连续地址中,并将其表首址的偏移地址置入BX寄存器中。 (2) 将待