微机原理指令详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术指令详解
XCHG O1,O2 : Exchange 交换指令,操作数不能为段寄存器、IP和立即数
XLAT 转换表名称(表的首地址) AL=*[DS×16 + BX(表首地址)+AL(距表首地址位移量)] LEA O1, O2 : load efficient address to register
LDS load memory to register and DS
LES load memory to register and ES
LAHF ( load AH with flag ) 用FR的低八位装载AH (存储AH)
SAHF ( store AH to flag ) 卸载AH 到FR的低八位 (取AH)
PUSHF (PUSH Flag) 将标志寄存器FR压入堆栈
POPF (Pop Flag) 将栈顶部的一个字传送到FR
ADC add with carry 带进位(+CF)加法
INC increment 自增1
SUB subtract 不带借位减法
SBB subtract with borrow(借)带借位(-CF)减法
DEC decrement 自减1
NEG negative 求补指令(0-操作数)取反后+1在变符号位
CMP compare 比较指令
MUL multiply 无SF相乘
IMUL signed integer multiply 带SF相乘
DIV divide 无SF相除
IDIV signed integer divide 带SF相除
DAA decimal adjust after add 组合BCD码加法调整
DAS decimal adjust after subtract 组合BCD码减法调整
AAA ASCII adjust after add 非组合BCD码加法调整
AAS ASCII adjust after subtract 非组合BCD码减法调整
AAM ASCII adjust after multiply 乘法后的BCD码调整
AAD ASCII adjust before divide 除法前的BCD码调整
NOT 非/ 求反指令(对于二进制位取反)AND 与运算全1为1
OR 或运算有1为1
XOR 异或运算不同为1
MOD 取余运算
TEXT 测试指令与运算,只影响FR,不送回SHL shift left 逻辑左移
SAL shift arithmetic left 算术左移
SHR shift right 逻辑右移
SAR shift arithmetic right 算术右移
ROL rotate left 循环左移
ROR rotate right 循环右移
RCL rotate carry left 带进位左移(CF在循环内)
RCR rotate carry right 带进位右移
MOVS move string 串传送
STOS store string 串存储(装)
LODS load string 串卸载(取)
CMPS compare string 串比较
SCAS scan string 串搜索
REP repeat CX>0,重复用于字符传送
REPZ/REPE repeat while zero/equal CX>O且ZF!= 0 计数大于0,
两位不相匹配,重复到不相同位,串比较
REPNZ/REPNE repeat while not zero/not equal 用于串搜索,一直搜索到两相
同的位(ZF=0)
JMP jump 跳转到下条指令地址(CS,IP/IP改
变)、
CALL NEAR OPRD 段内调用 CS不变,IP变 PUSH IP
CALL FAR OPRD 段间调用 CS、IP都变先PUSH CS
再PUSH IP
RET 返回断点地址原压入堆栈的IP 、CS
CS×16+IP
RET n 返回 CS*16+IP+n
Jxx jump while xx condition 带条件跳转
JZ jump if ZF=1 结果为0 跳转
JNZ JUMP if ZF=0 结果不为0 跳转
JS JUMP if SF=1 负数跳转
JNS JUMP if SF=O 正数跳转
JP JUMP if PF=1
JNP JUMP if PF=0
JO OF=1
JNO OF=0
JC CF=1
JNC CF=0
JA / JNBE above(高于) Not below and equal
JAE/JNB 高于等于
JB/JNAE 低于
JBE/JNA 低于等于
JG/JNLE >
JGE/JNL >=
JL/JNGE <
JLE/JNG <=
JCXZ jump when CX=0
LOOPZ/LOOPE loop while ZF=1 /equal
LOOPNZ/LOOPNE loop while ZF=0/not equal
RET return
INT interrupt
IRET interrupt return
INTO interrupt on overflow
CBW convert byte to word
CWD convert word to double word
CLC clear carry Flag CF=0
STC set carry Flag CF=1
CMC complement carry Flag CF取反
CLD clear direction Flag DF=0
STD set direction Flag DF=1
CLI clear interrupt Flag IF=0
STI set interrupt Flag IF=1
NOP no operation 设置断点
HLT halt
ESC escape to external device[/color][/quote]