51汇编语言助记符

合集下载

51单片机(宏汇编)指令集5

51单片机(宏汇编)指令集5
常量有多种表示形式:二、十、十六进制数和 字符串等
常量及其表示
数据形式 格 式 取值范围 备注
2进制 ********B
0,1
0进制 ******
0, 1,2...9
ห้องสมุดไป่ตู้
****H 0,1...E,F
0CDE3H
符应是0--9
ASCII '**' ASCII 'AD' 使用
示例
10110011B 32768 16进制 最前面一个字
HIGH 高字节分离 ADD A,#HIGH 05E2H
LOW 低字节分离 ADD A,#LOW 77F0H
ASM51汇编器通用伪指令
汇编起始命令
ORG 16位地址 (常数或表达式 )
定义程序/数据的起始地址
ORG $+5
ORG 0008H
汇编结束命令
END
汇编到此结束,其后面的内
运算 操 作 含 义
以ADD为例
+
加操作 ADD A,#RR1+36
-
减操作 ADD A,#RR1-2EH
*
乘操作 ADD A,#RR1*0E3H
/
除操作 ADD A,#RR1/23
MOD 模除 ADD A,#RR1 MOD 12
数值运算
操 作 含 义
以ADD为例
SHR
右移 ADD A,#RR1 SHR 3
格式: 字符名称 BIT 位地址 例如: fire bit p1.0
或者: fire equ p1.0
ASM51汇编伪指令EQU/BIT
TEMP EQU 30H ;定义变量TEMP地址为30H T_MOD EQU 40H ;定义定时器模式控制字常

51单片机常用汇编语言助记符英文全称

51单片机常用汇编语言助记符英文全称
DJNZ(DecrementJumpifNotZero)减1后不为0则转移;
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

单片机指令英文缩写全称

单片机指令英文缩写全称

51单片机英文缩写全称MCS-51指令(1)数据传送类指令(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) 出栈(2)算术运算类指令(8种助记符)ADD Addition 加法ADDC Add with Carry 带进位加法SUBB Subtract with Borrow 带借位减法DA Decimal Adjust 十进制调整INC Increment 加1DEC Decrement 减1MUL Multiplication、Multiply 乘法DIV Division、Divide 除法(3)逻辑运算类指令(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位交换(4)控制转移类指令(17种助记符)ACALL Absolute subroutine Call 子程序绝对调用LCALL Long subroutine Call 子程序长调用RET Return from subroutine 子程序返回RETI Return from Interruption 中断返回JMP Jump IndirectSJMP Short Jump 短转移AJMP Absolute Jump 绝对转移LJMP Long Jump 长转移CJNE Compare and Jump if Not Equal 比较不相等则转移DJNZ Decrement and 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) B位为1则转移JNB Jump if the Bit is Not set B位为0则转移JBC Jump if the Bit is set and Clear the bit 位为1则转移,并清除该位NOP No Operation 空操作(5)位操作指令(1种助记符)SETB Set Bit 置位伪指令助记符英文注释功能ORG Origin 汇编起始命令DB Define Byte 定义字节命令DW Define Word 定义字命令EQU Equal 赋值命令DATA Data 数据地址赋值命令XDATA External DataBIT Bit 位地址符号命令END End 汇编结束命令DS 定义存储空间命令不同的微机系统有不同的汇编程序,也就定义了不同的汇编命令。

MCS-51单片机汇编指令操作码助记符和英文全称对照

MCS-51单片机汇编指令操作码助记符和英文全称对照

直接寻址方式访问以下三种存储空间:
1.特殊功能寄存器(只能用直接寻址方式访问)。

2.内部RAM的低128字节(对于8032/8052等单片机,其内部高128字节RAM(80H~0FFH)不能用直接寻址方式访问,而只能用寄存器间接寻址方式访问)。

3.位地址空间。

寄存器间接寻址方式是由指令指出某一个寄存器的内容作为操作数的地址。

(寄存器的内容不是操作数,而是操作数所在的存储器地址。


寄存器间接寻址使用当前工作寄存器区中R0或R1作地址指针(堆栈操作指令用栈指针SP)来寻址内部RAM(00H~0FFH)。

寄存器间接寻址也适用于访问外部扩展的数据存储器,用R0、R1或DPTR作为地址指针。

寄存器间接寻址用符号@表示。

相对寻址相对寻址方式以PC的内容作为基地址,加上指令中给定的偏移量,所得结果送PC寄存器作为转移地址。

应注意偏移量是有符号数,在-128~+127之间。

寻址方式及相关的存储空间
特殊功能寄存器只能采用直接寻址,而内部RAM高128字节只能采用寄存器间接寻址。

目的操作数不能采用立即寻址,@Ri中的i范围为0和1,@Rn中的n范围为0~7,每条指令中最多只能有1个Rn或者@Ri。

下面的都是错的:
MOV #30H ,40H
MOV A ,@R2。

C51单片机寄存器功能_指令_助记符

C51单片机寄存器功能_指令_助记符

C51单片机寄存器功能_指令_助记符单片机整理8051单片机的引脚图内存单元:0000H:系统复位后PC值为0000H,一般0000H开始前三个单元放一个无条件转移指令0003H-0033H中断服务程序的入口地址:0003H:外部中断0中断服务程序的入口地址000BH:定时/计数器0中断服务程序的入口地址0013H:外部中断1中断服务程序的入口地址001BH:定时/计数器1中断服务程序的入口地址0023H:串行口中断服务程序的入口地址002BH:预留0033H:LVD(内部低电压检测)中断服务程序的入口地址特殊功能寄存器:与运算相关1、ACC---是累加器,通常用A表示地址为E0H,复位值00H,自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器地址为F0H,复位值00H,在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

每个机器周期都有硬件来复位。

改为用以累加器为1的位数是奇数还是偶数。

若累加器A中为1位数是奇数,则P标志位置1,否则P标志位清0.在串行口通信中,此标志位具有重要的定义,用来传送奇偶校验位,以检验传输数据的可靠性,应用时将P 置入串行帧中的奇偶校验为即可。

(2) OV:溢出标志位进行算术运算时,如果产生溢出,则由硬件将OV置1,可以理解为溢出为真,标识运算结果超出了目的寄存器A所能标识的有效数范围(-128~127),否则OV清0,可以理解为溢出为假。

(3) RS1、RS0:工作寄存器区选择(4)F0:用户标志位由用户置位或复位,可以作为一个用户自定义的状态标志(5)AC:辅助进位标志进行加法或减法运算时,若低4位向高4位有进位或借位时,AC 将被元件置1,否则置0.AC位常用于十进制调整指令和压缩BCD运算等。

(6)CY:进位标志进行算术运算时,由硬件置位或复位,表示运算过程中,最高位是否有进位或借位的状态,进行位操作时,CY被认为是位累加器,它的作用相当于CPU中的累加器A。

MCS51汇编指令

MCS51汇编指令
A)+#data→(A)累加器A中的数据与立即数#data相加,结果存在A中


ADD A,direct
A)+(direct)→(A)累加器A中的数据与直接地址单元中的数据相加,结果存在A中


指令格式(助记符)
指令功能说明
字节
周期
ADD A,Rn
(A)+(Rn)→(A)累加器A中的数据与工作寄存器Rn中的数据相加,结果存在A中
如A的内容与直接地址内的数据不同,则短跳转
3
2
CJNE A,#data,rel
如A的内容与立即数不同,则短跳转
3
2
CJNE Rn,#data,rel
如Rn寄存器中的数据与立即数不同,则短跳转
3
2
CJNE @Ri,#data,rel
如间接地址的数据与立即数不同,则短跳转
3
2
DJNZ Rn,rel
Rn寄存器中的数据减1,若不为0,则短跳转,否则执行下条指令
3
2
MOV direct,#data
#data→(direct)立即数→直接地址单元direct
3
2
MOV direct,A
(A)→(direct)累加器A中的数据→直接地址单元direct
2
2
MOV direct,Rn
(Rn)→(direct)寄存器Rn中的数据→直接地址单元direct
2
2
MOV direct,@Ri
当进bit=1跳至rel,并且清除此bit为0,否则执行下一条指令
3
3
ACALL addr11
2K范围内子程序调用
2
2
LCALL addr16

51单片机指令助记

51单片机指令助记
RET 子程序返回 1 24
RETI 中断返回 1 24
AJMP addr11 绝对短转移 2 24
LJMP addr16 长转移 3 24
SJMP rel 相对转移 2 24
JMP @A+DPTR 相对于DPTR的间接转移 1 24
控制转移指令共有17条,可分为“无条件转移指令” “有条件转移指令” “子程序调用指令” 及 “返回指令”。
5、布尔变量操作类指令
助记符 功能说明 字节数 振荡周期
CLR地址位 2 12
SETB C 置进位位 1 12
DEC Rn 寄存器减1 1 12
DEC direct 直接地址单元内容减1 2 12
DEC @Ri 间接RAM内容减1 1 12
MUL A,B A乘以B 1 48
DIV A,B A除以B 1 48
DA A 累加器进行十进制转换 1 12
RRC A 累加器带进位循环右移 1 12
SWAP A 累加器半字节交换 1 12
4、控制转移类指令
助记符 功能说明 字节数 振荡周期
ACALL addr11 绝对短调用子程序 2 24
LACLL addr16 长调用子程序 3 24
MOV direct,direct 直接地址单元中的数据送入直接地址单元 3 24
MOV direct,@Ri 间接RAM中的数据送入直接地址单元 2 24
MOV direct,#data8 8位立即数送入直接地址单元 3 24
MOV @Ri,A 累加器内容送入间接RAM单元 1 12
如果左边的数(A,Rn,@Ri)大或者等于右边的数(direct,#date8),则CY=0;否则CY=1)

51单片机汇编语言指令教程(校对版)

51单片机汇编语言指令教程(校对版)

03
02
01
00
返回前一次
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
5,位操作指令:位传送、位置位、位运算和位控制转移等 操作。 【 特点】:按位操作而不是按字节的操作。位控转移的判 断不是检测某一个字节而是对某一个位进行检测并决定是 否进行程序转移。 这类指令基本不影响PSW的内容。
2.2 寻址方式
在指令的操作数位置上,用于表征、寻找操作数的方式定义 为“寻址方式”。
3,间址方式的指令不能访问SFR中的单元。如下面的程序 是错误的: MOV R1,#80H MOV A,@R1 (因为80H为SFR的物理地址)
MCS-51 片内 、片外 数据存储器示意图
FFH 特殊功能 寄存器 SFR
80H 7FH
通用数据 存储器
00H
片内数据存储器 256B个字节
FFFFH
注意:
片外数据 存储器 64KB
1,访问片内RAM20H存储单元; MOV A,20H
2,访问片外RAM存储单元; MOV R0,#20H MOVX A,@R0
0000H
3,尽管片内与片外的RAM单元 的00H-FFH地址相重叠但由 于指令的不同不会发生地址
混乱。
片外数据存储器 64KB个字节
2.2.5 变址寻址
操作码 OP
操作数或操作数地址 DATA 或 ADDRESS
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)出栈;(2)算术运算类指令(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) 除法;(3)逻辑运算类指令(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位交换;(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)空操作;(5)位操作指令(1种助记符)SETB(Set Bit)位置1。

1.通用数据传送指令.MOV----> moveMOVSX---->extended move with sign dataMOVZX---->extended move with zero dataPUSH---->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 EAX CDQ---->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。

相关文档
最新文档