微机原理 th-寻址方式以及转移类指令2
微机原理
第三章
转移类指令
(有)条件转移指令
对于无符号数
A—大于、B—小于、E—等于、N—NOT
一般紧跟于指令之后,例如:
CMP AX,BX
JA NEXT
意思就是如果AX大于BX那就跳转到NEXT,否则顺序执行。(只适用于无符号数比较)
对于有符号数
G—大于、L—小于,同上例,JG NEXT,但只适用于有符号数比较。
对于标志位
JNS—SF=0、JS—SF=1
例题(*)
这道题可以灵活改动,如改成200个8位或者寻找最小值等。
如果是200位:只需更改CX的值;如果改为最小值,只需改为JB NEXT,MOV MIN; 如果是有符号:只需改动JGE NEXT;如果改为有符号数最小值,只需改为JL NEXT,MOV MIN;
循环控制指令
-
计数循环
格式:LOOP 目标标号
功能:CX-1回送给CX,若CX!=0,循环转移到目标标号,直到CX=0退出循环。 - 结果为0/相等循环
格式:LOOPZ/LOOPE 目标标号
功能:CX-1回送给CX,若CX!=0且ZF=1时,循环转移到~,直到CX=0或ZF=0退出循环。 - 结果不为0/不相等循环
格式:LOOPNZ/LOOPNE 目标标号
功能:CX-1回送给CX,若CX!=0且ZF=0时,循环转移到~,直到CX=0或ZF=1退出循环。 - 计数为0转移(极少用)
格式:JCXZ 目标标号
功能:若CX=0(ZF=1)时,则转向目标标号,否则顺序执行。
处理器控制指令
- 标志操作指令
CMC—CF置反
这些指令只影响与其相关的标志位。
- CPU控制指令
(1)处理器暂停指令 HLT
(2)处理器等待指令 WAIT
(3)处理器交权指令 ESC EXTOPCD,OP源
(4)空操作指令 NOP(延时用,什么都不会操作)
输入输出指令
8086独立编址,所以有两种寻址方式,即直接寻址和间接寻址。
直接寻址范围00H—0FFH;因为间接寻址范围为0000H—0FFFFH共64k个端口,所以间接寻址时,只能用DX作间址寄存器。
- 输入指令
格式:IN 累加器,端口
功能:把一个字节/字 由输入端口传送到AL/AX中。
例如:IN AL,21H;此处的端口范围是00H—0FFH或者只能是DX,且累加器只能是AL或者AX;MOV DX,201H是因为超出了0FFH。
IN AX,DX;AX为数据,DX为地址。 - 输出指令
格式:OUT 端口,累加器(与输入相反)
功能:把AX中的16位数或AL中的8位数输出到指定端口。
例:OUT 22H,AL;MOV DX,511H;IN DX,AX;
中断指令
- 溢出中断指令(影响标志位IF、TF)
格式:INTO
功能:检测OF标志位,当OF=1,产生一个中断类型4的中断;当OF=0,无用。 - 软中断指令(影响标志位IF、TF)
格式:INT n(n为中断类型号)(中断类型号是8086给出的)
功能:产生一个软件中断,把控制转向一个类型号为n的软中断。 - (*)中断返回指令(影响所有标志位)
格式:IRET
功能:让CPU执行完中断服务程序后,正确返回原程序的断点处。
IRET必返回IP、CS、FR。RET只返回IP或IP和CS。