指令格式 AND dest,src
指令功能
按位进行逻辑与
结果返回目的操作数
设置CF=OF = 0
影响SF,ZF,PF
可用于复位一些位,但不影响其他位
指令格式
按位进行逻辑或
设置CF =OF= 0
可用于置位一些位,但不影响其他位
按位进行逻辑非
不影响标志位
按位进行逻辑异或
设置CF =OF =0
可用于求反某些位,而不影响其他位
段内转移
段间转移
可实现三种范围的跳转
短转移 short
近转移 near
远转移 far
无条件转移到指定的地址去执行该地址开始的指令
段内直接转移
段内间接转移
段间直接转移
段间间接转移
满足条件才转移
对标志位均无影响
单标志位转移指令
无符号数的条件转移指令
有符号数的条件转移指令
测试CX条件转移指令
以CX寄存器作为计数指针
每循环一次,CS-1
当CX减至0,停止循环
不影响标志位,属于段内短转移
无条件循环指令
JCXZ label
LOOP label
条件循环指令
LOOPPZ/LOOPPE label
LOOPNZ/LOOPNE label
MOV指令
指令格式:MOV dest src
指令功能:dest <——src
对操作数的规定
src和dest的数据类型要一致
否则要用PTR指明类型
关系图
错误示范
XCHG指令
指令格式: XCHG reg , reg/mem
指令功能: dest <——>src
先进后出的主存区域
使用SS段寄存器存放段地址
两种基本操作
使用SP指明当前栈顶
进栈指令PUSH
指令格式: PUSH r16/m16/seg
出栈指令POP
指令格式 POP r16/m16/seg
标志寄存器传送
标志位操作
用来对CF,DF,IF三个标志位进行设置
用于完成输入/输出端口与累加器(AL/AX)之间的数据传送
输入指令
将外设数据传送至CPU
IN AL,I8
IN AX,I8
IN AL,DX
IN AX,DX
输出质量
将CPU数据传送至外设
OUT I8 ,AL
OUT I8 ,AX
OUT DX ,AL
OUT DX ,AX
不带进位ADD
带进位ADC
增量指令INC
不带借位减法指令SUB
带借位减法指令SBB
减量指令DEC
求补指令NEG
比较指令CMP
将目的操作数减去源操作数
结果不送回
影响标志位CF、AF、PF、SF、OF、ZF
用于比较两个操作数的大小关系
通过ZF的值判断两个数是否相等
通过CF的值来判断两个无符号数的大小
通过OF和SF的变化来判断两个有符号数的大小
用来实现两个二进制数的相乘运算
无符号数乘法指令MUL
如果结果的高半部分(字节操作的AH或字操作的DX)
有符号数乘法指令IMUL
AX<——AL*SRC
DX,AX<——AX*SRC
被乘数隐含在AL(或AX)中
运算结果要保存在AX(或DX和AX)
只有CF,OF有定义
结果的高半部分(字节操作的AH或字操作的DX)
是底半部分的符号扩展
否则CF = 1 OF = 1
符号扩展
无符号数除法指令DIV
对标志位没有定义,但是却可能产生溢出
无符号数除法