汇编常用指令助记符
51单片机常用汇编语言助记符英文全称
![51单片机常用汇编语言助记符英文全称](https://img.taocdn.com/s3/m/76ba11900029bd64783e2c9f.png)
JZ(JumpifZero)结果为0则转移;
JNZ(JumpifNotZero)结果不为0则转移;
JC(JumpiftheCarryflagisset)有进位则转移;
JNC(JumpifNotCarry)无进位则转移;
JB(JumpiftheBitisset)位为1则转移;
ANL(ANDLogic)逻辑与;
XRL(Exclusive-ORLogic)逻辑异或;
CLR(Clear)清零;CPL(Complement)取反;
RL(Rotateleft)循环左移;
RLC(RotateLeftthroughttheCarryflag)带进位循环左移;
RR(RotateRight)循环右移;
XCH(Exchange)字节交换;
XCHD(Exchangelow-orderDigit)低半字节交换;
PUSH(PushontoStack)入栈;
POP(PopfromStack)出栈;
(2)算术运算类指令(8种助记符)
ADD(Addition)加法;
ADDC(AddwithCarry)带进位加法;
RRC(RotateRightthroughttheCarryflag)带进位循环右移;
SWAP(Swap)低4位与高4位交换;
(4)控制转移类指令(17种助记符)
ACALL(AbsolutesubroutineCall)子程序绝对调用;
LCALL(LongsubroutineCall)子程序长调用;
PUSHF---->pushflagPOPF---->popflag
PUSHD---->pushdflagPOPD---->popdflag
8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,共...
![8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,共...](https://img.taocdn.com/s3/m/2476b66d7e21af45b307a832.png)
3-3 数据传送类指令
数据传送操作是指把数据从源地址传送到目的地址, 源地址内容不变。共29条指令,使用8种助记符: 片内数据存储器传送指令MOV;
片外数据存储器传送指令MOVX;
程序存储器传送指令MOVC; 累加器交换指令 XCH、XCHD、SWAP; 堆栈操作指令 PUSH、 POP; 3-5
3-3-4 累加器交换指令
1) 字节交换指令XCH(3 条)
助记符格式
XCH A, Rn
机器码
11001rrrB
相应操作
A Rn
指令说明 机器周期
n=0~7 1 1
XCH A, direct 11000101B A (direct) direct
XCH A, @Ri
1100011iB data
MOV R2,#20h ;设臵传送次数 MOV DPTR,#TAB ;设臵数据源起始地址 MOV R0,#30H ;设臵目标起始地址 LOOP: MOV A, #00h ;设臵变址值 MOVC A, @A+DPTR ;读外部数据存储器 MOV @R0, A ;将数据传送到内部RAM INC R0 ;目标地址+1 INC DPTR ;源地址+1 DJNZ R2,LOOP ;传送个数判断
五)汇编语言的伪指令
伪指令不是真正的指令,它无对应的机器码,在汇编时不 产生目标程序,只是用来对汇编过程进行某种控制。 (p178)
1)ORG nnnnh ;设臵起始地址 例如: ORG 0030h mov a,#00h …… 2)END 汇编结束伪指令 3)EQU (data、bit)等值伪指令 例如:SDA EQU P1.0 ; sda bit P1.0 addr1 EQU 1000h ; addr1 data 1000h D5 EQU 5fh ; D5 data 5fh
STC汇编指令表
![STC汇编指令表](https://img.taocdn.com/s3/m/2bbcef19fc4ffe473368abd8.png)
单片机指令功能一览表助记符 代码 说明MOV A,Rn E8~EF 寄存器AMOV A,direct E5 dircet 直接字节送AMOV A,@Ri ER~E7 间接RAM送AMOV A,#data 74 data 立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,dircet A8~AF dircet 直接字节送寄存器MOV Rn,#data 78~7F data 立即数送寄存器MOV dircet,A F5 dircet A送直接字节MOV dircet,Rn 88~8F dircet 寄存器送直接字节MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节MOV dircet,@Ro 86~87 间接RAM送直接字节MOV dircet,#data 75 dircet data 立即数送直接字节MOV @Ri,A F6~F7 A送间接RAMMOV @Ri,#data 76~77 data 直接字节送间接RAMMOV @Ri,#data 76~77 data 立即数送间接RAMMOV DPTR,#data16 90 data 15~8 16位常数送数据指针data7~0MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮 器字节选AMOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送AMOVX A,@Ri E2~E3 送外部数据(8位地址)送A MOVX A,@DPTR E0 送外部数据(16位地址)送A MOVX @Ri,A F2~F3 A送外部数据(8位地址)MOVX @DPTR,A F0 A送外部数据(16位地址)PUSH dircet C0 dircet 直接字节进栈,SP加1POP dircet D0 dircet 直接字节退栈,SP减1XCH A,Rn C8~CF 交换A和寄存器XCH A,dircet C5 dircet 交换A和直接字节XCH A,@Ri C6~C7 交换A和间接RAM XCH A,@Ri D6~D7 交换A和间接RAM的低位SWAP A C4算术操作 (A的二个半字节交换)ADD A,Rn 28~2F 寄存器加到AADD A,dircet 25 dircet 直接字节加到AADD A,@Ri 26~27 间接RAM加到AADD A,#data 24data 立即数加到AADD A,Rn 38~3F 寄存器和进位位加到AADD A,dircet 35dircet 直接字节和进位位加到AADD A,@Ri 36~37 间接字节和进位位加到AADD A,data 34 data 立即数和进位位加到AADD A,Rn 98~9F A减去寄存器和进位位ADD A,dircet 95 dircet A减去直接字节和进位位ADD A,@Ri 36~37 间接RAM和进位位加到AADD A,data 34 data 立即数和进位位加到ASUBB A,Rn 98~9F A减去寄存器和进位位SUBB A,dircet 95 dircet A减去直接字节和进位位SUBB A,@Ri 96~97 A减去间接RAM和进位位SUBB A,#data 94 data A减去立即数和进位位INC A 04 A加1INC Rn 08~0F 寄存器加1第 1 页INC dircet 05 dircet 直接字节加1INC @Ri 06~07 间接RAM加1DEC A 14 A减1DEC Rn 18~1F 寄存器减1DEC dircet 15 dircet 直接字节减1DEC @Ri 16~17 间接RAM减1INC DPTR A3 数据指针加1MUL AB A4 A乘以BDIV AB 84 A除以BDA A D4 A的十进制加法调整逻辑操作ANL A,Rn 58~5F 寄存器“与”到AANL A,dircet 55 dircet 直接字节“与”到AANL A,@Ri 56~57 间接RAm“与”到AANL A,#data 54 data 立即数“与”到AANL dircet A 52 dircet A“与”到直接字节ANL dircet,#data 53 dircet data 立即数“与”到直接字节ORL A,Rn 48~4F 寄存器“或”到AORL A,dircet 45 dircet 直接字节“或”到AORL A,@Ri 46~47 间接RAM“或”到AORL A,#data 44 data 立即数“或”到AORL dircet,A 42 dircet A“或”到直接字节ORL dircet,#data 43 dircet data 立即数“或”到直接字节XRL A,Rn 68~6F 寄存器“异或”到AXRL A,dircet 65 dircet 直接字节“异或”到AXRL A,@Ri 66~67 间接RAM“异或”到AXRL A,#data 64 data 立即数“异或”到AXRL dircet A 62 dircet A“异或”到直接字节XRL dircet,#data 63 dircet data 立即数“异或”到直接字节CLR A E4 清零CPL A F4 A取反RL A 23 A左环移RLC A 33 A通过进位左环移RR A 03 A右环移RRC A 13 A通过进位右环移控制程序转移ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用LCALL addr 16 12 addr(15~8) 长子程序调用addr(7~0)RET 22 子程序调用返回RETI addr 11 32 中断调用返回AJMP addr 11 △1 addr(a7~a6) 绝对转移LJMP addr 16 02addr(15~8) 长转移addr(7~0)SJMP rel 80 rel 短转移,相对转移JMP @A+DPTR 73 相对于DPTR间接转移JZ rel 60 rel A为零转移JNZ rel 70 rel A为零转移CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等第 2 页则转移CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移DJNZ dircet,rel B5 dircet rel 直接字节减1,不为零则转移NOP 00 空操作*=a10a9a8l△=a10a9a80布尔变量操作CLR C C3 清零进位CLR bit C2 清零直接位SETB C D3 置位进位SETB bit D2 置位直接位CPL C B3 进位取反CPL bit B2 直接位取反ANL C,bit 82 dit 直接数“与”到进位ANL C,/bit B0 直接位的反“与”到进位ORL C,bit 72 bit 直接位“或”到进位ORL C,/bit A0 bit 直接位的反“或”到进位MOV C,bit A2 bit 直接位送进位MOV bit,C 92 bit 进位送直接位JC rel 40 rel 进位位为1转移JNC rel 50 rel 进位位为0转移JB bit,rel 20 bit rel 直接位为1相对转移JNB bit,rel 30 bit rel 直接位为0相对转移JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位[1]. 循环移位指令(4条)RL A ;累加器A中的内容左移一位RR A ;累加器A中的内容右移一位RLC A ;累加器A中的内容连同进位位CY左移一位RRC A ;累加器A中的内容连同进位位CY右移一位[2]. 累加器半字节交换指令(1条)SWAP A ; 累加器中的内容高低半字节互换[3]. 求反指令(1条)CPL A ; 累加器中的内容按位取反[4]. 清零指令(1条)CLR A ; 0→(A),累加器中的内容清0[5]. 逻辑与操作指令(6条)ANL A,data ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。
51汇编助记符大全
![51汇编助记符大全](https://img.taocdn.com/s3/m/af4f3f43b307e87101f69670.png)
(1)数据传送类指令【7种助记符】MOV(Mov e):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Mov e C ode)读取程序存储器数据表格的数据传送;MOVX(Move E x ternal RAM)对外部RAM的数据传送;XCH(E xch ange)字节交换;XCHD(E xch ange low-order D igit)低半字节交换;PUSH(Push onto Stack)入栈;POP (Pop from Stack)出栈;(2)算术运算类指令【8种助记符】ADD(Add ition) 加法;ADDC(Add with C arry) 带进位加法;SUBB(Sub tract with B orrow) 带借位减法;DA(D ecimal A djust) 十进制调整;INC(Inc rement) 加1;DEC(Dec rement) 减1;MUL(Mul tiplication、Multiply) 乘法;DIV(Div ision、Divide) 除法;(3)逻辑运算类指令【10种助记符】ANL(AN D L ogic) 逻辑与;ORL(OR L ogic) 逻辑或;XRL(E x clusive-O R L ogic) 逻辑异或;CLR(Cl ea r) 清零;CPL(C om pl ement) 取反;RL(R otate l eft) 循环左移;RLC(R otate L eft throught the C arry flag) 带进位循环左移;RR(R otate R ight) 循环右移;RRC(R otate R ight throught the C arry flag) 带进位循环右移;SWAP (Swap)低4位与高4位交换;(4)控制转移类指令【17种助记符】ACALL(A bsolute subroutine Call)子程序绝对调用;LCALL(L ong subroutine Call)子程序长调用;RET(Ret urn from subroutine)子程序返回;RETI(Ret urn from I nterruption)中断返回;SJMP(S hort J u mp)短转移;AJMP(A bsolute J u mp)绝对转移;LJMP(L ong J u mp)长转移;CJNE (C ompare J ump if N ot E qual)比较不相等则转移;DJNZ (D ecrement J ump if N ot Z ero)减1后不为0则转移;JZ (J ump if Z ero)结果为0则转移;JNZ (J ump if N ot Z ero) 结果不为0则转移;JC (J ump if the C arry flag is set)有进位则转移;JNC (J ump if N ot C arry)无进位则转移;JB (J ump if the B it is set)位为1则转移;JNB (J ump if the B it is N ot set) 位为0则转移;JBC(J ump if the B it is set and C lear the bit) 位为1则转移,并清除该位;NOP (N o Op eration)空操作;(5)位操作指令【1种助记符】SETB(Set B it)位置1。
汇编指令符号大全
![汇编指令符号大全](https://img.taocdn.com/s3/m/1df7d78ad4d8d15abe234efa.png)
80X86 汇编指令符号大全+、-、*、/∶算术运算符。
&∶宏处理操作符。
宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了。
$∶地址计数器的值——记录正在被汇编程序翻译的语句地址。
每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值。
?∶操作数。
在数据定义语句中,操作数用?,其作用是分配并保留存储空间,但不存入确定的数据。
=∶等号伪指令——符号定义。
对符号进行定义和赋值,功能与EQU相似,但允许(重复)再定义。
:∶修改属性运算符(操作符)——段操作符。
用来临时给变量、标号或地址表达式指定一个段属性(不用缺省的段寄存器),自动生成一个“跨段前缀字节”。
注意,段寄存器CS和ES 不能被跨越,堆栈操作时也不能跨越SS。
;∶注释符号。
%∶特殊宏操作符,用来将其后的表达式(通常是符号常数,不能是变量名和寄存器名)转换成它所代表的数值,并将此数值的ASCII码嵌入到宏扩展中。
( )∶1.运算符——用来改变运算符的优先级别。
2.教材符号,表示括号内存储单元(或寄存器)的内容。
< >∶宏调用时用来将带间隔符(如空格,逗号等)的字符串(作为实参)括起来。
[ ]∶1.运算符。
方括号括起来的数是数组变量的下标或地址表达式。
带方括号的地址表达式必须遵循下列原则,①只有BX、BP、SI、DI这四个寄存器可在方括号内出现;②BX或BP 可单独出现在各方括号中,也可以与常数、SI或DI一起出现在方括号内,但不允许BX和BP出现在同一个方括号内;③SI和DI可以单独出现在各方括号内,也可以与常数、BP或BX一起出现在方括号内,但不允许SI和DI出现在同一个方括号内;④一个方括号内包含多个寄存器时,它们只能作加法运算;⑤若方括号内包含基址指针BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用数据段寄存器DS提供段基址。
汇编助记符
![汇编助记符](https://img.taocdn.com/s3/m/da6c3101bb68a98271fefa99.png)
MOV(MOVe)传送指令PUSH 入栈指令POP 出栈指令XCHG(eXCHanG)交换指令XLAT(TRANSLATE)换码指令LEA (Load Effective Address)有效地址送寄存器指令LDS(Load DS with pointer)指针送寄存器和DS指令LES(Load ES with pointer)指针送寄存器和ES指令LAHF(Load AH with Flags)标志位送AH指令SAHF(Store AH into Flgs) AH送标志寄存器指令PUSHF(PUSH the Flags)标志进栈指令POPF(POP the Flags)标志出栈指令ADD 加法指令ADC 带进位加法指令INC 加1指令SUB(SUBtract)不带借位的减法指令SBB(SuVtrach with borrow)带借位的减法指令DEC(DECrement)减1指领NEG(NEGate)求补指令CMP(CoMPare)比较指令MUL(unsinged MULtiple)无符号数乘法指令IMUL(sIgned MUL tiple)有符号数乘法指令DIV(unsigned DIVide)无符号数除法指令IDIV(sIgned DIVide)有符号数除法指令CBW(Count Byte to Word)字节转换为字指令CWD(Count Word to Doble word)字转换为双字指令DAA 压缩的BCD码加法十进制调整指令DAS 压缩的BCD码减法十进制调整指令AAA 非压缩的BCD码加法十进制调整指令AAS 非压缩的BCD码加法十进制调整指令AND 逻辑与指令OR 逻辑或指令XOR 逻辑异或指令NOT 逻辑非指令TEST 测试指令SHL(SHift logical Letf)逻辑左移指令SHR(SHift logical Right)逻辑右移指令ROL(Rotate Left )循环左移指令P58ROR(Rotate Right)循环右移指令P58RCL(Rotate Left through Carry)带进位循环左移RCR(Rotate Right through Carry)带进位循环左移MOVS(MOVe String)串传送指令STOS(STOre into String)存入串指令LODS(LOad from string)从串取指令REP(REPeat)重复操作前CLD(CLear Direction flag)清除方向标志指令STD(SeT Direction flag)设置方向标志指令CMPS(CoMPare String)串比较指令SCAS(SCAn String)串扫描指令REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀答案补充REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀IN(INput)输入指令OUT(OUTput)输出指令JMP(JuMP)无条件转移指令JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令LOOP 循环指令P70LOOPZ/LOOPE 为零/相等时循环指令LOOPNZ/LOOPNE 不为零/不相等时循环指令CALL 子程序调用指令RET(RETun)子程序返回指令CLC(CLear Carry)进位位置0指令CMC(CoMplement Carry)进位位求反指令SRC(SeT Carry)进位位置1指令NOP(No OPeretion)无操作指令答案补充HLT(HaLT)停机指令OFFSET 返回偏移地址SEG 返回段地址EQU(=) 等值语句PURGE 解除语句DUP 操作数字段用复制操作符SEGMENT,ENDS 段定义指令ASSUME 段地址分配指令ORG 起始偏移地址设置指令$ 地址计数器的当前值PROC,ENDP 过程定义语句NAME,TITLE,END 程序开始结束语句MACRO,ENDM 宏定义指令JZ OPR //结果为零转移JNZ OPR //结果不为零转移JS OPR //结果为负转移JNS OPR //结果为正转移JO OPR //溢出转移JNO OPR //不溢出转移JP OPR //结果为偶转移JNP OPR //结果为奇转移JC OPR //有进位转移JNC OPR //无进位转移NV: 未溢出0 OV: 溢出1 ------------------------------OF UP: 方向为上0(di,si += 1) DN:方向为下1(di,si -= 1)---- DI: 关中断0 EI: 开中断1--------PL: 正0 NG: 负1-------------SFNZ: 非0 0 ZR: 0 1----------------ZFNA: 无辅助进位0 AC: 辅助进位1-------AFPO: 奇数0 PE: 偶数1 ------------PFNC: 无进位0 CY: 进位1 ----------Cf。
指令助记符
![指令助记符](https://img.taocdn.com/s3/m/86e22ff1ba0d4a7302763a16.png)
汇编语言操作码助记符共44个,寻址方式七种:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。
可组合111条指令。
数据传送类助记符8个MOV : move 对内部RAM和SFR之间的数据传送MOVC: move code 读取ROM的数据传送MOVX: move external RAM 对外部RAM的传送XCH: exchange 字节交换XCHD: exchange low-order digit 低半字节交换SWAP: A中低4位与高4位互换PUSH: push into stack入栈POP: pop from stack 出栈算术运算操作码助记符(8个)ADD : addition 加法ADDC: add with carry 带进位加法SUBB: subtract with borrow 带借位减法DA: decimal adjust 十进制调整INC: increment 加1DEC: decrement 减1MUL: multiplication ,multiply 乘法DIV : division ,divide 除法逻辑运算和移位操作码助记符(10个)ANL : and logic 与逻辑ORL : or logic 或逻辑XRL : exclusive-or logic 异或逻辑CLR : clear 清0CPL : complement 取反RL: rotate left 左移RLC : rotate left throught the carry flag带进位左移RR: rotate right 右移RRC : rotate right throught the carry flag 带进位右移NOP: no operation 空操作控制转移类操作码助记符(12个)(一)无条件转移(4个)LJMP : LONG JUMP 长跳转AJMP : Absolute jump 绝对转移SJMP : short jump 短转移JMP :jump 转移(二)调用(2个)LCALL : long subroutine call 长调用SCALL : short subroutine call 短调用(三)返回(2个)RET : return from subroutine 子程序返回RETI : return from interruption 中断子程序返回(四)条件转移)(4个)(1)判零转移JZ: jump if zero 结果为0转移JNZ : jump if not zero 结果不为0转移(2 )比较转移CJNE: compare jump if not equal 比较不相等转移(3 )循环转移DJNZ: decrement jump if not zero 结果不为零转移位操作码助记符(11个实质为6 个)(一)数据传送MOV(二)位状态控制(1个)CLRSETB : SET BITCPL(三)位逻辑运算ANLORL(四)布尔条件转移(5个)JC : jump if the carry flag is set 有进位则转移JNC:jump if not carry 无进位则转移JB:jump if the bit is set 位为1则转移JNB:jump if the bit is not set 位为0则转移JBC:jump if the bit is set and clear the bit 位为1则转移,并清除该位。
汇编语言常见指令
![汇编语言常见指令](https://img.taocdn.com/s3/m/6e61c51552ea551810a6879e.png)
‚PTR‛操作符:强制类型转换MOV BYTE PTR [BX], 20H;1B立即数20H送DS:[BX]MOV WORD PTR [BX], 20H;立即数20H送DS:[BX],;00H送DS:[BX+1]2.LEA(Load Effective Address)设:变量X的偏移地址为1020H , (BP)=0020H执行指令后:LEA DX, XLEA BX, [BP]; 执行后, (DX) = 1020H; 执行后, (BX) = 0020H3.地址传送指令LDS,LESLDS REG16, MEM ; 从存储器取出4B,送入REG16和DS LES REG16, MEM ; 从存储器取出4B,送入REG16和ES 4.符号扩展指令CBW,CWDCBW ;将AL寄存器内容符号位扩展到AHCWD ;将AX寄存器内容符号位扩展到DX设:(AX)= 8060H,(DX)=1234H执行下列指令后CBW;(AX)= 0060H设:(AX)= 8060H,(DX)=1234H执行下列指令后CWD;(DX)= 0FFFFH,(AX)= 8060H5.交换指令XCHG例如,(AX)= 5678H执行下面指令后XCHG AH, AL;(AX)= 7856H6.换码指令XLATXLAT ;AL←DS: [BX+AL]表格的首地址事先存放在内存逻辑地址DS: BX中,AL的内容是相对于表格的位移量,把对应内存的内容取出放在AL寄存器。
7.逻辑运算符SHR(右移)SHL(左移)AND(与)OR(或)XOR(异或)NOT(取反8.关系运算符关系运算符用于两个数的比较,结果为‚真(-1)‛或‚假(0)‛GT(>)GE(>=)LT(<)LE(<=)EQ(=)NE(≠)9.地址运算符SEG 名称取地址表达式所在段的段基址OFFSET 名称取地址表达式的偏移地址10.类型操作符TYPE:取每个变量的字节数LENGTH:取变量定义了多少个SIZE:取变量占用的字节总数11.加法指令(1)ADD(Addition):加法指令格式:ADD dest,src功能:dest ←dest + srcdest(目的操作数):8/16位的寄存器/存储器操作数src(源操作数):与目的操作数同类型的寄存器/存储器/立即数例:ADD AX, SI ; AX←(AX)+(SI),16位运算ADD X, 3 ; X←(X)+3, 运算位数由X的类型确定ADD [BX], DX ; DS:[BX]←DS:[BX]+DX, 16位运算说明:•状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新;(2)ADC(Addition with Carry):带进位的加法指令格式:ADC dest,src功能:dest←dest+src+CFdest(目的操作数):8/16位的寄存器/存储器src(源操作数):与目的操作数同类型的寄存器/存储器/立即数说明:•状态标志CF, OF, ZF, SF, PF, AF按照运算结果被刷新;•主要用于对数据分段相加时高位的加法运算。
汇编数据传送指令助记符
![汇编数据传送指令助记符](https://img.taocdn.com/s3/m/4a008d86e53a580216fcfe20.png)
Rn 8个工作寄存器R0-R7Ri 4个工作寄存器区R0-R3 PSW.4 PSW.3 / RS1 RS0Dircet 8位内部RAM单元地址#data 8位常数#data16 16位常数addr16 16的目的地址;用LJMP\LCALL,指向64KB ROM空间地址addr11 11的目的地址;用AJMP\ACALL,指向2KB ROM空间地址Rel 8位带符号的偏移量;用SJMP和所有的条件转移指令指向-128到+127范围bit 位地址;内部RAM可直接寻址位DPTR 数据指针;16位地址寄存器rrr 3位二进制数:000-111A 累加器B 寄存器,可用于MUL/DIV指令中C 进位位或者进位标志@ 间接寄存器或者基址寄存器的前缀,@Ri,@DPTR/ 位操作的前缀,把该位取反(X) X中的内容((X)) 由X寻址的单元中的内容8位数据传送指令:MOV A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data的数据放到A中MOV Rn,A/direct/#dataMOV direct1,A/Rn/direct2/@Ri/#dataMOV Ri,A/direct/#date16位数据传送指令:MOV DPTR,#date16 将16位立即数传送到16位的指令和数据外部数据传送指令:MOVX A,@Ri/@DPTR 将Ri、DPTR所指外部RAM单元的数据送与A MOVX @Ri,AMOVX @DPTR,A查表指令:MOVC A,@A+DPTRMOVC A,@A+PC数据交换指令:SWAP A A的低半字节与高半字节互换XCHD A,@Ri Ri的低四位与A的低四位互换XCH A,Rn/@Ri/direct Rn的内容与A的内容互换ADD A,Rn/direct/@Ri/#date 将A与Rn/direct/@Ri/#date的内容相加,结果放入A中ADDC A,Rn/direct/@Ri/#date 将A与Rn/direct/@Ri/#date的内容相加,再加上C,结果放入A中INC A/Rn/direct/@Ri/DPTR 将A/Rn/direct/@Ri/DPTR单元的内容自动加1DA A 将A中BCD码调整SUBB A,Rn/direct/@Ri/#date 将A的内容减去Rn/direct/@Ri/#date的内容,再减去C的内容,结果放入A中DEC A/Rn/direct/@Ri 将A/Rn/direct/@Ri单元的内容自动减1MUL AB 将A和B的内容相乘,结果中高8位放在B中,低8位放在A中DIV AB 将A和B的内容相除,结果余数放在B中,商放在A中逻辑运算类指令:CLR A 将ACC清零SETB A 将ACC置1CPL A 将ACC中的每一位进行取反ANL A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data单元的值与A逻辑与运算,结果放入A 中ANL direct,A/#data 将A/#data与直接地址direct逻辑与运算,结果放在directORL A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data单元的值与A逻辑或运算,结果放入A 中ORL direct,A/#data 将A/#data与直接地址direct逻辑或运算,结果放在directXRL A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data单元的值与A逻辑异或运算,结果放入A 中XRL direct,A/#data 将A/#data与直接地址direct逻辑异或运算,结果放在direct循环/移位类指令:RL A 将A的内容左循环一位RLC A 将A的内容带进位左移一位RR A 将A的内容右移一位RRC A 将A的内容带进位右移一位调用/返回类指令:LCALL addr16 调用64KB范围内的子程序ACALL addr11 调用2KB范围内的子程序RET 子程序返回RETI 中断返回无条件转移类指令:LJMP addr16 程序无条件转移到16位目标地址,转移的范围为64KB地址空间AJMP addr11 程序无条件转移到11位目标地址,转移的范围为2KB地址空间SJMP rel 程序无条件转移到标号REL处,转移的范围为-128——+127地址空间JMP @A+DPTR 程序无条件转移到某个地址,该地址为@A+DPTR之和JZ rel 通过判定A的内容是否为0,再确定是否转移。
汇编助记符汇总
![汇编助记符汇总](https://img.taocdn.com/s3/m/44a1a59ed0d233d4b14e694e.png)
助记符指令说明字节数周期数(数据传递类指令)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 直接地址传送到寄存器 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 立即数传送到直接地址 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 2MOVX 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 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 间接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 4DA A 累加器十进制调整 1 1 ADD A,Rn 寄存器与累加器求和 1 1 ADD A,direct 直接地址与累加器求和 2 1 ADD A,@Ri 间接RAM 与累加器求和 1 1 ADD A,#data 立即数与累加器求和 2 1 ADDC A,Rn 寄存器与累加器求和(带进位) 1 1 ADDC A,direct 直接地址与累加器求和(带进位) 2 1 ADDC A,@Ri 间接RAM 与累加器求和(带进位) 1 1 ADDC A,#data 立即数与累加器求和(带进位) 2 1 SUBB A,Rn 累加器减去寄存器(带借位) 1 1 SUBB A,direct 累加器减去直接地址(带借位) 2 1 SUBB A,@Ri 累加器减去间接RAM(带借位) 1 1 SUBB A,#data 累加器减去立即数(带借位) 2 1(逻辑运算类指令)ANL A,Rn 寄存器“与”到累加器 1 1 ANL 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 寄存器“或”到累加器 1 2ORL A,direct 直接地址“或”到累加器 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 间接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 累加器循环右移 1 1 RRC A 带进位累加器循环右移 1 1 SWAP A 累加器高、低4 位交换 1 1(控制转移类指令)JMP @A+DPTR 相对DPTR 的无条件间接转移 1 2 JZ rel 累加器为0 则转移 2 2JNZ rel 累加器为1 则转移 2 2 CJNE A,direct,rel 比较直接地址和累加器,不相等转移 3 2 CJNE A,#data,rel 比较立即数和累加器,不相等转移 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 空操作,用于短暂延时 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清进位位11 CLR bit清直接寻址位21 SETB C置位进位位11 SETB bit置位直接寻址位21 CPL C取反进位位11CPL bit取反直接寻址位21 ANL C,bit直接寻址位“与”到进位位22 ANL C,/bit直接寻址位的反码“与”到进位位22 ORL C,bit直接寻址位“或”到进位位22 ORL C,/bit直接寻址位的反码“或”到进位位22 MOV C,bit直接寻址位传送到进位位21 MOV bit, C进位位位传送到直接寻址22 JC rel如果进位位为1 则转移22 JNC rel如果进位位为0 则转移22 JB bit,rel如果直接寻址位为1 则转移32 JNB bit,rel如果直接寻址位为0 则转移32 JBC bit,rel直接寻址位为1 则转移并清除该位22(伪指令)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~+127 Bit 片内RAM 中的可寻址位和SFR 的可寻址位Direct 直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH$ 指本条指令的起始位置。
汇编语言指令速查表
![汇编语言指令速查表](https://img.taocdn.com/s3/m/8d7c858890c69ec3d4bb754b.png)
附录附录A 常用80x86指令速查表指令按助记符字母顺序排列,缩写、符号约定如下:(1) 指令中,dst, src表示目的操作数和源操作数。
仅一个操作数时,个别处也表示为opr。
(2)??imm表示立即数,8/16/32位立即数记作:imm8/imm16/imm32。
(3)??reg表示通用寄存器,8/16/32位通用寄存器记作:reg8/reg16/reg32。
(4)??mem表示内存操作数,8/16/32等内存操作数记作:mem8/mem16/mem32等。
(5)??seg表示段寄存器,CS, DS, SS, ES, FS, GS。
(6)??acc表示累加器,8/16/32累加器对应AL/AX/EAX。
(7)??OF, SF, ZF, AF, PF, CF分别表示为O, S, Z, A, P, C,相应位置为:字母,根据结果状态设置;,状态不确定;-,状态不变;1,置1;0,清0;例如:0 S Z ? P -表示:OF清0,AF不确定,CF不变,其它根据结果设置。
若该栏空白,则表示无关。
(8)??寄存器符号诸如(E)CX, (E)SI, (E)DI, (E)SP, (E)BP和(E)IP等,表示在16地址模式下使用16位寄存器(如CX),或在32地址模式下使用32位寄存器(如ECX)。
(9)??周期数表示指令执行所需的CPU时钟周期个数,即执行时间为:周期数/主频(秒)。
附录B 编程练习环境说明1. 编程练习软件包附带软件包x86ASM是在Microsoft的MASM?6.15软件包的基础上,加入CodeView、Win32的开发工具及Turbo C 2.0等,进行简单整理而成的,以便初学者编程练习使用。
软件包中的基本文件有:MASM.EXE 汇编程序LINK.EXE 连接程序ML.EXE 汇编连接程序(自动调用LINK.EXE)ML.ERR 汇编错误信息文件LIB.EXE 子程序库管理程序LIB16.EXE 16位子程序管理程序LINK16.EXE 生成DOS程序的连接程序LIB32.EXE Win32的库管理程序LINK32.EXE 生成Win32程序的连接程序CV目录CodeView调试程序CV.EXE及相应的环境INC32目录Win32的API的函数库声明文件LIB32目录Win32的API的函数库TC目录Turbo C 2.0命令行环境和集成环境SET2ML16.BAT ML默认使用LINK16.EXE连接程序SET2ML32.BAT ML默认使用LINK32.EXE连接程序使用这个软件包既可以用来练习编写DOS环境下的应用程序,也可以用来练习编写Win32环境下的应用程序。
汇编指令(常用指令)
![汇编指令(常用指令)](https://img.taocdn.com/s3/m/61b872acc8d376eeaeaa31db.png)
汇编指令百科名片汇编指令是汇编语言中使用的一些操作符(如mov,inc,loop)和助记符,还包括一些伪指令(如assume,end)。
用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
目录编辑本段一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
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(封锁)。
指令助记符的名词解释
![指令助记符的名词解释](https://img.taocdn.com/s3/m/4a7f856a657d27284b73f242336c1eb91b373368.png)
指令助记符的名词解释指令助记符(Mnemonic)是用于帮助记忆计算机指令的符号或助记词汇。
它们在计算机编程和操作系统等领域中被广泛使用,使得复杂的指令序列更易于记忆和理解。
在本文中,我将探讨指令助记符的定义、作用以及在实际应用中的一些重要示例。
指令助记符是一种用于简化机器码编写过程的工具。
与一长串二进制代码相比,指令助记符往往使用短小的英文字母、数字或符号表示不同的操作或功能。
这些符号不仅方便程序员记忆和书写代码,还能使代码更易于读懂和审视。
当然,这些助记符并不是程序在计算机上直接执行的指令,而是需要经过编译或汇编过程转换为机器码才能被计算机执行。
指令助记符的作用不仅仅限于简化编码过程,它还能提高代码的可读性和可维护性。
使用助记符编写的代码通常更具有描述性,能够清晰地表达所需的操作,并对程序员友好。
此外,指令助记符还能够促进编程语言的标准化和统一,使得不同的开发者能够更轻松地交流和理解彼此的代码。
在计算机科学中,一些著名的指令助记符被广泛应用于不同的编程语言和操作系统中。
比如,在汇编语言中,常见的指令助记符包括MOV、ADD、SUB和JMP 等。
MOV表示将数据从一个位置移动到另一个位置,ADD表示进行加法运算,SUB表示进行减法运算,而JMP表示跳转到指定的内存地址或标签处。
这些助记符的使用使得程序员能够在不同的汇编语言中更容易地编写和理解代码。
除了汇编语言,高级编程语言中也广泛使用指令助记符。
比如,在C语言中,常见的指令助记符包括IF、FOR、WHILE和SWITCH等。
这些助记符代表了不同的控制流语句和循环结构,使得程序员能够更加方便地实现逻辑控制和循环功能。
在这些高级编程语言中,指令助记符的使用增强了代码的可读性,使得程序员能够以更直观的方式理解代码的逻辑。
指令助记符在操作系统中也发挥着重要的作用。
操作系统中的命令行界面,如UNIX中的Shell和Windows中的命令提示符,常常使用助记符作为用户与计算机交互的方式。
汇编语言助记符
![汇编语言助记符](https://img.taocdn.com/s3/m/8b4b9a9385254b35eefdc8d376eeaeaad1f316d9.png)
汇编语言助记符汇编语言是一种低级语言,是计算机硬件能够直接执行的语言。
在编写汇编代码时,为了方便记忆和使用,人们使用了一些助记符(mnemonic)来代表机器指令和操作数的操作符。
本文将介绍一些常见的汇编语言助记符以及它们的用法和含义。
1. MOV(Move)MOV是汇编语言中最常见的助记符之一,用于将数据从一个位置移动到另一个位置。
例如,MOV AX, 42表示将值42移动到寄存器AX中。
MOV指令通常用于数据传输和寄存器之间的操作。
2. ADD(Addition)ADD助记符用于执行加法操作。
例如,ADD AX, BX表示将寄存器BX的值加到寄存器AX中。
ADD指令还可以用于将常数加到寄存器中或将内存中的值与寄存器中的值相加。
3. SUB(Subtraction)SUB助记符用于执行减法操作。
例如,SUB AX, BX表示将寄存器BX的值从寄存器AX中减去。
与ADD指令类似,SUB指令也可以用于将常数从寄存器中减去或从内存中的值中减去寄存器中的值。
4. JMP(Jump)JMP助记符用于实现无条件跳转,即程序将跳转到指定地址处继续执行。
例如,JMP Label表示跳转到标签(Label)所指示的位置。
使用JMP指令可以实现程序的循环、条件分支等控制结构。
5. CMP(Compare)CMP助记符用于进行比较操作,通常与条件跳转指令(如JMP、JZ、JG等)配合使用。
例如,CMP AX, BX表示比较寄存器AX和BX 中的值。
通过CMP指令可以判断两个值的大小关系,并根据比较结果执行不同的操作。
6. NOP(No Operation)NOP助记符表示空操作,即不进行任何实际操作。
在编写汇编代码时,可以使用NOP来占据一段空白的指令空间或进行调试时的代码标记。
7. INC(Increment)INC助记符用于将寄存器或内存中的值加1。
例如,INC AX表示将寄存器AX中的值加1,INC [BX]表示将寄存器BX所指向的内存单元中的值加1。
汇编语言名词解释
![汇编语言名词解释](https://img.taocdn.com/s3/m/92adae1e3a3567ec102de2bd960590c69fc3d878.png)
汇编语言名词解释汇编语言(Assembly Language)是一种低级机器语言的替代方案,用于编写计算机程序。
它与高级语言紧密相关,并且提供了对计算机底层硬件的直接控制。
为了更好地理解汇编语言的概念和术语,下面对一些汇编语言的常见名词进行解释。
1. 汇编器(Assembler):汇编器是一种将汇编语言代码转换为机器语言代码的编译器。
它将汇编语言中的助记符(Mnemonics)和操作码(Opcode)翻译成二进制指令,供计算机执行。
2. 助记符(Mnemonics):助记符是汇编语言中用来表示指令、寄存器和内存地址的短词或符号。
它们与机器语言的操作码一一对应,使得程序更易读和理解。
3. 寄存器(Register):寄存器是位于CPU内部的高速存储区,用于保存和处理数据。
汇编语言中的寄存器通常用英文缩写表示,如AX (累加寄存器)、BX(基址寄存器)、CX(计数寄存器)等。
4. 指令(Instruction):指令是一种用于执行特定操作的命令。
在汇编语言中,指令由助记符和操作数组成,用于完成诸如数据传输、算术运算、控制流等任务。
5. 操作码(Opcode):操作码是指令中用来表示具体操作的二进制代码。
每个操作码对应一条机器指令,控制CPU执行相应的操作。
6. 地址模式(Addressing Mode):地址模式描述了访问内存数据或寄存器数据的方式。
常见的地址模式包括直接寻址、间接寻址、寄存器寻址等,通过不同的地址模式可以灵活地访问和操作数据。
7. 标志位(Flag):标志位是指一组标志位寄存器中的特殊位,用来记录某些特定的条件或状态。
在汇编语言中,程序可以通过设置或读取标志位来进行条件跳转、控制程序流程。
8. 异常处理(Exception Handling):异常处理是指处理由硬件或软件引发的异常情况,如除数为零、非法指令、内存溢出等。
汇编语言提供了特定的指令和异常处理机制,用于捕获和处理异常情况。
51单片机汇编指令集(附记忆方法)
![51单片机汇编指令集(附记忆方法)](https://img.taocdn.com/s3/m/79106537ddccda38376baf8f.png)
51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX (Move External RAM) 对外部RAM的数据传送;XCH (Exchange) 字节交换;XCHD (Exchange low-order Digit) 低半字节交换;PUSH (Push onto Stack) 入栈;POP (Pop from Stack) 出栈;二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加1;DEC(Decrement) 减1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;三、逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低4位与高4位交换;四、控制转移类指令(17种助记符)ACALL(Absolute subroutine Call)子程序绝对调用;LCALL(Long subroutine Call)子程序长调用;RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。
8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,
![8051汇编语言概述一 ) 指令分类 42个助记符,33种功能,](https://img.taocdn.com/s3/m/5bcb75cb5ef7ba0d4a733b79.png)
3-2 8051的寻址方式
3-2-1 立即寻址
立即寻址的操作数为常数,包含在指令字节中。即操作 数为存放在程序存储空间的常数,一般为双字节或3字节指令。 例如: D0 equ 30h mov a, #30h ;将常数48 (#30h) 送到累加器A mov r0, #D0 ;将常数48 (#30h) 送到r0 mov dptr, #1234h ;将#1234h送到dptr mov DPTR, #tab1 ;将tab1标号的地址送到 dptr寄存器中 …… tab1: db 10h,11h,55h,0f8h,0ach
3-3 数据传送类指令
数据传送操作是指把数据从源地址传送到目的地址, 源地址内容不变。共29条指令,使用8种助记符: 片内数据存储器传送指令MOV;
片外数据存储器传送指令MOVX;
程序存储器传送指令MOVC; 累加器交换指令 XCH、XCHD、SWAP; 堆栈操作指令 PUSH、 POP; 3-5
助记符格式
MOV Rn, A MOV Rn, direct
机器码
11111rrrB
相应操作
Rn ← A
指令说明
n=0~7, rrr=000~111
机器周期
1 1 1
10101rrr Rn←(direct) n=0~7, direct rrr=000~111 Rn←#data n=0~7, rrr=000~111
五)汇编语言的伪指令
4) DB nn1,nn2 … ;单字节项或项表 例如:tab1: DB 07h,10,’A’,0f5h 5)DW nnnn1,nnnn2 … ;双字节项或项表 例如:tab2: DW 07h,1230h 则在tab2起始程序存储器单元的内容为: 07h 00h 30h 12h 6)DS nn ; 预留程序存储区 例如:ORG 1200h DS 10 则在1200h地址开始,保留10个单元的存储区
汇编语言助记符
![汇编语言助记符](https://img.taocdn.com/s3/m/2447e821974bcf84b9d528ea81c758f5f61f2912.png)
汇编语言助记符一、MOV指令MOV指令是汇编语言中最基本的指令之一,用于将数据从一个位置复制到另一个位置。
它有多种格式,可以用来复制寄存器、内存和立即数。
1. MOV AX, BX这条指令将BX寄存器中的数据复制到AX寄存器中。
MOV指令可以用于寄存器之间的数据传输。
2. MOV [SI], AL这条指令将AL寄存器中的数据复制到SI寄存器指向的内存单元中。
MOV指令还可以用于将数据从寄存器传输到内存。
二、ADD指令ADD指令用于将两个数相加,并将结果存储在目标操作数中。
1. ADD AX, BX这条指令将AX寄存器和BX寄存器中的数据相加,并将结果存储在AX寄存器中。
ADD指令可以用于寄存器之间的相加运算。
2. ADD [SI], AL这条指令将AL寄存器中的数据与SI寄存器指向的内存单元中的数据相加,并将结果存储在该内存单元中。
ADD指令还可以用于将数据与内存中的数据相加。
三、SUB指令SUB指令用于将一个数减去另一个数,并将结果存储在目标操作数中。
1. SUB AX, BX这条指令将BX寄存器中的数据从AX寄存器中的数据中减去,并将结果存储在AX寄存器中。
SUB指令可以用于寄存器之间的相减运算。
2. SUB [SI], AL这条指令将SI寄存器指向的内存单元中的数据从AL寄存器中的数据中减去,并将结果存储在该内存单元中。
SUB指令还可以用于将内存中的数据从寄存器中的数据中相减。
四、INC指令INC指令用于将一个操作数加1。
1. INC AX这条指令将AX寄存器中的数据加1,并将结果存储在AX寄存器中。
INC指令可以用于寄存器的自增操作。
2. INC [SI]这条指令将SI寄存器指向的内存单元中的数据加1,并将结果存储在该内存单元中。
INC指令还可以用于内存中数据的自增操作。
五、DEC指令DEC指令用于将一个操作数减1。
1. DEC AX这条指令将AX寄存器中的数据减1,并将结果存储在AX寄存器中。
指令系统中各种助记符的英文全名
![指令系统中各种助记符的英文全名](https://img.taocdn.com/s3/m/403f2e43571252d380eb6294dd88d0d232d43c51.png)
指令系统中各种助记符的英文全名我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单o(∩_∩)o...在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.DH&DL=DX(data):数据寄存器,常用于数据传递。
他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。
这2组8位寄存器可以分别寻址,并单独使用。
另一组是指针寄存器和变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)段寄存器(Segment Register)为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。
各类命令助记符
![各类命令助记符](https://img.taocdn.com/s3/m/d191b17c0722192e4536f6e7.png)
MCS-51的基本指令共111条;按功能分为5类:(1)数据传送(29条)(2)算术操作(24条)(3)逻辑操作(24条)(4)控制转移(17条)(5)布尔变量操作(17条)按指令所占的字节来分:(1) 单字节指令49条;(2) 双字节指令46条;(3) 三字节指令16条。
数据传送指令(29条)按指令的执行时间来分:(1) 1个机器周期(12个时钟振荡周期)指令64条;(2) 2个机器周期(24个时钟振荡周期)指令45条;(3) 只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。
12MHz晶振:机器周期为1μs。
向累加器A的传送:MOV A, Rn ;(A)←(Rn)向通用寄存器传送:MOV Rn, A ;(Rn)←(A)向直接地址传送:MOV direct,A ;(direct)←(A)间址传送:MOV @Ri,A ;((Ri))←(A)入栈指令:PUSH direct ;(sp)←(sp)+1,;((sp))←(direct)出栈指令:POP direct ;(direct)←((sp)),;(sp)←(sp)-1累加器传送指令字节交换指令:XCH A,Rn ;(A)↔(Rn)半字节交换指令:XCHD A,@Ri ; (A0~3) ↔((Ri) 0~3)累加器高4位与低4位数据互换:SWAP A ;(A0~3) ↔(A4~7)累加器与外部RAM的传送:MOVX A,@Ri ;(A) ←((Ri))累加器与程序存储器传送:MOVC A,@A+DPTR目标地址传送指令:MOV DPTR,#data16算术运算指令(24条)加法指令:ADD A,Rn ;(A) ←(A)+(Rn)带进位加法:ADDC A,Rn ;(A) ←(A)+(Rn)+(C)加1指令:INC A ;(A) ←(A)+1十进制调整指令:DA A ;减法指令:带借位减法指令:SUBB A,Rn;(A) ←(A)-(Rn)-(C)减1指令:DEC A ;(A) ←(A)-1乘法指令:MUL AB;(BA) ←(A)*(B)除法指令:DIV AB ;(A) ←(A)/(B); (B) ←(A)%(B)单操作数逻辑运算指令累加器A清零:CLR A ;(A) ←0累加器A取反:CPL A ;(A) ←(A)累加器A循环左移:RL A;累加器A循环右移: RR A;累加器A带进位循环左移:RLC A;累加器A带进位循环右移:RRC A;双操作数逻辑运算指令逻辑“与”指令:ANL A, Rn ;(A) ←(A)&(Rn)逻辑“或”指令:ORL A, Rn ;(A) ←(A)|(Rn)“异或”指令:XRL A, Rn ;(A) ←(A)^(Rn)控制转移指令(17条)1无条件转移指令调用指令绝对调用(2K)ACALL addr11;(pc) ←(pc+2);(sp) ←(sp)+1,((sp)) ←(pc0~7);(sp) ←(sp)+1,((sp)) ←(pc8~15);(pc0~10) ← addr0~10;(pc11~15)不变长调用(64K)LCALL addr16;(pc) ←(pc)+3;(sp) ← (sp)+1,((sp)) ←(pc0~7);(sp) ← (sp)+1,((sp)) ←(pc8~15);(pc) ← addr16返回指令子程序返回(ACALL和LCALL)RET;(pc8~15) ←((sp)),(sp) ←(sp)-1;(pc0~7) ←((sp)),(sp) ←(sp)-1中断程序返回RETI;(pc8~15) ←((sp)),(sp) ←(sp)-1;(pc0~7) ←((sp)),(sp) ←(sp)-1 ;开放中断逻辑转移指令绝对转移AJMP addr11;(pc0~10) ← addr0~10;(pc11~15)不变长转移:LJMP addr16;(pc) ← addr16相对转移(短转移,双向)SJMP rel ;(pc) ←(pc)+rel间接转移指令(散转指令)JMP @A+DPTR ;(pc)←(A)+(DPTR)空操作指令:NOP ;(pc) ←(pc)+1条件转移指令(1)判零转移指令JZ rel;当(A)为0则(pc) ←(pc)+rel ;否则,顺序执行JNZ rel;当(A)非0,则(pc) ←(pc)+rel;否则,顺序执行比较转移指令(-128B~+127B)CJNE A,direct,rel跳转循环指令(减1不为0转移指令):DJNZ Rn,rel ;(Rn) ←(Rn)-1,;若(Rn)非0,则(pc) ←(pc)+rel;否则,顺序执行DJNZ direct,rel;(direct) ←(direct)-1,;若(direct)非0,则(pc) ←(pc)+rel;否则,顺序执行布尔处理器指令(17条)位变量地址空间片内低RAM,Bit地址范围:00H~7FH(128位)片内高RAM,地址能被8整除的SFR中对应各位(11个):80H~F7H布尔数据传送指令:MOV C ,bit ;(C) ←(bit)※C为进位标志位Cy(不影响PSW)布尔状态控制位清“0”指令CLR C ;(C) ← 0位置“1”指令:SETB C ;(C) ← 1位取反指令:CPL C ;(C) ← (C)位逻辑运算位逻辑“与”指令:ANL C,bit ;(C) ← (C)&(bit)位逻辑“或”指令:ORL C,bit ;(C) ← (C)|(bit)位条件转移指令:判断C转移:J C rel;当(C)为1,则(pc) ←(pc)+rel;否则,顺序执行JNC rel;当(C)为0,则(pc) ←(pc)+rel;否则,顺序执行判断位变量转移指令:JB bit, rel;当(bit)为1,则(pc) ←(pc)+rel;否则,顺序执行JNB bit, rel;当(bit)为0,则(pc) ←(pc)+rel;否则,顺序执行※pc+rel中,(pc)表示为当前的指令地址即:执行跳转指令后的下一条指令地址判断位变量转移并清0指令:JBC bit, rel ;当(bit)为1,则(bit)←0,(pc) ←(pc)+rel ;否则,顺序执行※可用于对SFR的bit检测和软件复位(TFX)汇编语言语句的种类和格式:程序段说明伪指令ORG ORG 1000H汇编结束伪指令END [标号:] END伪指令语句等值伪指令EQU和DL DDR EQU 1020H(不可改)数据说明伪指令DB和DW TAB DB 0, 4, 8, 16, 32保留存储区说明伪指令:STA DS 10H软件延时子程序DELAY:MOV R2, #data ;指令周期数=1DELAY1: DJNZ R2, DELAY1;指令周期数=2RET延时时间=1(第一条指令周期)+(R2)×2(周期数); 影响CPU工作效率延时范围:3~513个机器周期,由(R2)决定有符号数X存于内部RAM的DATA单元,Y存于FUNC单元,按以下要求编程实现给Y赋值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
助记符说明表
助记符指令说明字节数周期数(数据传递类指令)
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 直接地址传送到寄存器 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 立即数传送到直接地址 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 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 间接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 ADD A,direct 直接地址与累加器求和 2 1 ADD A,@Ri 间接RAM 与累加器求和 1 1 ADD A,#data 立即数与累加器求和 2 1 ADDC A,Rn 寄存器与累加器求和(带进位) 1 1 ADDC A,direct 直接地址与累加器求和(带进位) 2 1 ADDC A,@Ri 间接RAM 与累加器求和(带进位) 1 1 ADDC A,#data 立即数与累加器求和(带进位) 2 1 SUBB A,Rn 累加器减去寄存器(带借位) 1 1 SUBB A,direct 累加器减去直接地址(带借位) 2 1 SUBB A,@Ri 累加器减去间接RAM(带借位) 1 1 SUBB A,#data 累加器减去立即数(带借位) 2 1 (逻辑运算类指令)
ANL A,Rn 寄存器“与”到累加器 1 1 ANL 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 寄存器“或”到累加器 1 2 ORL A,direct 直接地址“或”到累加器 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 间接RA M“异或”到累加器 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 累加器循环右移 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 比较立即数和累加器,不相等转移 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 空操作,用于短暂延时 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 C 置位进位位 1 1 SETB bit 置位直接寻址位 2 1 CPL C 取反进位位 1 1 CPL bit 取反直接寻址位 2 1 ANL C,bit 直接寻址位“与”到进位位 2 2 ANL C,/bit 直接寻址位的反码“与”到进位位 2 2 ORL C,bit 直接寻址位“或”到进位位 2 2 ORL C,/bit 直接寻址位的反码“或”到进位位 2 2 MOV C,bit 直接寻址位传送到进位位 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。