汇编语言指令详解大全
常见汇编语言指令解释
常见汇编语言指令解释: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。
汇编指令大全
byte cycle一、数据传送类指令MOV A, Rn 寄存器送累加器 1 1MOV Rn,A 累加器送寄存器 1 1MOV A ,@Ri 内部RAM单元送累加器 1 1MOV @Ri ,A 累加器送内部RAM单元 1 1MOV A ,#data 立即数送累加器 2 1MOV A ,direct 直接寻址单元送累加器 2 1MOV direct ,A 累加器送直接寻址单元 2 1MOV Rn,#data 立即数送寄存器 2 1MOV direct ,#data 立即数送直接寻址单元 3 2MOV @Ri ,#data 立即数送内部RAM单元 2 1MOV direct ,Rn 寄存器送直接寻址单元 2 2MOV Rn ,direct 直接寻址单元送寄存器 2 2MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1XCH A ,@Ri 累加器与内部RAM单元交换 1 1XCHD A ,direct 累加器与直接寻址单元交换 2 1XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1 SWAP A 累加器高4位与低4位交换 1 1POP direct 栈顶弹出指令直接寻址单元 2 2PUSH direct 直接寻址单元压入栈顶 2 2二、算术运算类指令ADD A, Rn 累加器加寄存器 1 1ADD A,@Ri 累加器加内部RAM单元 1 1ADD A, direct 累加器加直接寻址单元 2 1ADD A, #data 累加器加立即数 2 1ADDC A, Rn 累加器加寄存器和进位标志 1 1ADDC A,@Ri 累加器加内部RAM单元和进位标志 1 1 ADDC A, #data 累加器加立即数和进位标志 2 1ADDC A, direct 累加器加直接寻址单元和进位标志 2 1 INC A 累加器加1 1 1INC Rn 寄存器加1 1 1INC direct 直接寻址单元加1 2 1INC @Ri 内部RAM单元加1 1 1INC DPTR 数据指针加1 1 2DA A 十进制调整 1 1SUBB A, Rn 累加器减寄存器和进位标志 1 1SUBB A,@Ri 累加器减内部RAM单元和进位标志 1 1SUBB A, #data 累加器减立即数和进位标志 2 1SUBB A, direct 累加器减直接寻址单元和进位标志 2 1DEC A 累加器减1 1 1DEC Rn 寄存器减1 1 1DEC @Ri 内部RAM单元减1 1 1DEC direct 直接寻址单元减1 2 1MUL AB 累加器乘寄存器B 1 4DIV AB 累加器除以寄存器B 1 4三、逻辑运算类指令ANL A, Rn 累加器与寄存器 1 1ANL A,@Ri 累加器与内部RAM单元 1 1ANL A, direct 累加器与直接寻址单元 2 1ANL direct, A 直接寻址单元与累加器 2 1ANL direct, #data 直接寻址单元与立即数 3 1ANL A,data ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。
汇编指令大全(有注释)_IT计算机_专业资料
汇编指令大全(有注释)_IT计算机_专业资料汇编指令大全(有注释)为了方便开发者理解和使用汇编语言,本文汇编指令大全提供了对常用指令的详细注释。
汇编语言是一种低级编程语言,直接操作计算机的硬件和寄存器。
掌握汇编语言对于理解计算机底层原理和优化程序性能至关重要。
下面列举了一些常用的汇编指令,以供参考。
1. MOV指令:用于将一个数据从一个位置复制到另一个位置。
可以在寄存器和内存之间传输数据。
示例:MOV AX, 10h ; 将数据10h复制到寄存器AX中MOV [BX], AX ; 将寄存器AX中的数据复制到内存地址BX指向的位置2. ADD指令:用于将两个数据相加,并将结果存储在指定的位置。
示例:ADD AX, BX ; 将寄存器AX和BX中的数据相加,并将结果保存在AX中ADD [BX], CX ; 将内存地址BX指向的数据与寄存器CX中的数据相加,并将结果保存在内存地址BX指向的位置3. SUB指令:用于将两个数据相减,并将结果存储在指定的位置。
示例:SUB AX, BX ; 将寄存器AX的数据减去BX的数据,并将结果保存在AX中SUB [BX], CX ; 将内存地址BX指向的数据减去寄存器CX的数据,并将结果保存在内存地址BX指向的位置4. INC指令:用于将指定位置的数据加1。
示例:INC AX ; 将寄存器AX的数据加1INC [BX] ; 将内存地址BX指向的数据加15. DEC指令:用于将指定位置的数据减1。
示例:DEC AX ; 将寄存器AX的数据减1DEC [BX] ; 将内存地址BX指向的数据减16. JMP指令:用于无条件跳转到指定的代码位置。
示例:JMP label1 ; 无条件跳转到标签label1处JMP 100h ; 无条件跳转到内存地址100h处7. CMP指令:用于比较两个数据的大小,并根据比较结果设置条件码寄存器。
示例:CMP AX, BX ; 比较寄存器AX和BX的数据大小,并设置条件码寄存器CMP [BX], CX ; 比较内存地址BX指向的数据和寄存器CX的数据大小,并设置条件码寄存器8. JE指令:用于在两个数据相等时跳转到指定的代码位置。
汇编指令大全
汇编指令大全(DST:destination目的操作数/地址;SRC:source源操作数/地址;port:端口;ac:Accumulator累加器;reg:register寄存器;cnt:counter计数器;opr:除了立即数之外的所有寻址方式(寄存器);立即数:直接包含在代码中,作为代码的一部分,不需要保存在寄存器中的操作数,相当于高级语言中的常量;r8/r16:8位通用寄存器/16位通用寄存器;SR:segment register段寄存器,包括DS、SS、ES、CS;mem:memory,表示存储器操作数;addr:address,表示内存单元地址;) [数据传送指令]一、通用数据传送指令1、传送指令 MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)←(SRC) 将原操作数(字节或字)传送到目的地址。
指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。
指令的执行对标志位的影响:不影响标志位。
指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;目的操作数DST不能是CS,也不能用立即数方式。
2、进栈指令 PUSH (push onto the stack)出栈指令 POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH SRC (SP)←(SP)-2 ;(SP)←(SRC)POP DST (DST)←((SP));(SP)←(SP)指令支持的寻址方式:push 和 pop指令不能不能使用立即数寻址方式。
指令对标志位的影响:PUSH 和 POP指令都不影响标志位。
指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者 -2;POP指令的DST不允许是CS寄存器;3、交换指令 XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1)←>(OPR2)指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
汇编语言命令大全
1 汇编语言命令大全汇编命令大全<---->MOV(MOVe)传送指令P28 PUSH 入栈指令P32POP 出栈指令P33XCHG(eXCHanG)交换指令P34XLAT(TRANSLATE)换码指令P34LEA (Load Effective Address)有效地址送寄存器指令P35 LDS(Load DS with pointer)指针送寄存器和DS指令P35 LES(Load ES with pointer)指针送寄存器和ES指令P35 LAHF(Load AH with Flags)标志位送AH指令P36 SAHF(Store AH into Flgs)AH送标志寄存器指令P36 PUSHF(PUSH the Flags)标志进栈指令P36POPF(POP the Flags)标志出栈指令P37ADD 加法指令P38ADC 带进位加法指令P39INC 加1指令P39SUB(SUBtract)不带借位的减法指令P40SBB(SuVtrach with borrow)带借位的减法指令P40DEC(DECrement)减1指领P41NEG(NEGate)求补指令P41CMP(CoMPare)比较指令P42MUL(unsinged MULtiple)无符号数乘法指令P46IMUL(sIgned MUL tiple)有符号数乘法指令P46DIV(unsigned DIVide)无符号数除法指令P48IDIV(sIgned DIVide)有符号数除法指令P48CBW(Count Byte to Word)字节转换为字指令P50CWD(Count Word to Doble word)字转换为双字指令P50 DAA 压缩的BCD码加法十进制调整指令P53DAS 压缩的BCD码减法十进制调整指令P53AAA 非压缩的BCD码加法十进制调整指令P54AAS 非压缩的BCD码加法十进制调整指令P54AND 逻辑与指令P54OR 逻辑或指令P55XOR 逻辑异或指令P56NOT 逻辑非指令P56TEST 测试指令P57SHL(SHift logical Letf)逻辑左移指令P57SHR(SHift logical Right)逻辑右移指令P57ROL(Rotate Left )循环左移指令P58ROR(Rotate Right)循环右移指令P58RCL(Rotate Left through Carry)带进位循环左移P58 RCR(Rotate Right through Carry)带进位循环左移P58 MOVS(MOVe String)串传送指令P58STOS(STOre into String)存入串指令P60LODS(LOad from string)从串取指令P60REP(REPeat)重复操作前缀P61CLD(CLear Direction flag)清除方向标志指令P61STD(SeT Direction flag)设置方向标志指令P61CMPS(CoMPare String)串比较指令P62SCAS(SCAn String)串扫描指令P63REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀P63REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀IN(INput)输入指令P65OUT(OUTput)输出指令P65JMP(JuMP)无条件转移指令P66JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令P67LOOP 循环指令P70LOOPZ/LOOPE 为零/相等时循环指令P70LOOPNZ/LOOPNE 不为零/不相等时循环指令P70CALL 子程序调用指令P71RET(RETun)子程序返回指令P72CLC(CLear Carry)进位位置0指令P77CMC(CoMplement Carry)进位位求反指令P77SRC(SeT Carry)进位位置1指令P77NOP(No OPeretion)无操作指令P77HLT(HaLT)停机指令P77OFFSET 返回偏移地址P85SEG 返回段地址P85EQU(=) 等值语句P90PURGE 解除语句P91DUP 操作数字段用复制操作符P93SEGMENT,ENDS 段定义指令P95ASSUME 段地址分配指令P95ORG 起始偏移地址设置指令P96$ 地址计数器的当前值P97PROC,ENDP 过程定义语句P97NAME,TITLE,END 程序开始结束语句P98MACRO,ENDM 宏定义指令P99---------------------------------------------------------------------------------- 作者:wutoyou-- 发布时间:2004-2-3 14:42:45--段内直接短跳转JMP SHORT OPR段内直接近转移JMP NEAR PTR OPR段内间接转移JMP WORD PTR OPR 段间直接转移JMP FAR PTR OPR段间间接转移JMP DWORD PTR OPRJZ OPR //结果为零转移JNZ OPR //结果不为零转移JS OPR //结果为负转移JNS OPR //结果为正转移JO OPR //溢出转移JNO OPR //不溢出转移JP OPR //结果为偶转移JNP OPR //结果为奇转移JC OPR //有进位转移JNC OPR //无进位转移。
汇编语言常用指令大全
汇编语言常用指令大全汇编语言是一种计算机编程语言,使用指令来控制计算机硬件执行特定的操作。
在本文中,我们将介绍一些常用的汇编语言指令,以帮助读者更好地理解和学习汇编语言。
一、数据传输指令1. MOV:将数据从一个位置复制到另一个位置。
例子:MOV AX, BX 将寄存器BX中的值复制到寄存器AX中。
2. PUSH:将数据压入堆栈。
例子:PUSH AX 将寄存器AX中的值压入堆栈。
3. POP:从堆栈中弹出并获取数据。
例子:POP AX 从堆栈中弹出一个值,并将其存入寄存器AX中。
二、算术指令1. ADD:将两个操作数相加。
例子:ADD AX, BX 将寄存器AX和BX中的值相加,并将结果存入寄存器AX中。
2. SUB:将一个操作数从另一个操作数中减去。
例子:SUB AX, BX 将寄存器BX中的值从寄存器AX中减去,并将结果存入寄存器AX中。
3. MUL:将两个操作数相乘。
例子:MUL AX, BX 将寄存器AX和BX中的值相乘,并将结果存入寄存器AX中。
三、逻辑指令1. AND:进行逻辑与操作。
例子:AND AX, BX 对寄存器AX和BX中的值进行逻辑与操作,并将结果存入寄存器AX中。
2. OR:进行逻辑或操作。
例子:OR AX, BX 对寄存器AX和BX中的值进行逻辑或操作,并将结果存入寄存器AX中。
3. NOT:进行逻辑非操作。
例子:NOT AX 对寄存器AX中的值进行逻辑非操作。
四、条件分支指令1. JMP:无条件跳转到指定的地址。
例子:JMP label 跳转到标记为label的地址。
2. JZ:当操作数为零时跳转到指定的地址。
例子:JZ label 如果寄存器AX中的值为零,则跳转到标记为label 的地址。
3. JC:当进位标志为1时跳转到指定的地址。
例子:JC label 如果进位标志位为1,则跳转到标记为label的地址。
五、循环指令1. LOOP:当计数器不为零时,循环执行指定的代码块。
汇编指令大全+很全的汇编指令
for Addition)
1. 调整操作如下
格式: DAA
(1) 若(AL) and 0FH>9 或 AF=1
,则(AL)<--(AL)+6,AF<--1,对低
功能: 对AL中的两个组合进制数相加的结果进行调 四位的调整.
整,调整结果仍放在AL中,进位标志放在CF中.
(2) 若(AL) and 0F0H>90H 或
6 LAHF 标志传送指令 LAHF 格式: LAHF
2. 本指令不影响状态标位,表格 长度不超过256字节.
说明: 该指令不影响FLAG的原来 内容,AH只是复制了原FLAG的低8 位内容.
功能: 取FLAG标志寄存器低8位至AH寄存器.(AH)<-
-(FLAG)7~0
7 SAHF 标志传送指令 SAHF
说明:
格式: DEC OPRD 功能: OPRD<--OPRD-1
1. OPRD 为寄存器或存储器操作 数.
2. 这条指令执行结果影响AF、 OF、PF、SF、ZF标志位,但不影 响CF标志位.
页码,4/22
星尘-易尘
302 NEG 303 CMP
304 AAS 305 DAS 306 MUL
取补指令 NEG(NEGate)
未组合的十进制加法调整指令 AAA(ASCII Adgust 说明:
for Addition)
1. 组合的十进制数和未组合的
格式: AAA
十进制数:在计算中,十进制数可
用四位二进制数编码,称为BCD
功能: 对两个组合的十进制数相加运算(存在AL中) 码.
的结果进行调整,产生一个未组合的十进制数放在
AX中.
SUB [BX+25],AX
汇编语言指令详解大全
汇编语言指令详解大全助记符指令说明字节数周期数(数据传递类指令)MOV A,Rn 寄存器传送到累加器 1 1MOV A,direct直接地址传送到累加器2 1MOV A,@Ri 累加器传送到外部RAM(8 地址)1 1MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1MOV Rn,direct直接地址传送到寄存器2 2MOV Rn,#data累加器传送到直接地址2 1MOV direct,Rn寄存器传送到直接地址2 1MOV direct,direct直接地址传送到直接地址3 2MOV direct,A累加器传送到直接地址2 1MOV direct,@Ri间接RAM 传送到直接地址2 2MOV direct,#data立即数传送到直接地址3 2MOV @Ri,A 直接地址传送到直接地址1 2MOV @Ri,direct直接地址传送到间接RAM2 1MOV @Ri,#data立即数传送到间接RAM2 2MOV DPTR,#data1616 位常数加载到数据指针3 1MOVC A,@A+DPTR代码字节传送到累加器1 2MOVC A,@A+PC 代码字节传送到累加器1 2MOVX A,@Ri 外部RAM(8 地址)传送到累加器1 2MOVX A,@DPTR 外部RAM(16 地址)传送到累加器1 2MOVX @Ri,A 累加器传送到外部RAM(8 地址)1 2MOVX @DPTR,A 累加器传送到外部RAM(16 地址)1 2PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1XCH A,direct直接地址和累加器交换2 1XCH A, @Ri 间接RAM 和累加器交换1 1XCHD A, @Ri间接RAM 和累加器交换低4 位字节1 1 (算术运算类指令)INC A 累加器加1 1 1 INC Rn 寄存器加1 1 1 INC direct 直接地址加1 2 1 INC @Ri 间接RAM 加1 1 1 INC DPTR 数据指针加1 1 2 DEC A 累加器减1 1 1 DEC Rn 寄存器减1 1 1 DEC direct 直接地址减1 2 2 DEC @Ri 间接RAM 减1 1 1MUL AB 累加器和B 寄存器相乘1 4DIV AB 累加器除以B 寄存器 1 4 DA A 累加器十进制调整 1 1ADD A,Rn 寄存器与累加器求和 1 1ADD A,direct 直接地址与累加器求和2 1ADD A,@Ri 间接RAM 与累加器求和1 1ADD A,#data 立即数与累加器求和 2 1ADDC A,Rn 寄存器与累加器求和(带进位)1 1ADDC A,direct 直接地址与累加器求和(带进位)2 1ADDC A,@Ri 间接RAM 与累加器求和(带进位)1 1ADDC A,#data 立即数与累加器求和(带进位)2 1SUBB A,Rn 累加器减去寄存器(带借位)1 1SUBB A,direct 累加器减去直接地址 2 1(带借位)SUBB A,@Ri 累加器减去间接RAM(带借位)1 1SUBB A,#data累加器减去立即数(带借位)2 1 (逻辑运算类指令)ANL A,Rn 寄存器“与”到累加器1 1ANL A,direct 直接地址“与”到累加器2 1ANL A,@Ri 间接RAM“与”到累加器1 1ANL A,#data 立即数“与”到累加器2 1ANL direct,A 累加器“与”到直接地址2 1ANL direct, 立即数“与”到直接 3 2#data 地址ORL A,Rn 寄存器“或”到累加器1 2ORL A,direct 直接地址“或”到累加器2 1ORL A,@Ri 间接RAM“或”到累加器1 1ORL A,#data 立即数“或”到累加器2 1ORL direct,A 累加器“或”到直接地址2 1ORL direct,#data立即数“或”到直接地址3 1XRL A,Rn 寄存器“异或”到累加器1 2XRL A,direct 直接地址“异或”到累加器2 1XRL A,@Ri 间接RAM“异或”到累加器1 1XRL A,#data 立即数“异或”到累加器2 1XRL direct,A 累加器“异或”到直接地址2 1XRL direct,#data立即数“异或”到直接地址3 1CLR A 累加器清零 1 2 CPL A 累加器求反 1 1 RL A 累加器循环左移 1 1RLC A 带进位累加器循环左移1 1RR A 累加器循环右移 1 1RRC A 带进位累加器循环右移1 1SWAP A 累加器高、低4 位交 1 1换(控制转移类指令)JMP @A+DPTR 相对DPTR 的无条件间接转移1 2JZ rel 累加器为0 则转移2 2JNZ rel 累加器为1 则转移2 2CJNE A,direct,rel 比较直接地址和累加器,不相等转移3 2CJNE A,#data,rel 比较立即数和累加器,不相等转移3 2CJNE Rn,#data,rel 比较寄存器和立即数,不相等转移2 2CJNE @Ri,#data,rel 比较立即数和间 3 2接RAM,不相等转移DJNZ Rn,rel 寄存器减1,不为0 则转移3 2DJNZ direct,rel 直接地址减1,不为0 则转移3 2NOP 空操作,用于短暂延时1 1ACALL add11 绝对调用子程序 2 2 LCALL add16 长调用子程序 3 2 RET 从子程序返回 1 2RETI 从中断服务子程序返回1 2AJMP add11 无条件绝对转移 2 2 LJMP add16 无条件长转移 3 2 SJMP rel 无条件相对转移 2 2(布尔指令)CLR C 清进位位 1 1 CLR bit 清直接寻址位 2 1 SETB C 置位进位位 1 1 SETB bit 置位直接寻址位 2 1 CPL C 取反进位位 1 1 CPL bit 取反直接寻址位 2 1ANL C,bit 直接寻址位“与”到进位位2 2ANL C,/bit 直接寻址位的反码“与”到进位位2 2ORL C,bit 直接寻址位“或”到进位位2 2ORL C,/bit 直接寻址位的反码“或”到进位位2 2MOV C,bit 直接寻址位传送到进位位2 1MOV bit, C 进位位位传送到直接 2 2寻址JC rel 如果进位位为1 则转移2 2JNC rel 如果进位位为0 则转移2 2JB bit,rel如果直接寻址位为1则转移3 2JNB bit,rel如果直接寻址位为0则转移3 2JBC bit,rel直接寻址位为1 则转移并清除该位2 2(伪指令)ORG 指明程序的开始位置DB 定义数据表DW 定义16 位的地址表EQU 给一个表达式或一个字符串起名DATA 给一个8 位的内部RAM起名XDATA 给一个8 位的外部RAM 起名BIT 给一个可位寻址的位单元起名END 指出源程序到此为止(指令中的符号标识)Rn 工作寄存器R0-R7Ri 工作寄存器R0 和R1@Ri 间接寻址的8 位RAM 单元地址(00H-FFH)#data8 8 位常数#data16 16 位常数addr16 16 位目标地址,能转移或调用到64KROM 的任何地方addr11 11 位目标地址,在下条指令的2K 范围内转移或调用Rel 8 位偏移量,用于SJMP 和所有条件转移指令,范围-128~+127Bit 片内RAM 中的可寻址位和SFR 的可寻址位Direct 直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH$ 指本条指令的起始位置。
汇编语言常用指令大全
1.通用数据传送指令.MOV----> moveMOVSX---->extended move with sign data MOVZX---->extended move with zero data PUSH---->pushPOP---->popPUSHA---->push allPOPA---->pop allPUSHAD---->push all dataPOPAD---->pop all dataBSWAP---->byte swapXCHG---->exchangeCMPXCHG---->compare and changeXADD---->exchange and addXLAT---->translate2.输入输出端口传送指令.IN---->inputOUT---->output3.目的地址传送指令.LEA---->load effective addressLDS---->load DSLES---->load ESLFS---->load FSLGS---->load GSLSS---->load SS4.标志传送指令.LAHF---->load AH from flagSAHF---->save AH to flagPUSHF---->push flagPOPF---->pop flagPUSHD---->push dflagPOPD---->pop dflag二、算术运算指令ADD---->addADC---->add with carryINC---->increase 1AAA---->ascii add with adjustDAA---->decimal add with adjustSUB---->substractSBB---->substract with borrowDEC---->decrease 1NEC---->negativeCMP---->compareAAS---->ascii adjust on substractDAS---->decimal adjust on substractMUL---->multiplicationIMUL---->integer multiplicationAAM---->ascii adjust on multiplicationDIV---->divideIDIV---->integer divideAAD---->ascii adjust on divideCBW---->change byte to wordCWD---->change word to double wordCWDE---->change word to double word with sign to EAXCDQ---->change double word to quadrate word三、逻辑运算指令———————————————————————————————————————AND---->andOR---->orXOR---->xorNOT---->notTEST---->testSHL---->shift leftSAL---->arithmatic shift leftSHR---->shift rightSAR---->arithmatic shift rightROL---->rotate leftROR---->rotate rightRCL---->rotate left with carryRCR---->rotate right with carry四、串指令———————————————————————————————————————MOVS---->move stringCMPS---->compare stringSCAS---->scan stringLODS---->load stringSTOS---->store stringREP---->repeatREPE---->repeat when equalREPZ---->repeat when zero flagREPNE---->repeat when not equalREPNZ---->repeat when zero flagREPC---->repeat when carry flagREPNC---->repeat when not carry flag五、程序转移指令———————————————————————————————————————1>无条件转移指令(长转移)JMP---->jumpCALL---->callRET---->returnRETF---->return far2>条件转移指令(短转移,-128到+127的距离内)JAE---->jump when above or equalJNB---->jump when not belowJB---->jump when belowJNAE---->jump when not above or equalJBE---->jump when below or equalJNA---->jump when not aboveJG---->jump when greaterJNLE---->jump when not less or equalJGE---->jump when greater or equalJNL---->jump when not lessJL---->jump when lessJNGE---->jump when not greater or equalJLE---->jump when less or equalJNG---->jump when not greaterJE---->jump when equalJZ---->jump when has zero flagJNE---->jump when not equalJNZ---->jump when not has zero flagJC---->jump when has carry flagJNC---->jump when not has carry flagJNO---->jump when not has overflow flagJNP---->jump when not has parity flagJPO---->jump when parity flag is oddJNS---->jump when not has sign flagJO---->jump when has overflow flagJP---->jump when has parity flagJPE---->jump when parity flag is evenJS---->jump when has sign flag3>循环控制指令(短转移)LOOP---->loopLOOPE---->loop equalLOOPZ---->loop zeroLOOPNE---->loop not equalLOOPNZ---->loop not zeroJCXZ---->jump when CX is zeroJECXZ---->jump when ECX is zero4>中断指令INT---->interruptINTO---->overflow interruptIRET---->interrupt return5>处理器控制指令HLT---->haltWAIT---->waitESC---->escapeLOCK---->lockNOP---->no operationSTC---->set carryCLC---->clear carryCMC---->carry make changeSTD---->set directionCLD---->clear directionSTI---->set interruptCLI---->clear interrupt六、伪指令—————————————————————————————————————DW---->definw wordPROC---->procedureENDP---->end of procedureSEGMENT---->segmentASSUME---->assumeENDS---->end segmentEND---->end。
(完整word版)汇编语言指令详解大全,推荐文档
2
1
MOV
bit, C
进位位位传送到直接寻址
2
2
JC
rel
如果进位位为1 则转移
2
2
JNC
rel
如果进位位为0 则移
2
2
JB
bit,rel
如果直接寻址位为1 则转移
3
2
JNB
bit,rel
如果直接寻址位为0 则转移
3
2
JBC
bit,rel
直接寻址位为1 则转移并清除该位
2
2
(伪指令)
1
1
RRC
A
带进位累加器循环右移
1
1
SWAP
A
累加器高、低4 位交换
1
1
(控制转移类指令)
JMP
@A+DPTR
相对DPTR 的无条件间接转移
1
2
JZ
rel
累加器为0 则转移
2
2
JNZ
rel
累加器为1 则转移
2
2
CJNE
A,direct,rel
比较直接地址和累加器,不相等转移
3
2
CJNE
A,#data,rel
1
2
MOVX
A,@Ri
外部RAM(8 地址)传送到累加器
1
2
MOVX
A,@DPTR
外部RAM(16 地址)传送到累加器
1
2
MOVX
@Ri,A
累加器传送到外部RAM(8 地址)
1
2
MOVX
@DPTR,A
累加器传送到外部RAM(16 地址)
汇编语言指令大全
汇编语言指令大全前言汇编语言是一种底层的计算机语言,用于编写程序时直接操作硬件,并且能够直接控制计算机的指令执行。
在学习汇编语言时,掌握各种指令是非常重要的,本文将系统性地介绍汇编语言中常用的指令,以便读者更好地理解和使用汇编语言。
数据传送指令数据传送指令用于在寄存器、内存之间传送数据,常用的数据传送指令有MOV、XCHG等。
MOVMOV指令将数据从一个地方(来源)移动到另一个地方(目的地),语法如下:MOV 目的地, 来源例如:MOV AX, 5XCHGXCHG指令用于交换两个操作数的值,语法如下:XCHG 寄存器1, 寄存器2例如:XCHG AX, BX算术操作指令算术操作指令用于进行各种算术运算,如加法、减法、乘法、除法等,常用的算术操作指令有ADD、SUB、MUL、DIV等。
ADDADD指令用于两个操作数相加并将结果存储在目的地,语法如下:ADD 目的地, 源操作数例如:ADD AX, BXSUB指令用于从目的地减去源操作数的值,语法如下:SUB 目的地, 源操作数例如:SUB AX, 10MULMUL指令用于无符号乘法操作,将累加器AL与源操作数执行乘法,结果存储在累加器中,语法如下:MUL 源操作数例如:MUL BLDIVDIV指令用于无符号除法操作,将累加器AX中的双字数值除以源操作数,商存储在AX中,余数存储在DX中,语法如下:DIV 源操作数例如:DIV CX控制转移指令控制转移指令用于改变程序执行的顺序,如无条件跳转、条件跳转等,常用的控制转移指令有JMP、JZ、JC等。
JMPJMP指令用于无条件跳转到指定的地址执行,语法如下:JMP 目标地址例如:JMP STARTJZ指令表示“零标志”(Zero Flag),即在上一个运算结果为零时跳转到指定地址执行,语法如下:JZ 目标地址例如:JZ LOOPJCJC指令表示“进位标志”(Carry Flag),即在发生进位时跳转到指定地址执行,语法如下:JC 目标地址例如:JC ADD_OVERFLOW总结本文介绍了汇编语言中常用的数据传送指令、算术操作指令和控制转移指令,这些指令是汇编语言编程时必须掌握的基础知识。
汇编语言指令汇总
汇编语言指令汇总汇编语言是一种低级编程语言,它直接操作计算机硬件,使用指令来完成特定的任务。
下面是一些常用的汇编语言指令汇总。
1.操作数传送指令:-MOV:将数据从一个位置复制到另一个位置。
-XCHG:交换两个位置中的数据。
2.算术指令:-ADD:将两个数相加并将和存储在指定位置。
-SUB:将两个数相减并将差存储在指定位置。
-MUL:将两个数相乘并将结果存储在指定位置。
-DIV:将两个数相除并将商存储在指定位置。
-INC:将一个数增加1-DEC:将一个数减少13.逻辑指令:-AND:对两个数进行逻辑与操作并将结果存储在指定位置。
-OR:对两个数进行逻辑或操作并将结果存储在指定位置。
-XOR:对两个数进行逻辑异或操作并将结果存储在指定位置。
-NOT:对一个数进行逻辑非操作并将结果存储在指定位置。
4.控制指令:-JMP:无条件跳转到指定位置。
-JZ:如果前一条指令的结果为0,则跳转到指定位置。
-JNZ:如果前一条指令的结果不为0,则跳转到指定位置。
-JC:如果前一条指令产生进位,则跳转到指定位置。
-JNC:如果前一条指令不产生进位,则跳转到指定位置。
5.栈操作指令:-PUSH:将数据放入栈中。
-POP:将栈顶的数据弹出。
6.输入输出指令:-IN:从外部设备中读取数据。
-OUT:将数据发送到外部设备。
7.循环指令:-LOOP:根据计数寄存器的值,重复执行指定的代码块。
8.过程调用指令:-CALL:调用一个子程序。
-RET:从子程序返回。
9.字符串指令:-MOVS:将一个字节或一个字从一个位置复制到另一个位置。
-CMPS:将两个位置中的字节或字进行比较。
除了以上提到的指令外,不同的汇编语言还有其它特定的指令,用于特定的硬件操作或功能实现。
这些指令的语法与使用方法可能略有不同,具体请参考所使用的汇编语言的文档或手册。
总之,汇编语言指令是汇编语言的基础,熟练掌握和理解这些指令对于编写高效和可靠的汇编程序至关重要。
汇编指令大全(完整版有注释)
汇编指令大全(有注释)一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第一个操作数里)XLAT 字节查表转换.── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令───────────────────────────────────────ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令───────────────────────────────────────DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为"0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环. LOOPNE/LOOPNZ CX不为零且标志Z=0时循环. JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态. ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令───────────────────────────────────────DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.七、处理机控制指令:标志处理指令CLC(进位位置0指令)CMC(进位位求反指令)STC(进位位置为1指令)CLD(方向标志置1指令)STD(方向标志位置1指令)CLI(中断标志置0指令)STI(中断标志置1指令)NOP(无操作)HLT(停机)WAIT(等待)ESC(换码)LOCK(封锁)。
汇编语言指令大全
汇编语言指令大全汇编语言是一种低级语言,它直接使用计算机的指令集架构,能够直接控制计算机硬件。
在学习和使用汇编语言时,了解各种指令是非常重要的。
本文将为您介绍汇编语言中常用的指令,帮助您更好地理解和应用汇编语言。
一、数据传送指令。
数据传送指令用于将数据从一个位置传送到另一个位置,常用的数据传送指令包括MOV、XCHG等。
MOV指令用于将数据从一个位置复制到另一个位置,而XCHG指令则用于交换两个位置的数据。
二、算术运算指令。
算术运算指令用于对数据进行算术运算,包括加法、减法、乘法、除法等。
常用的算术运算指令有ADD、SUB、MUL、DIV等。
这些指令可以帮助程序实现各种复杂的算术运算。
三、逻辑运算指令。
逻辑运算指令用于对数据进行逻辑运算,包括与、或、非、异或等。
常用的逻辑运算指令有AND、OR、NOT、XOR等。
这些指令可以帮助程序实现各种逻辑运算,如逻辑与、逻辑或、逻辑非等。
四、条件转移指令。
条件转移指令用于根据条件来改变程序的执行顺序,包括跳转、循环等。
常用的条件转移指令有JMP、JE、JNE、JG、JL等。
这些指令可以帮助程序实现各种条件判断和跳转。
五、程序控制指令。
程序控制指令用于控制程序的执行流程,包括调用子程序、返回、中断等。
常用的程序控制指令有CALL、RET、INT等。
这些指令可以帮助程序实现模块化编程和中断处理。
六、字符串操作指令。
字符串操作指令用于对字符串进行操作,包括复制、比较、连接等。
常用的字符串操作指令有MOVS、CMPS、LODS、STOS等。
这些指令可以帮助程序实现对字符串的高效处理。
七、输入输出指令。
输入输出指令用于与外部设备进行数据交换,包括从外部设备输入数据、向外部设备输出数据等。
常用的输入输出指令有IN、OUT等。
这些指令可以帮助程序实现与外部设备的通信。
总结。
汇编语言指令种类繁多,每种指令都有其特定的功能和用途。
掌握这些指令,能够帮助程序员更好地编写高效、精确的汇编语言程序。
(完整word版)汇编语言指令大全
的十进制数数且仍存于 AL 中.
否则(AL)<--(AL) and 0FH
ADC
带进位加法指令 ADC(Addition Carry)
说明:
格式: ADC OPRD1,OPRD2
1. OPRD1 为任一通用寄存器或存储器操作数,可以是任意一个通用寄
功能: OPRD1<--OPRD1 + OPRD2 + CF
CMPSW
个字符串是否相同,可以使用循环控制方法对整串进行比较.
功能: 由 SI 寻址的源串中数据与由 DI 寻址 3. 与 MOVS 相似,CMPS 指令也可以不使用操作数,此时可用指令 CMPSB
的目的串中数据进行比较,比较结果送标志 或 CMPSW 分别表示字节串比较或字串比较.
位,而不改变操作数本身.
进制数存在 AL 中.
(AL)<--(AL)MOD10
2. 本指令应跟在 MUL 指令后使用,乘积的两位十进制结果,高位放在
AH 中,低位放在 AL 中.AH 内容是 MUL 指令的结果被 10 除的商,即
(AL)/10,而最后的 AL 内容是乘积被 10 整除的余数(即个位数).
AAS
未组合十进制减法调整指令 AAS(ASCII
1. 调整操作如下
格式: DAA
(1) 若(AL) and 0FH>9 或 AF=1,则(AL)<--(AL)+6,AF<--1,对低四位
功能: 对 AL 中的两个组合进制数相加的结果 的调整.
进行调整,调整结果仍放在 AL 中,进位标志放 (2) 若(AL) and 0F0H>90H 或 CF=1,则(AL)<--(AL)+60H,CF<--1.
汇编语言常用指令大全解释
汇编语言常用指令大全解释汇编语言常用指令大全解释常用汇编指令:MOV指令为双操作数指令,两个操作数中必须有一个是寄存器.MOV DST , SRC // Byte / Word执行操作: dst = src1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器).2.立即数不能直接送段寄存器3.不允许在两个存储单元直接传送数据4.不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令: 堆栈操作是以"后进先出"的方式进行数据操作.PUSH SRC //Word入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器.入栈时高位字节先入栈,低位字节后入栈.POP DST //Word出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器.执行POP SS指令后,堆栈区在存储区的位置要改变.执行POP SP 指令后,栈顶的位置要改变.XCHG(eXCHanG)交换指令: 将两操作数值交换.XCHG OPR1, OPR2 //Byte/Word执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp1.必须有一个操作数是在寄存器中2.不能与段寄存器交换数据3.存储器与存储器之间不能交换数据.XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码.XLAT (OPR 可选) //Byte执行操作: AL=(BX+AL)指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码.LEA(Load Effective Address) 有效地址传送寄存器指令LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中.执行操作: REG = EAsrc注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONEMOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中LDS(Load DS with pointer)指针送寄存器和DS指令LDS REG , SRC //常指定SI寄存器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
片内RAM 中的可寻址位和SFR 的可寻址位
Direct
直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH
$
指本条指令的起始位置
3
2
MOV
@Ri,A
直接地址传送到直接地址
1
2
MOV
@Ri,direct
直接地址传送到间接RAM
2
1
MOV
@Ri,#data
立即数传送到间接RAM
2
2
MOV
DPTR,#data16
16 位常数加载到数据指针
3
1
MOVC
A,@A+DPTR
代码字节传送到累加器
1
2
MOVC
A,@A+PC
代码字节传送到累加器
1
2
MOVX
A,@Ri
外部RAM(8 地址)传送到累加器
1
2
MOVX
A,@DPTR
外部RAM(16 地址)传送到累加器
1
2
MOVX
@Ri,A
累加器传送到外部RAM(8 地址)
1
2
MOVX
@DPTR,A
累加器传送到外部RAM(16 地址)
1
2
PUSH
direct
直接地址压入堆栈
2
2
POP
direct
直接地址弹出堆栈
2
2
MOV
Rn,#data
累加器传送到直接地址
2
1
MOV
direct,Rn
寄存器传送到直接地址
2
1
MOV
direct,direct
直接地址传送到直接地址
3
2
MOV
direct,A
累加器传送到直接地址
2
1
MOV
direct,@Ri
间接RAM 传送到直接地址
2
2
MOV
direct,#data
立即数传送到直接地址
间接RAM“异或”到累加器
1
1
XRL
A,#data
立即数“异或”到累加器
2
1
XRL
direct,A
累加器“异或”到直接地址
2
1
XRL
direct, #data
立即数“异或”到直接地址
3
1
CLR
A
累加器清零
1
2
CPL
A
累加器求反
1
1
RL
A
累加器循环左移
1
1
RLC
A
带进位累加器循环左移
1
1
RR
A
累加器循环右移
助记符
指令说明
字节数
周期数
(数据传递类指令)
MOV
A,Rn
寄存器传送到累加器
1
1
MOV
A,direct
直接地址传送到累加器
2
1
MOV
A,@Ri
累加器传送到外部RAM(8 地址)
1
1
MOV
A,#data
立即数传送到累加器
2
1
MOV
Rn,A
累加器传送到寄存器
1
1
MOV
Rn,direct
直接地址传送到寄存器
ORG
指明程序的开始位置
DB
定义数据表
DW
定义16 位的地址表
EQU
给一个表达式或一个字符串起名
DATA
给一个8 位的内部RAM 起名
XDATA
给一个8 位的外部RAM 起名
BIT
给一个可位寻址的位单元起名
END
指出源程序到此为止
(指令中的符号标识)
Rn
工作寄存器R0-R7
Ri
工作寄存器R0 和R1
1
1
RRC
A
带进位累加器循环右移
1
1
SWAP
A
累加器高、低4 位交换
1
1
(控制转移类指令)
JMP
@A+DPTR
相对DPTR 的无条件间接转移
1
2
JZ
rel
累加器为0 则转移
2
2
JNZ
rel
累加器为1 则转移
2
2
CJNE
A,direct,rel
比较直接地址和累加器,不相等转移
3
2
CJNE
A,#data,rel
2
1
ORL
A,@Ri
间接RAM“或”到累加器
1
1
ORL
A,#data
立即数“或”到累加器
2
1
ORL
direct,A
累加器“或”到直接地址
2
1
ORL
direct, #data
立即数“或”到直接地址
3
1
XRL
A,Rn
寄存器“异或”到累加器
1
2
XRL
A,direct
直接地址“异或”到累加器
2
1
XRL
A,@Ri
2
2
XCH
A,Rn
寄存器和累加器交换
1
1
XCH
A, direct
直接地址和累加器交换
2
1
XCH
A, @Ri
间接RAM 和累加器交换
1
1
XCHD
A, @Ri
间接RAM 和累加器交换低4 位字节
1
1
(算术运算类指令)
INC
A
累加器加1
1
1
INC
Rn
寄存器加1
1
1
INC
direct
直接地址加1
2
1
INC
@Ri
1
1
ACALL
add11
绝对调用子程序
2
2
LCALL
add16
长调用子程序
3
2
RET
从子程序返回
1
2
RETI
从中断服务子程序返回
1
2
AJMP
add11
无条件绝对转移
2
2
LJMP
add16
无条件长转移
3
2
SJMP
rel
无条件相对转移
2
2
(布尔指令)
CLR
C
清进位位
1
1
CLR
bit
清直接寻址位
2
1
SETB
比较立即数和累加器,不相等转移
3
2
CJNE
Rn,#data,rel
比较寄存器和立即数,不相等转移
2
2
CJNE
@Ri,#data,rel
比较立即数和间接RAM,不相等转移
3
2
DJNZ
Rn,rel
寄存器减1,不为0 则转移
3
2
DJNZ
direct,rel
直接地址减1,不为0 则转移
3
2
NOP
空操作,用于短暂延时
@Ri
间接寻址的8 位RAM 单元地址(00H-FFH)
#data8
8 位常数
#data16
16 位常数
addr16
16位目标地址,能转移或调用到64KROM 的任何地方
addr11
11位目标地址,在下条指令的2K 范围内转移或调用
Rel
8 位偏移量,用于SJMP 和所有条件转移指令,范围-128~+127
A,direct
直接地址“与”到累加器
2
1
ANL
A,@Ri
间接RAM“与”到累加器
1
1
ANL
A,#data
立即数“与”到累加器
2
1
ANL
direct,A
累加器“与”到直接地址
2
1
ANL
direct, #data
立即数“与”到直接地址
3
2
ORL
A,Rn
寄存器“或”到累加器
12Leabharlann ORLA,direct
直接地址“或”到累加器
直接寻址位传送到进位位
2
1
MOV
bit, C
进位位位传送到直接寻址
2
2
JC
rel
如果进位位为1 则转移
2
2
JNC
rel
如果进位位为0 则转移
2
2
JB
bit,rel
如果直接寻址位为1 则转移
3
2
JNB
bit,rel
如果直接寻址位为0 则转移
3
2
JBC
bit,rel
直接寻址位为1 则转移并清除该位
2
2
(伪指令)
间接RAM 加1
1
1
INC
DPTR
数据指针加1
1
2
DEC
A
累加器减1
1
1
DEC
Rn
寄存器减1
1
1
DEC
direct
直接地址减1
2
2
DEC
@Ri
间接RAM 减1
1
1
MUL
AB
累加器和B 寄存器相乘
1
4
DIV
AB
累加器除以B 寄存器
1
4
DA
A
累加器十进制调整
1
1
ADD
A,Rn
寄存器与累加器求和
1
1