51单片机 汇编~ JNB F0,LOOP2;
微控制器内部是中央处理单元(CPU),它执行我们编写的程序。微控制器中还有一个与 CPU 并行运行的定时器。
在:TTCO_1S:MOVTMOD,#01H; 将定时器设置为工作位置1 定时器T0被设置并启动,并且T0中断使能。
然后,当执行这条指令:LOOP2:JNBF0,LOOP2;时,T0也被定时,并且会秘密执行中断函数,使F0=1。
该指令等待F0变为1,在定时器的控制下,F0每隔1秒出现一次(实际时间取决于单片机晶振的频率)。
指令:LOOP2:JNBF0,LOOP2;,表示等待一秒。
如果没有计时器,这些指令将是一个无限循环。
汇编语言在51单片机中的所有指令有那些?
MCU 指令功能表、助记码说明 MOVA、RnE8~EF 寄存器 AMOVA、directE5 dircet 直接字节发送 AMOVA、@RiER~E7 间接 RAM 发送 AMOVA、#data74data 立即数据发送 AMOVRn、AF8~FFA 发送寄存器 MOVRn、dircetA8~AFdircet 直接发送字节到寄存器MOVRn,#data ta78~7Fdata 瞬时数据发送到寄存器MOVdircet, AF5dircetA 发送到直接字节 MOVdircet, Rn88~8Fdircet 寄存器 发送到直接字节 MOVdircet1, dircet285dircet1dircet2 直接字节发送到直接字节 MOVdircet @Ro8~87 间接发送到直接字节 MOVdircet,# data75dircetdata 瞬时数据发送到直接字节 MOV@Ri, AF6~ F7A发送到间接RAMMOV@Ri,#data76~77data直接字节发送到间接RAMMOV@Ri, #data76~77data 瞬时数据发送到间接 RAMMOVDPTR,#data1690data15~816 位常量发送数据指针 data7~0MOVCA,@A+ DPTR93 选择 ((A)+(DPTR)) 寻址的程序存储器字节 AMOVCA,@A+PC83 选择AMOVXA 为程序存储器字节地址为((A)+(PC)),@RiE 2~E3 发送外部数据(8 位地址)至 AMOVXA、@DPTRE0 发送外部数据(16 位地址)到 AMOVX@Ri、AF2~F3A 发送外部数据(8 位地址) MOVX@DPTR、AF0A 发送外部数据(16 位地址) PUSHdircetC0dircet 将字节直接压入出栈,SP加1POPdircetD0dircet并将字节直接压出栈,SP减1XCHA,RnC8~CF交换A和 寄存器 XCHA、dircetC5dircet 与直接交换字节 XCHA、@RiC6 ~C7 交换 A 与间接 RAMXCHA、@RiD6~D7 交叉交换 A 与间接 RAM 的低位 SWAPAC4 算术运算(交换 A 的两个半字节) ADDA, Rn28 ~2F寄存器添加到AADDA,dircet25dircet直接字节添加到AADDA,@Ri26~27间接RAM 添加到 AADDA 中,#data24data 立即数添加到 AADDA 中,Rn38~3F 寄存器和进位位添加到 AADDA 中,dircet35di rcet 中添加直接字节和进位位到 AADDA 中,@Ri36~37 中添加到 AADDA 中。间接字节和进位位加到AADDA,data34data 将立即字节和进位位加到AADDA,Rn98~9FA 减去寄存器和进位位 ADDA、dircet95dircetA 减去直接字节和进位位 ADDA、@Ri36~37 间接 RAM 和进位位加到 AADDA、data34data 立即数和进位位加到 ASUBBA、Rn98~9FA 减去寄存器和进位位 SUBBA、dircet95dircetA 减去直接字节和进位bit SUBBA,@Ri96~97A 减去间接 RAM 和进位位 SUBBA,#data94dataA 减去立即数和进位位 INCA04A加1INCRn08~0F寄存器加1INCdircet05dirce t直接字节加1INC@Ri06~07间接RAM加1DECA14A减1DECRn18~1F寄存器减1DECdircet15dircet直接字节减1DEC@Ri16~17间接RAM减1INCDPTRA3数据指针加1MULABA4AD调整4个BDDA 调节ic操作ANLA,Rn58 ~5 F寄存器“与”到AANLA,dircet55dircet直接字节“与”到AANLA,@Ri56~57间接RAM“与”到AANLA,#data54data瞬时数据“与”到AANLdircetA52dircetA“与”到AANLA直接字节 ANLdircet,#data53dirceANDdata 立即数为立即字节 ORLA,Rn4 8~4F 寄存器 “或”到 AORLA,dircet45dircet 直接字节 “或”到 AORLA,@Ri46~47 间接 RAM “或”到 AORLA,#data44data 立即数 “或”到 AORLdircet,A42dircetA “或”到直接字节 ORLdircet,#data43dircetdata 立即数 OR直接字节 XRL A、Rn68~6F 寄存器“异或”到 AXRLA、dircet65dircet 直接 字节“XOR”到AXRLA,@Ri66~67间接RAM“XOR”到AXRLA,#data64data立即数“XOR”到AXRLdircetA62dircetA“XOR”到直接关闭,te #data63dircetdata立即数“XOR”到直接字节CLRAE4删除CPLAF4A negro RLA23A左循环移位 RLCA33A进位左循环移位 RRA03A右移位 循环移位 RRCA13A 进位右循环移位控制程序传送 ACALLaddr11*1addr (a7~a0) 绝对值子程序调用 LCALLaddr1612 调用 addr(7~0) RET22 子程序调用 返回 RETIaddr1132 中断调用返回 AJMPaddr11△1addr(a7~a6) 绝对传送 LJMPaddr1602addr(15~8) 长传送 addr(7~0) SJMPrel80rel 短传送、相对传送 JMP@A+DPTR73 相对于 DPTR 传送 JZrelro60Arel 为 zerelro60Arel 传送 JZrelro60Arel7Zrel0 零传送 CJNE A,dircet,relB5dircetrel 直接字节与 A 比较,若不相等,则立即传送 CJNEA,#data,relB4datarel 数与 A 比较,若不相等,则立即传送 CJNEA,Rn,#data,relB8~BFdatarel 并寄存器,若不相等相等则转CJNE@Ri,#data,relB6~B7datarel立即数据与间接RAM比较,不相等转入DJNZRn,relD8~DFrel 寄存器减1,如果不为零,传送到DJNZdircet,relB5dircetrel直接字节减1,如果不为零,传送到N OP00 无操作*=a10a9a8l△=a10a9a80 布尔变量操作 CLRCC3 清除进位 CLRbitC2 清除直接位 SETBCD3 设置进位 SETBbitD2 设置连接位 CPLCB3 进位取反 CPLbitB2 直接位取反 ANLC、bit82dit 直接位“AND”进位 ANLC、/bitB0 直接位取反“AND”进位 ORLC、bit72bit 直接位“OR”进位 ORLC、/bitA0bit 直接位取反 OR 进位 MOVC、bitA2bit 直接位进位 MOVbit 、C92bit进位为直接位 JCrel40rel进位为1进位 JNCrel50rel进位为0进位 JBbit、rel20bitrel 直接位为 1 相对传送 JNBbit、rel30bitrel 直接位为 0 相对传送 JBCbit、rel10bitre l 相对传送 如果该位为 1 则去掉该位 [1] 循环移位指令 (4) RLA 将 RRA 的左移一位累加器A与进位位CY一起,向左移一位RRCA。
累加器A的与进位位CY一起右移一位[2] WAPA; 替换累加器[3]的。
逐位拒绝指令[4]。
A)、将累加器的清为0 [5]逻辑与运算指令 (6)ANLA、数据将累加器A的与直接寻址单元的进行逻辑与运算。
结果存入寄存器A。
ANLdata,#data 将直接地址单元中的与立即数进行与逻辑运算。
结果存储在直接地址位置。
ANLA,#data;累加器A的与立即数进行AND逻辑运算。
结果存入累加器A。
ANLA,Rn;累加器A的与寄存器Rn的进行AND逻辑运算。
结果存储在累加器 A 中。
ANLdata,A 将直接地址单元的与累加器 A 的进行 AND 逻辑运算,结果存储在直接地址单元中。
ANLA,@Ri;累加器A的与工作寄存器Ri指向的地址单元的进行与逻辑运算。
结果存入累加器A。
[6]逻辑或指令(6个元素) 该组指令的功能是对两个单元的进行逻辑或运算。
如果直接地址是I/O地址,则为“读-修改-写”操作。
ORLA,data;累加器A的与直接寻址单元的进行逻辑或运算。
结果存入寄存器A。
ORLdata,#data;将直接地址单元的与立即数进行逻辑或运算。
结果存储在直接地址位置。
ORLA,#data;累加器A的与立即数进行逻辑或运算。
结果存入累加器A。
ORLA,Rn 累加器A 的和寄存器Rn 的执行逻辑或运算。
结果存储在累加器 A 中。
ORLdata,A; 直接寻址单元的与累加器A的进行逻辑或运算。
结果存储在直接地址位置。
ORLA, @Ri 累加器 A 的和 所指向的地址单元的工作寄存器Ri执行逻辑或运算。
结果存入累加器A。
[7] 逻辑异或指令(6 个元素)XRLA、数据将累加器A 的与直接地址单元的进行逻辑异或运算。
结果存入寄存器A。
XRLdata,#data;直接地址单元的与立即数进行逻辑异或运算。
结果存储在直接地址位置。
XRLA,#data;累加器A的与立即数进行逻辑异或运算。
结果存储在累加器A 中。
XRLA,Rn 累加器A 的和寄存器Rn 的执行逻辑异或运算。
结果存储在累加器A中。
XRLdata,A; 直接寻址单元的与累加器A的进行逻辑异或运算。
结果存储在直接地址位置。
XRLA,@Ri 累加器A的与工作寄存器Ri指向的地址单元的进行逻辑异或运算。
结果存在于对累加器A中的控制传输指令的分析中[1]。
+2→(PC),addr11→(PC10-0) 程序计数器被赋予新值(11位地址),(PC15-11)不改变 SJMPrel (PC) +2+rel→(PC) 当前程序计数器先加 上面 2 加 偏移量给程序计数器赋一个新值 JMP@A+DPTR (A) + (DPTR) → (PC) 累加器指向的地址单元的值,加上 程序计数器数据指针的值[2]。
条件传送指令(8个元素) JZre l;A=0, (PC) + 2 + rel → (PC),如果累加器为0,则转移到offset指向的地址,否则程序继续运行 JNZrel A≠0 , (PC )+2+rel→(PC),累加器的。
如果为0,则转移到offset指向的地址,否则程序将 运行CJNEA,data,rel;A≠(data),(PC)+3+rel→(PC),累加器与直接地址单元不变,然后传送到所指向的地址通过偏移量,否则程序将运行CJNEA,#data,rel;A≠#data,(PC)+3+rel→(PC),累加器不等于立即数,则转移到偏移量该地址指向,否则程序将运行 CJNERn,#data,rel;A≠#data,(PC)+3+rel→(PC),且工作寄存器Rn的不等于立即数,则传送到所指向的偏移位置到地址,否则程序运行 CJNE@Ri,#data,rel;A≠#data,(PC)+3+rel→(PC),且工作寄存器 Ri 指向的地址单元不相等到立即数,然后将其转移到偏移点 地址,否则程序继续进行布尔变量的指令分析[1] 位传送指令 (2) MOVC,bit→CY,某数据位送至 CYMOV 位,C 位送至某位[2]。
位复位指令(4 个元素) CLRC 0→CY,清除 CYCLRbit,清除某个位 SETBC,设置 CYSETBbit,设置某个位 [3]条)ANLC,bit;(CY)∧(bit)→CYANLC,/bit; ( CY)∧()→CYORLC,位;(CY)∨(位)→CYORLC,/位;(CY)∧()→CYCPLC;()→CYCPLbit;()→bir[4] 位控制传送指令 (5) JCrel;(CY)=1 传送,(PC)+2+rel→PC,否则程序继续运行,(PC)。
)+2→电脑。
JNCrel;(CY)=0传送,(PC)+2+rel→PC,否则程序继续执行,(PC)+2→PC。
JBbit,相对; 位状态转移为 1。
JNBbit,rel 位状态转移为 0。
JBCbit,rel 将位状态转移为 1 并将该位清除为“0”。
在51单片机编程中,汇编指令系统中有哪些指令具体指针功能?
在对微控制器51进行编程时,唯一可以与数据指针一起使用的寄存器是R0、R1和DPTR。当R0和R1作为数据指针时,只能访问数据写入存储器和数据写入存储器的低8位地址空间00H~FFH。
DPTR可以访问数据存储器中的16位地址空间,即0000H~FFFFH。
DPTR还可以与累加器A配合,访问程序存储器中寄存器首地址的数据寄存器中的数据。
带有函数指针的指令是: 1. 访问数据存储器:MOVA、@R0MOV@R1、AADDA、@R0INC@R1SUBBA、@R1ANLA、@R0ORLA、@R1CJNE@R0、#data、rel 2。
访问片外数据存储器:MO VXA、@R0MOVX@ R1、A3 访问最近的存储器数据:MOVXA、@DPTRMOVX@DPTR,A4 访问程序数据存储器: MOVCA,@A+DPTR@是前缀规则,因为R0表示R0为规则; 其中R0存放的是一个手术室。
哈哈,如果您满意,请选择:满意答案