一、数据传送指令1.通用数据传送指令MOV(Move)传送

PUSH(Push onto the stack)进栈

POP(Pop from the stack)出栈

XCHG(Exchange)交换.MOV指令格式为: MOV DST,SRC

执行的操作:(DST)

执行的操作:(SP)

((SP)+1,(SP))

执行的操作:(DST)

(SP)

执行的操作:(OPR1)(OPR2)2.累加器专用传送指令IN(Input) 输入

OUT(Output) 输出

XLAT(Translate) 换码

这组指令只限于使用累加器AX或AL传送信息..IN

输入指令

长格式为: IN AL,PORT(字节)

IN AX,PORT(字)

执行的操作: (AL)

(AX)

短格式为: IN AL,DX(字节)

IN AX,DX(字)

执行的操作: AL

AX

OUT PORT,AX(字)

执行的操作: (PORT)

(PORT+1,PORT)

短格式为: OUT DX,AL(字节)

OUT DX,AX(字)

执行的操作: ((DX))

((DX)+1,(DX))

在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以

直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于

前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用

IN或OUT指令来 传送信息. .XLAT 换码指令格式为: XLAT OPR

或: XLAT

执行的操作:(AL)

effective address)有效地址送寄存器

LDS(Load DS with Pointer)指针送寄存器和DS

LES(Load ES with Pointer)指针送寄存器和ES.LEA 有效地址送寄存器格式为: LEA REG,SRC

执行的操作:(REG)

指令把源操作数的有效地址送到指定的寄存器中..LDS 指针送寄存器和DS指令格式为: LDS REG,SRC

执行的操作:(REG)

(DS)

把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指令常指定SI寄存器..LES

指针送寄存器和ES指令格式为: LES REG,SRC

执行的操作: (REG)

(ES)

把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指令常指定DI寄存器.4.标志寄存器传送指令LAHF(Load AH with flags)标志送AH

SAHF(store AH into flags)AH送标志寄存器

PUSHF(push the flags) 标志进栈

POPF(pop the flags) 标志出栈.LAHF 标志送AH格式为: LAHF

执行的操作:(AH)

.SAHF

AH送标志寄存器格式为: SAHF

执行的操作:(PWS的低字节)

执行的操作:(SP)

((SP)+1,(SP))

执行的操作:(PWS)

(SP)

二、算术指令1.加法指令ADD(add)加法

ADC(add with carry)带进位加法

INC(increment)加1.ADD 加法指令格式: ADD DST,SRC

执行的操作:(DST)

执行的操作:(DST)

执行的操作:(OPR)

2.减法指令SUB(subtract)减法

SBB(subtract with borrow)带借位减法

DEC(Decrement)减1

NEG(Negate)求补

CMP(Compare)比较.SUB 减法指令格式: SUB DST,SRC

执行的操作:(DST)

执行的操作:(DST)

执行的操作:(OPR)

执行的操作:(OPR)

执行的操作:(OPR1)-(OPR2)

该指令与SUB指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志西半球.

3.乘法指令MUL(Unsigned Multiple)无符号数乘法

IMUL(Signed Multiple)带符号数乘法.MUL

无符号数乘法指令格式: MUL SRC

执行的操作:

字节操作数:(AX)

字操作数:(DX,AX)

执行的操作:与MUL相同,但必须是带符号数,而MUL是无符号数.4.除法指令DIV(Unsigned divide)无符号数除法

IDIV(Signed divide)带符号数除法

CBW(Convert byte to word)字节转换为字

CWD(Contert word to double word)字转换为双字.DIV 无符号数除法指令格式: DIV SRC

执行的操作:

字节操作:(AL)

(AH)

字操作: (AX)

(AX)

执行的操作:与DIV相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号与被除数的符号相同..CBW

字节转换为字指令格式: CBW

执行的操作:AL的内容符号扩展到AH.即如果(AL)的最高有效位为0,则(AH)=00;如(AL)的最高有效位为1,则(AH)=0FFH.CWD

字转换为双字指令格式: CWD

执行的操作:AX的内容符号扩展到DX.即如(AX)的最高有效位为0,则(DX)=0;否则(DX)=0FFFFH.

这两条指令都不影响条件码.

三、逻辑指令1.逻辑运算指令AND(and) 逻辑与

OR(or) 逻辑或

NOT(not) 逻辑非

XOR(exclusive or)异或

TEST(test) 测试.AND 逻辑与指令格式: AND DST,SRC

执行的操作:(DST)

执行的操作:(DST)

执行的操作:(OPR)

执行的操作:(DST)

执行的操作:(DST)^(SRC)

两个操作数相与的结果不保存,只根据其特征置条件码2.移位指令SHL(shift logical

left) 逻辑左移

SAL(shift arithmetic

left) 算术左移

SHR(shift logical

right) 逻辑右移

SAR(shift arithmetic

right) 算术右移

ROL(Rotate

left) 循环左移

ROR(Rotate

right) 循环右移

RCL(Rotate left through carry) 带进位循环左移

RCR(Rotate right through carry) 带进位循环右移格式: SHL OPR,CNT(其余的类似)

其中OPR可以是除立即数以外的任何寻址方式.移位次数由CNT决定,CNT可以是1或CL.

循环移位指令可以改变操作数中所有位的位置;移位指令则常常用来做乘以2除以2操作.其中算术移位指令适用于带符号数运算,SAL用来乘2,SAR用来除以2;而逻辑移位指令则用来无符号数运算,SHL用来乘2,SHR用来除以2.

四、串处理指令1.与REP相配合工作的MOVS,STOS和LODS指令.REP重复串操作直到(CX)=0为上格式: REP string primitive

其中String Primitive可为MOVS,LODS或STOS指令

执行的操作:

1)如(CX)=0则退出REP,否则往下执行.

2)(CX)

3)执行其中的串操作

4)重复1)~3).MOVS 串传送指令格式:可有三种

MOVS DST,SRC

MOVSB(字节)

MOVSW(字)

其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:

MOVS ES:BYTE PTR[DI],DS:[SI]

执行的操作:

1)((DI))

2)字节操作:

(SI)

当方向标志DF=0时用+,当方向标志DF=1时用-

3)字操作:

(SI)

当方向标志DF=0时用+,当方向标志DF=1时用-

该指令不影响条件码..CLD(Clear

direction flag)该指令使DF=0,在执行串操作指令时可使地址自动增量;

.STD(Set direction flag)该指令使DF=1,在执行串操作指令时可使地址自动减量.

.STOS 存入串指令格式: STOS DST

STOSB(字节)

STOSW(字)

执行的操作:

字节操作:((DI))

字操作: ((DI))

该指令把AL或AX的内容存入由(DI)指定的附加段的某单元中,并根据DF的值及数据类型修改DI的内容,当它与REP联用时,可把AL或AX的内容存入一个长度为(CX)的缓冲区中..LODS 从串取指令格式: LODS SRC

LODSB

LODSW

执行的操作:

字节操作:(AL)

字操作: (AX)

该指令把由(SI)指定的数据段中某单元的内容送到AL或AX中,并根据方向标志及数据类型修改SI的内容.指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.

一般说来,该指令不和REP联用.有时缓冲区中的一串字符需要逐次取出来测试时,可使用本指令.2.与REPE/REPZ和REPNZ/REPNE联合工作的CMPS和SCAS指令.REPE/REPZ 当相等/为零时重复串操作格式: REPE(或REPZ) String Primitive

其中String

Primitive可为CMPS或SCAS指令.

执行的操作:

1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行

2)(CX)

3)执行其后的串指令

4)重复1)~3)

.REPNE/REPNZ 当不相等/不为零时重复串操作

格式: REPNE(或REPNZ) String Primitive

其中String

Primitive可为CMPS或SCAS指令

执行的操作:

除退出条件(CX=0)或ZF=1外,其他操作与REPE完全相同.

.CMPS 串比较指令

格式: CMP SRC,DST

CMPSB

CMPSW

执行的操作:

1)((SI))-((DI))

2)字节操作:(SI)

字操作: (SI)

指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS指令的规定相同..SCAS 串扫描指令格式: SCAS DST

SCASB

SCASW

执行的操作:

字节操作:(AL)-((DI)),(DI)

字操作: (AL)-((DI)),(DI)

该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存结果,只根据结果置条件码.指令的其他特性和MOVS的规定相同.

五、控制转移指令1.无条件转移指令.JMP(jmp) 跳转指令1)段内直接短转移格式:JMP SHORT

OPR

执行的操作:(IP)

PTR OPR

执行的操作:(IP)

PTR OPR

执行的操作:(IP)

OPR

执行的操作:(IP)

(CS)

格式:JMP DWORD

PTR OPR

执行的操作:(IP)

(CS)

equal) 结果为零(或相等)则转移格式:JE(或JZ) OPR

测试条件:ZF=1

.JNZ(或JNE)(Jump if not zero,or not

equal) 结果不为零(或不相等)则转移格式:JNZ(或JNE) OPR

测试条件:ZF=0

.JS(Jump if

sign) 结果为负则转移格式: JS OPR

测试条件:SF=1

.JNS(Jump if not

sign) 结果为正则转移格式:JNS OPR

测试条件:SF=0

.JO(Jump if

overflow) 溢出则转移格式: JO OPR

测试条件:OF=1

.JNO(Jump if not

overflow) 不溢出则转移格式: JNO OPR

测试条件:OF=0

.JP(或JPE)(Jump if parity,or parity

even) 奇偶位为1则转移格式: JP OPR

测试条件:PF=1

.JNP(或JPO)(Jump if not parity,or

parity odd) 奇偶位为0则转移格式: JNP(或JPO) OPR

测试条件:PF=0

.JB(或JNAE,JC)(Jump if below,or not

above or equal,or carry)

低于,或者不高于或等于,或进位位为1则转移格式:JB(或JNAE,JC) OPR

测试条件:CF=1

.JNB(或JAE,JNC)(Jump if not below,or

above or equal,or not carry)

不低于,或者高于或者等于,或进位位为0则转移格式:JNB(或JAE,JNC) OPR

测试条件:CF=02)比较两个无符号数,并根据比较的结果转移.JB(或JNAE,JC)格式:同上

.JNB(或JAE,JNC)格式:同上

.JBE(或JNA)(Jump if below or equal,or

not above) 低于或等于,或不高于则转移格式:JBE(或JNA) OPR

测试条件:CFVZF=1

.JNBE(或JA)(Jump if not below or

equal,or above) 不低于或等于,或者高于则转移格式:JNBE(或JA) OPR

测试条件:CFVZF=03)比较两个带符号数,并根据比较的结果转移

.JL(或LNGE)(Jump if less,or not greater

or equal) 小于,或者不大于或者等于则转移格式:JL(或JNGE) OPR

测试条件:SFVOF=1

.JNL(或JGE)(Jump if not less,or greater

or equal)不小于,或者大于或者等于则转移格式:JNL(或JGE) OPR

测试条件:SFVOF=0

.JLE(或JNG)(Jump if less or equal,or

not greater) 小于或等于,或者不大于则转移格式:JLE(或JNG) OPR

测试条件:(SFVOF)VZF=1

.JNLE(或JG)(Jump if not less or

equal,or greater) 不小于或等于,或者大于则转移格式:JNLE(或JG) OPR

测试条件:(SFVOF)VZF=0

4)测试CX的值为0则转移指令.JCXZ(Jump if CX register is

zero) CX寄存器的内容为零则转移格式:JCXZ OPR

测试条件:(CX)=0注:条件转移全为8位短跳!

3.循环指令.LOOP

循环指令格式: LOOP OPR

测试条件:(CX)<>0

.LOOPZ/LOOPE

当为零或相等时循环指令格式: LOOPZ(或LOOPE) OPR

测试条件:(CX)<>0且ZF=1.LOOPNZ/LOOPNE 当不为零或不相等时循环指令格式: LOOPNZ(或LOOPNE) OPR

测试条件:(CX)<>0且ZF=0这三条指令的步骤是:

1)(CX)

2)检查是否满足测试条件,如满足则(IP)

.RET返回指令5.中断

.INT指令格式: INT TYPE

或 INT

执行的操作:(SP)

((SP)+1,(SP))

(SP)

((SP)+1,(SP))

(SP)

((SP)+1,(SP))

(IP)

(CS)

(SP)

((SP)+1,(SP))

(SP)

((SP)+1,(SP))

(SP)

((SP)+1,(SP))

(IP)

(CS)

执行的操作:(IP)

(SP)

(CS)

(SP)

(PSW)

(SP)

.CMC进位位求反指令(Complement carry)CF

.STC进位位置1指令(Set

carry)CF

.CLD方向标志置0指令(Clear direction)DF

.STD方向标志置1指令(Set

direction)DF

.CLI中断标志置0指令(Clear

interrupt)IF

.STI中断标志置1指令(Set

interrupt)IF

Opreation) 无操作

HLT(Halt) 停机

WAIT(Wait) 等待

ESC(Escape) 换码

LOCK(Lock) 封锁这些指令可以控制处理机状态.这们都不影响条件码..NOP

无操作指令该指令不执行任何操作,其机器码占有一个字节,在调试程序时往往用这条指令占有一定的存储单元,以便在正式运行时用其他指令取代..HLT停机指令该指令可使机器暂停工作,使处理机处于停机状态以便等待一次外部中断到来,中断结束后可继续执行下面的程序..WAIT等待指令该指令使处理机处于空转状态,它也可以用来等待外部中断的发生,但中断结束后仍返回WAIT指令继续德行..ESC换码指令格式ESC mem

其中mem指出一个存储单元,ESC指令把该存储单元的内容送到数据总线去.当然ESC指令不允许使用立即数和寄存器寻址方式.这条指令在使用协处理机

(Coprocessor)执行某些操作时,可从存储器指得指令或操作数.协处理机(如8087)则是为了提高速度而可以选配的硬件..LOCK封锁指令该指令是一种前缀,它可与其他指令联合,用来维持总线的锁存信号直到与其联合的指令执行完为止.当CPU与其他处理机协同工作时,该指令可避免破坏有用信息.

jle汇编_X86汇编指令相关推荐

  1. 汇编转跳指令 (J开头的)

    汇编转跳指令 JE ;等于则跳转 JNE ;不等于则跳转JZ ;为 0 则跳转 JNZ ;不为 0 则跳转JS ;为负则跳转 JNS ;不为负则跳转JC ;进位则跳转 JNC ;不进位则跳转JO ;溢 ...

  2. 【debug】汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    汇编跳转指令: JMP.JECXZ.JA.JB.JG.JL.JE.JZ.JS.JC.JO.JP 等 2017年11月12日 15:01:09 zmmycsdn 阅读数 19334 转自:http:// ...

  3. ARM汇编:汇编中proc、endp、ret、near、far指令用法

    ARM汇编:汇编中proc.endp.ret.near.far指令用法 子程序名 PROC NEAR ( 或 FAR ) -- ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序 ...

  4. 汇编 div_Solidity汇编开发简明教程

    在用Solidity开发以太坊智能合约时,使用汇编可以直接与EVM交互,降低 gas开销成本,更精细的控制智能合约的行为,因此值得Solidity开发者学习 并加以利用.本文是Solidity汇编开发 ...

  5. 汇编:汇编的基本介绍

    文章目录 1.编程语言的发展 2.汇编语言的特点 3.汇编语言 VS 高级语言 4.汇编语言的用途 5.汇编语言的种类 1.编程语言的发展 机器语言 由0和1组成 汇编语言(Assembly Lang ...

  6. 汇编 跳转指令: JMP、JCXZ、JECXZ、JA、JE、JNA、JNE、JZ、JB、JS、JC、JNC、JG、JNBE、JO、JP、JL、JPO、JGE、JLE 汇编语言

    以下为JCXZ和JECXZ .JMP:

  7. 8086汇编寄存器及指令汇总

    1   寄存器的分类 通用寄存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl): sp,bp,si,di 指令寄存器: ip 标志寄存器: FR 段寄存器: cs,ds ...

  8. 汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    转自:http://www.cnblogs.com/del/archive/2010/04/16/1713886.html http://pan.baidu.com/s/1gVTSi 跳转指令分三类: ...

  9. 汇编jnl_汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    http://pan.baidu.com/s/1gVTSi 跳转指令分三类: 一.无条件跳转: JMP ;无条件跳转 二.根据CX.ECX寄存器的值跳转: JCXZ ;CX 为 0 则跳转 JECXZ ...

  10. 一步步学习汇编(8)之指令

    要理解ret,retf,call指令,必须要先理清以下汇编基础知识: 一.             [bx]和内存单元<?xml:namespace prefix = o ns = " ...

最新文章

  1. Measuring Similarity between Clusters (Clusters 之间相似度的测量)【未完待续】
  2. Linux就业技术指导(二):简历项目经验示例
  3. c语言 while 教案,c语言电子教案(刘丹)
  4. pve安装黑群晖直通硬盘_基于ProXmoX VE的虚拟化黑群晖6.2安装,硬盘直通
  5. 关于测试用例的一些思考
  6. RTX5 | 线程管理01 - 创建线程(静态堆栈方式)
  7. 你需要知道的基础算法知识——STL和基础数据结构(一)
  8. 背景裁剪图片html,HTML5基础加强css样式篇(文本裁剪,背景裁剪:background-origin,background-position,background-clip)(三十七)...
  9. 如何将matlab转成jav,Matlab将GUI转化为exe文件,并且进行发布
  10. js原生语法实现表格操作
  11. Fread函数的用法
  12. w3cschool菜鸟教程php,JS实例学习笔记——w3cschool+菜鸟教程
  13. jrtplib的使用
  14. 欧盟无线产品RED认证
  15. 电子表整点报时怎么取消_双11红包雨入口在哪 双十一秒杀券怎么抢
  16. 2022-2028年中国自行车行业市场全景评估及投资前景规划报告
  17. javac: 无效的标记
  18. docker minio部署作为shareX截图软件的图床
  19. elasticsearch Routing 路由详解
  20. Win11系统频繁断网怎么办?Win11网络不稳定的解决方法

热门文章

  1. js,JQ 图片转换base64 base64转换为file对象,blob对象
  2. canvas卡通兔子萝卜飞行动画
  3. <数据结构>链表实战之单链表与双链表的增删改查
  4. python 图片转换为ico图标
  5. 如何将IE浏览器设置为默认浏览器
  6. web项目运行时无法重命名MySQL表问题排查
  7. Ubuntu14.04安装LSD-SLAM
  8. 使用jib-maven-plugin分层构建Docker镜像——避免直接使用FatJar
  9. 计算机网络基础之互联网总结
  10. 推荐一个免费的论文查重检测软件PaperRight