汇编各类指令用法及含义分析

合集下载

常见汇编语言指令解释

常见汇编语言指令解释

常见汇编语言指令解释:1.Rn 表示R0~R7中的一个2.#data 表示8位的数值 00H~FFH3.direct 表示8位的地址 00H~FFH4.#data16 16位立即数5.@Ri 表示寄存器间接寻址只能是R0或者R16.@DPTR 表示数据指针间接寻址,用于外部64k的RAM/ROM寻址7.bit 表示位地址8.$ 表示当前地址寄存器寻址 MOV A,R1 将R1中的数值赋予A直接寻址 MOV A,3AH 将地址3AH中的数值赋予A立即寻址 MOV A,#3AH 将3AH数值赋予Amov dptr,#1828h寄存器间址 MOV A,@Ri 将 Ri中地址的数值赋予A, Ri或是R0或是R1MOV A,@DPTR变址寻址 MOVC A,@A+DPTR 以A中的数值为地址偏移量进行查表;变址寻址区是程序存储器ROM,而不是数据存储器RAM相对寻址 AJMP MAIN 跳转到行号为MAIN处位寻址 MOV C,7FH 将位地址7FH的数值赋予CMOV C,2FH.7;MOV C,ACC.7MOV A,#3AH 数据传输、赋值命令PUSH direct 将direct为地址的数值压入堆栈中POP direct 将direct为地址的数值弹出堆栈XCH A,direct 将direct中的数值与A进行交换ADD A,direct 将direct中的数值与A中的数值相加INC direct 将direct中的数值加1SUBB A,direct 将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零 CLR CDEC direct 将direct中的数值减1DA A 用于对BCD码加减法后进行10进制调整MUL AB 将A和B相乘,并把高八位放在B中,低八位放在A中DIV AB 将A和B相除,并把商的整数部分放在A中,余数放在B中ANL A,direct 将A与direct中的数值进行与运算,结果保留在A中(与运算规律:有0出0,全1出1)ORL A,direct 将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0)XRL A,direct 将A与direct中的数值进行异或运算,结果保留在A中(异或运算规律:全0出0,全1出0,01、10出1)CLR A 对A清零CPL A 对A取反RL A 对A中数左移RR A 对A中数右移RLC A 对A中数带Cy左移RRC A 对A中数带Cy右移SWAP A 对A中的数高4位低4位互相交换LJMP 长跳转指令,64K地址范围AJMP 短跳转指令,2K地址范围JZ rel 如果A为0就跳转到rel行号处JNZ rel 如果A不为0就跳转到rel行号处CJNE A,#data,rel 如果A不等于data就跳转到rel行号处DJNZ R1,rel 如果R1减1后不为0就跳转到rel行号处ACALL rel 调用rel子程序,2K地址以内LCALL rel 调用rel子程序,64K地址以内RET 子程序返回指令RETI 中断程序返回指令NOP 空操作指令MOV C,bit 将位地址bit中的值赋予CCLR bit 将bit位地址清0SETB bit 将bit位地址置1CPL bit 将bit位地址取反ANL C,bit 将地址bit中的值和C做与运算,结果存放在C中ORL C,bit 将地址bit中的值和C做或运算,结果存放在C中JC rel 如果Cy为1,就跳转到rel行号处JNC rel 如果Cy为0,就跳转到rel行号处JB bit,rel ;若BIT=1则转移JNB bit,rel ;若BIT=0则转移JBC bit,reL ;若BIT=1则转移,且BIT置11 加法指令:ADD A,Rn ;ADD A,direct ; ADD A,@Ri ;ADD A,#DATA2 带CY的加法指令:ADDC A,Rn ;ADDC A,direct ; ADDC A,@Ri ;ADDC A,#DATA3 加一指令:INC A ;INC Rn ; INC direct ; INC @Ri ;INC DPTR4 减法指令:SUBB A,Rn ;SUBB A,direct ; SUBB A,@Ri ;SUBB A,#data5 减一指令: DEC A ;DEC Rn ;DEC direct ;DEC @Ri6 十进制调整指令:DA A7 乘法和除法指令:MUL AB ;乘积高八位放在B中,低八位放在A中DIV AB ;商的整数放在A中,余数放在B中8 逻辑异或: XRL A,Rn。

16位与32位汇编语言常用指令总结

16位与32位汇编语言常用指令总结

16位与32位汇编语言常用指令总结在计算机编程领域,汇编语言被广泛应用于底层程序设计,直接操作计算机硬件。

其中,16位和32位汇编语言是常见的两种类型。

本文将总结这两种汇编语言中常用的指令,帮助读者更好地理解和应用它们。

一、16位汇编语言常用指令1. 数据传送指令- MOV:将数据从一个寄存器或内存位置传送到另一个寄存器或内存位置。

- XCHG:交换两个寄存器或内存位置的数据。

2. 算术运算指令- ADD/SUB:实现加法和减法运算。

- MUL/IMUL:实现无符号与有符号乘法运算。

- DIV/IDIV:实现无符号与有符号除法运算。

3. 逻辑运算指令- AND/OR/XOR:实现与、或、异或逻辑运算。

- NOT:对操作数进行按位取反操作。

4. 条件转移指令- JMP:无条件跳转到指定地址。

- JZ/JNZ:根据零标志位(ZF)的值进行跳转。

- JC/JNC:根据进位标志位(CF)的值进行跳转。

5. 循环指令- LOOP:根据计数器的值进行循环。

- JCXZ/JECXZ:根据CX/ECX寄存器的值进行循环。

二、32位汇编语言常用指令1. 数据传送指令- MOV:同16位汇编语言中的指令,用于数据传送。

- PUSH/POP:将数据推入栈或从栈中弹出。

2. 算术运算指令- ADD/SUB:同16位汇编语言中的指令,用于加法和减法运算。

- MUL/IMUL:同16位汇编语言中的指令,用于乘法运算。

- DIV/IDIV:同16位汇编语言中的指令,用于除法运算。

3. 逻辑运算指令- AND/OR/XOR:同16位汇编语言中的指令,用于逻辑运算。

- NOT:同16位汇编语言中的指令,用于按位取反。

4. 条件转移指令- JMP:同16位汇编语言中的指令,用于无条件跳转。

- JZ/JNZ:同16位汇编语言中的指令,根据零标志位(ZF)进行跳转。

- JB/JNB:根据低位借位标志位(CF)进行跳转。

5. 循环指令- LOOP:同16位汇编语言中的指令,用于循环操作。

汇编语言各种指令的解释与用法

汇编语言各种指令的解释与用法
)etalsnart( TALX 令指码换、5 。度宽的口端设外于决取这�LA 用息信位 8 送传�XA 用息信位 61 送传。息信 送传间之口端 O/I 与 XA 或 LA 在于限只�求要殊特的令指。位志标响影不�响影的位志标对令指 字送传)XA(-<))XD(,1+)XD(( 或 节字送传)LA(-<)XD( HFF0>trop ca,XD TUO 字送传)XA(-<)trop,1+trop( 或 节字送传)LA(-<)trop( HFF0=<trop ca,trop TUO 字送传))XD(,1+)XD((-<)XA( 或节字送传))XD((-<)LA( HFF0>trop XD,ca NI 字送传)trop,1+trop(-<)XA( 或 节字送传)trop(-<)LA( HFF0=<trop trop,ca NI 。址地口端 O/I 出指要都令指 TUO 和 NI�此因�口端 O/I 到出输 UPC 从息信将令指 TUO �UPC 到入输 O/I 从息信将令指 NI 。成完来 TUO 和 NI 令指出输 入输由都信通的间之 UPC 与口端 O/I 有所�机理处微的型机继后其及 6808 对�能功本基的令指 HFF0>trop ca,XD TUO HFF0=<trop ca,trop TUO HFF0>trop XD,ca NI HFF0=<trop trop,ca NI�式格编汇的令指 )tuptuo( TUO 令指出输 )tupni( NI 令指入输、4 令指送传用专器加累、二 。器存寄段用使许允不�求要殊特的令指 。位志标响影不�戏影的位志标对令指 。中器储存或器存寄在以可数作操个一另�中器存寄在须必数作操个一�式方址寻的持支令指 )2RPO(>-<)1RPO(�能功本基的令指 2RPO,1RPO GHCX�式格编汇的令指 )egnahcxe( GHCX 令指换交、3 �器存寄 SC 是许允不 TSD 的令指 POP �2- 者 或 2+是须必改修的 PS �后据数字取存 �此因 �作操字是能只令指 POP 和 HSUP �求要殊特的令指 。位志标响影不都令指 POP 和 HSUP�响影的位志标对令指 。式方址寻数即立用使能不能不令指 pop 和 hsup�式方址寻的持支令指 )PS(-<)PS(�))PS((-<)TSD( TSD POP )CRS(-<)PS(� 2-)PS(-<)PS( CRS HSUP 。复恢据数些这将可又令指 POP 而�据数些某存暂来用常中序程在令指 HSUP�能功本基的令指 TSD POP� CRS HSUP�式格编汇的令指 )kcats eht morf pop( POP 令指栈出 )kcats eht otno hsup( HSUP 令指栈进、2 。式方数即立用能不也�SC 是能不 TSD 数作操的目 �器存寄段为时同许允不 CRS 数作操源和 TSD 数作操的目�求要殊特的令指 。位志标响影不�响影的位志标对行执的令指。令指 有所于用适制限个这 �式方址寻器储存用时同能不数作操源和数作操的目 �式方址寻的持支令指 。址地的目到送传)字或节字(数作操原将 )CRS(-<)TSD(�能功本基的令指 CRS,TSD VOM�式格编汇的令指 )evom( VOM 令指送传、1 令指送传据数用通、一

常用汇编指令

常用汇编指令

常用汇编指令汇编语言是一种低级机器语言的抽象表示,通过使用汇编指令可以编写出与硬件相关的程序。

在计算机科学领域中,汇编指令是非常重要的,是理解计算机底层原理和实现的关键。

本文将介绍一些常用的汇编指令,以帮助读者更好地理解和应用这些指令。

一、数据传输指令1. MOV指令:MOV指令用于将数据从一个位置复制到另一个位置。

例如,MOV AX, BX将寄存器BX的内容复制到AX中。

2. LEA指令:LEA指令用于将内存地址加载到寄存器中。

例如,LEA BX, [SI+10]将[S1+10]的内存地址加载到寄存器BX中。

3. PUSH指令:PUSH指令用于将数据压入栈中。

例如,PUSH AX将AX中的数据压入栈中。

4. POP指令:POP指令用于从栈中弹出数据。

例如,POP BX将栈中的数据弹出到BX中。

二、算术运算指令1. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。

例如,ADD AX, BX将BX的值加到AX中。

2. SUB指令:SUB指令用于将源操作数的值从目标操作数中减去,并将结果存储在目标操作数中。

例如,SUB AX, BX从AX中减去BX的值。

3. MUL指令:MUL指令用于将源操作数与累加器中的值相乘,并将结果存储在累加器中。

例如,MUL BX将累加器的值与BX相乘。

4. DIV指令:DIV指令用于将累加器的值除以源操作数,并将商存储在累加器中,余数存储在另一个寄存器中。

例如,DIV BX将累加器的值除以BX。

三、逻辑运算指令1. AND指令:AND指令用于对两个操作数进行逻辑与运算,并将结果存储在目标操作数中。

例如,AND AX, BX将AX与BX进行逻辑与操作。

2. OR指令:OR指令用于对两个操作数进行逻辑或运算,并将结果存储在目标操作数中。

例如,OR AX, BX将AX与BX进行逻辑或操作。

3. NOT指令:NOT指令用于对操作数进行逻辑非运算,并将结果存储在目标操作数中。

汇编语言指令功能总结

汇编语言指令功能总结

汇编语言指令功能总结汇编语言是一种低级语言,主要用于编写机器码指令的程序。

在计算机科学领域中,汇编语言是非常重要的,因为它可以直接操作计算机的硬件资源。

本文将对汇编语言中常用的指令功能进行总结。

1. 数据传输指令数据传输指令用于将数据从一个位置传送到另一个位置。

常用的数据传输指令包括MOV(将数据从一个位置复制到另一个位置)、XCHG(交换两个位置的数据)、PUSH(将数据压入堆栈)、POP (将数据从堆栈中弹出)等。

2. 算术运算指令算术运算指令用于执行各种算术运算,例如加法、减法、乘法和除法。

常用的算术运算指令包括ADD(将两个数相加)、SUB(将一个数减去另一个数)、MUL(将两个数相乘)、DIV(将一个数除以另一个数)等。

3. 逻辑运算指令逻辑运算指令用于执行各种逻辑运算,例如与、或、非和异或。

常用的逻辑运算指令包括AND(对两个数执行与运算)、OR(对两个数执行或运算)、NOT(对一个数执行非运算)、XOR(对两个数执行异或运算)等。

4. 控制转移指令控制转移指令用于实现程序的跳转和循环执行。

常用的控制转移指令包括JMP(无条件跳转到指定的地址)、JZ(如果前一个运算结果为零则跳转)、JC(如果前一个运算结果进位则跳转)等。

5. 位操作指令位操作指令用于对数据的位进行操作。

常用的位操作指令包括AND(将两个数的对应位执行与运算)、OR(将两个数的对应位执行或运算)、NOT(取反操作)等。

6. 字符串操作指令字符串操作指令用于对字符串进行操作。

常用的字符串操作指令包括MOVSB(将一个字节从源地址复制到目的地址)、LODSB(将一个字节从源地址加载到AL寄存器)、STOSB(将AL寄存器中的值存储到目的地址)等。

7. 输入输出指令输入输出指令用于与计算机的输入输出设备进行交互。

常用的输入输出指令包括IN(从指定的端口读取数据)、OUT(将数据发送到指定的端口)等。

总结:汇编语言中的指令功能丰富多样,可以实现各种复杂的操作。

汇编的基本常用指令

汇编的基本常用指令

汇编的基本常用指令汇编语言是一种底层的程序设计语言,主要用于编写机器码指令。

以下是一些常用的汇编指令:1. MOV:将数据从一个位置复制到另一个位置。

2. ADD:将两个操作数相加,并将结果存储在目的操作数中。

3. SUB:将第二个操作数从第一个操作数中减去,并将结果存储在目的操作数中。

4. INC:将一个操作数的值增加1。

5. DEC:将一个操作数的值减少1。

6. CMP:比较两个操作数的值,并将结果影响到标志寄存器中。

7. JMP:无条件跳转到指定的代码位置。

8. JZ / JE:当指定的条件成立时,跳转到指定的代码位置(零标志或相等标志)。

9. JNZ / JNE:当指定的条件不成立时,跳转到指定的代码位置(非零标志或不相等标志)。

10. JL / JB:当源操作数小于目的操作数时,跳转到指定的代码位置(小于标志或借位标志)。

11. JG / JA:当源操作数大于目的操作数时,跳转到指定的代码位置(大于标志或进位标志)。

12. CALL:调用一个子程序或函数。

13. RET:返回子程序或函数的调用处。

14. NOP:空操作,用于占位或调整程序代码的位置。

15. HLT:停止运行程序,将CPU置于停机状态。

这里只列举了一些基本的汇编指令,实际上汇编语言有更多更复杂的指令,具体使用哪些指令取决于所使用的汇编语言和目标处理器的指令集架构。

继续列举一些常用的汇编指令:16. AND:将两个操作数进行按位与运算,并将结果存储在目的操作数中。

17. OR:将两个操作数进行按位或运算,并将结果存储在目的操作数中。

18. XOR:将两个操作数进行按位异或运算,并将结果存储在目的操作数中。

19. NOT:对一个操作数的每一位进行取反操作。

20. SHL / SAL:将一个操作数的每一位向左移动指定的位数。

对于无符号数,使用SHL指令;对于带符号数,使用SAL指令。

21. SHR:将一个操作数的每一位向右移动指定的位数,高位空出的位使用0填充。

汇编语言各种指令解释及用法2篇

汇编语言各种指令解释及用法2篇

汇编语言各种指令解释及用法2篇汇编语言指令解释及用法汇编语言是一种低级编程语言,用于编写机器指令,直接控制计算机硬件。

它的指令集相对简单,但是非常灵活,可以直接操作寄存器和内存,实现各种功能。

在这篇文章中,我将为大家解释汇编语言中一些常用指令的含义和用法。

第一篇:数据传输与操作指令1. MOV指令:MOVE(MOV)指令用于在寄存器和内存之间传输数据。

例如,MOV AX, BX将BX的值传输到AX寄存器中。

2. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。

例如,ADD AX, 5将AX寄存器的值与5相加,并将结果存储在AX中。

3. SUB指令:SUB指令用于将两个操作数相减,并将结果存储在目标操作数中。

例如,SUB AX, 3将AX寄存器的值减去3,并将结果存储在AX中。

4. INC指令:INC指令用于将目标操作数的值加1。

例如,INC CX将CX寄存器的值增加1。

5. DEC指令:DEC指令用于将目标操作数的值减1。

例如,DEC DX将DX寄存器的值减去1。

6. MUL指令:MUL指令用于将两个无符号操作数相乘,结果保存在一对寄存器中。

例如,MUL BX将AX寄存器的值与BX相乘,并将结果保存在DX:AX寄存器对中。

7. DIV指令:DIV指令用于将两个无符号操作数相除,商保存在AL中,余数保存在AH中。

例如,DIV CX将DX:AX寄存器对的值除以CX,并将商保存在AL中,余数保存在AH中。

8. CMP指令:CMP指令用于比较两个操作数的值,并设置相应的标志位。

例如,CMP AX, BX将AX寄存器的值与BX进行比较。

第二篇:跳转指令与循环指令1. JMP指令:JMP指令用于无条件跳转到目标地址。

例如,JMP LABEL将程序跳转到标签LABEL处执行。

2. JZ指令:JZ指令用于判断前一次的比较结果是否为零,如果为零则跳转到目标地址。

例如,JZ LABEL将在前一次比较结果为零时跳转到标签LABEL处。

30个常用汇编命令

30个常用汇编命令

11、BSWAP(字节交换)
写法:bswap reg32 作用:将 reg32 的第 0 与第 3 个字节,第 1 与第 2 个字节进行交换。 示例:设 EAX=12345678h 执行 bswap eax;后,eax=78563412H
12、XLAT(换码)
写法:XLAT; 作用:AL=DS:[bx+AL] 将 DS:BX 所指内存中的由 AL 指定位移处的一个字节赋值给 AL。原来它的主要用途是查表。注意可以给它提供操作
13、ADD(加法)
写法:ADD reg/mem reg/mem/imm 作用:将后面的操作数加到前面的操作数中 注意:两个操作数必须类型匹配,并且不能同时是内存操作数 ADC (带进位加法) 写法:ADC reg/mem, reg/mem/imm ; 作用:dest=dest+src+cf 当 CF=0 时 ADD 与 ADC 的作用是相同的。 示例:实现 64 位数 EDX:EAX 与 ECX:EBX 的加法: Add EAX,EBX; ADC EDX,ECX;
写法:NEG reg/mem 作用:求补就是求相反数,即:dest=0-dest;
20、CMPXCHG(比较交换)
写法:CMPXCHG reg/mem, reg;
作用:AL/AX/EAX-oprd1,如果等于 0,则 oprd1=oprd2,否则,AL/AX/EAX=oprd1; 即:比较 AL/AX/EAX 与第一个操作数,如果相等,则置 ZF=1,并复制第二个操作数给第一个操作数;否则,置 ZF=0, 并复制第一个操作数给 AL/AX/EAX。 说明:CMPXCHG 主要为实现原子操作提供支持 CMPXCHG8B(8 字节比较交换指令) 写法:CMPXCHG8B MEM64; 功能:将 EDX:EAX 中的 64 位数与内存的 64 位数进行比较,如果相等,则置 ZF=1,并存储 ECX:EBX 到 mem64 指定 的内存地址;否则,置 ZF=0,并设置 EDX:EAX 为 mem64 的 8 字节内容
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编各类指令用法及含义分析
什幺是汇编语言
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。

在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。

在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。

普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。

有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。

汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。

在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。

驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

相关文档
最新文档