算术运算,传输指令,寻址方式相关内容讲解
树图思维导图提供 指令系统内容介绍 在线思维导图免费制作,点击“编辑”按钮,可对 指令系统内容介绍 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:2e5cc6a5da6ace7befc17d9c8b447335
8086/8088指令系统和寻址方式思维导图模板大纲
功能
将数据或地址传送到寄存器或储存单元中
通用数据传送指令
数据传送指令(MOV dest,stc)
功能:把一个字节或子的操作数传送至目的地址
进栈指令(PUSH src)
功能:源操作入栈
进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部。
src: r16,seg,m16
出栈指令(POP dest)
功能:数据出栈到目的操作数
出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加2。
dest: r16,seg(CS除外),m16
地址传送指令
取有效地址指令(LEA r16,mem)
功能:r16←mem的有效地址EA
地址指针装入DS指令 (LDS r16,mem)
功能:r16←m32低16位;DS←m32高16位
将地址指针装入ES(附加段寄存器)指令(LES r16,m32 )
功能:r16←m32低16位;ES←m32高16位
标志传送指令
标志寄存器低字节与AH的传送指令
LAHF 标志送AH
SAHF AH送标志寄存器
标志寄存器出入堆栈指令
PUSHF 标志进栈
POPF 标志出栈
输入输出传送指令
直接寻址
输入格式:IN AL/AX,port 输出格式:OUT port,AL/AX
port取值范围为:0000H-00FFH; 操作数为字节时,选用AL,为字时,选用AX;
间接寻址
输入格式:IN AL/AX,DX 输出格式:OUT DX,AL/AX
端口地址取值范围为:0000H-FFFFH; 操作数为字节时,选用AL,为字时,选用AX;
辅助运算指令
CBW ;AL符号位扩展到AH ,将字节转换为字
CWD ;AX符号位扩展到DX ,将字转换为双字
实现算术运算的指令
加减
INC和DEC指令是单操作数指令,与其他加减指令不同:不影响CF标志
CMP的判断依据
操作数为无符号数: 若ZF=1, ax=bx 若ZF=0, 若CF=0, ax>bx 若CF=1, ax<bx
操作数为带符号数: ZF=1, ax=bx ZF=0, 若OF=0: SF=0, ax>bx SF=1, ax<bx 若OF=1: SF=0, ax<bx SF=1, ax>bx
求补运算也可以表达成:将操作数按位取反后加1
乘除
BCD数调整指令
串寻址方式
源操作数用寄存器SI寻址,默认在数据段DS中DS:[SI],但允许段超越。 目的操作数用寄存器DI寻址,默认在附加段ES中ES:[DI],不允许段超越。
串传送MOVS, 把字节或字操作数从主存的源地址传送至目的地址。
串装入LODS, 把指定主存单元的数据传送给AL或AX。
串送存STOS , 把AL或AX数据传送至目的地址。
串比较CMPS, 将主存中的源操作数减去目的操作数,以便设置标志,进而比较两操作数之间的关系。
串扫描SCAS, 将AL/AX减去至目的操作数,以便设置标志,进而比较AL/AX与操作数之间的关系。
指令前缀
配合不影响标志的MOVS、STOS和LODS指令
无条件重复前缀REP
当数据串没有结束(CX≠0),则继续传送
配合影响标志的CMPS和SCAS指令
相等重复前缀REPE和REPZ
当数据串没有结束(CX≠0),并且串相等(ZF=1),则继续比较
不相等重复前缀REPNE和REPNZ
当数据串没有结束(CX≠0),并且串不相等(ZF=0),则继续比较
控制转移指令通过改变IP(和CS)值,实现程序执行顺序的改变。
转移指令
无条件转移指令JMP dest
功能:跳转到dest所指目标出
dest可以是标号,立即数,寄存器,内存操作数
JMP label ;段内转移、相对寻址;IP←IP+位移量 JMP r16/m16 ;段内转移、间接寻址;IP←r16/m16 JMP far ptr label ;段间转移、直接寻址;IP←偏移地址,CS←段地址 JMP far ptr mem ;段间转移,间接寻址;IP←[mem],CS←[mem+2]
条件转移指令Jcc short-label
cc代表跳转条件,short-label表明该指令只能实现段内短转移,参数形式通常为符号地址
逻辑操作指令
AND指令(与0相与) 复位 OR指令(与1相或) 置位 XOR指令(与1相异或) 求反
对操作数的要求和MOV指令相同
双操作数逻辑指令AND、OR、XOR和TEST设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义
移位指令
逻辑左移SHLSHL dest,1/CL 目标操作左移CNT次,最低位补0,最高位移至标志位CF中 逻辑右移SHRSHR dest,1/Cl 目标操作右移CNT次,最低位移至标志位CF中,最高位补0 算数左移SALSAL dest,1/CL 目标操作左移CNT次,最低位补0,最高位移至标志位CF中 算数右移SARSAR dest,1/CL 目标操作右移CNT次,最低位移至标志位CF中,最高位不变
CNT代表移动次数 CNT>1时,必须由寄存器CL说明,对OF无定义 CF、ZF、F、PF由运算结果定 CNT=1时,若移位后符号位发送变化,则标志位OF=1,否则OF=0
循环移位指令
ROL reg/mem,1/CL; 不带进位循环左移 ROR reg/mem,1/CL; 不带进位循环右移 RCL reg/mem,1/CL; 带进位循环左移 RCR reg/mem,1/CL; 带进位循环右移
循环移位指令的操作数形式与移位指令相同,按指令功能设置进位标志CF, OF位只有当移位次数为1时有效。但不影响SF、ZF、PF标志,AF标志无定义。