单片机33逻辑运算指令
高职高专单片机原理及应用33指令系统.ppt

6.
MOVC A, @A+PC
MOVC A, @A+DPTR
这是两条很有用的查表指令, 可用来查找存放在外部程序 存储器中的常数表格。第一条指令是以PC作为基址寄存器, A 的内容作为无符号数和 PC的内容 ( 下一条指令的起始地址) 相加后得到一个 16 位的地址, 并将该地址指出的程序存储器单 元的内容送到累加器A。 这条指令的优点是不改变特殊功能寄 存器和PC的状态, 只要根据A的内容就可以取出表格中的常数。 缺点是表格只能放在该条查表指令后面的 256 个单元之中, 表 格的大小受到限制, 而且表格只能被一段程序所利用。
(四)、 XRL A, Rn XRL A, direct XRL A, @Ri XRL A, #data XRL direct, A XRL direct, #data 这组指令的功能是: 将两个操作数的内容按位进行逻辑 异或操作, 并将结果送回到目的操作数的单元中。
四、
控制转移指令共有 17 条, 不包括按布尔变量控制程序转 移指令(见表 3.5)。其中有 64 KB范围内的长调用、 长转移 指令; 有 2 KB范围内的绝对调用和绝对转移指令; 有全空间的 长相对转移及一页范围内的短相对转移指令; 还有多种条件转 移指令。由于MCS -51 提供了较丰富的控制转移指令, 因此在 编程上相当灵活方便。这类指令用到的助记符共有 10 种: AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、 CJNE、DJNZ。
例如: 进入中断服务子程序时, 把程序状态寄存器PSW、 累加器A、 数据指针DPTR进栈保护。设当前SP为 60H。则
PUSH PSW PUSH ACC PUSH DPL PUSH DPH 执行后, SP内容修改为 64H, 而61H、62H、63H、64H单元中 依次栈入PSW、A、DPL、DPH的内容。当中断服务程序结 束之前, 如下程序段(SP保持 64H不变)
单片机原理及应用第6讲逻辑运算指令及移位、转移指令

• (2)带进位加法指令 • ADDC A,Rn • ADDC A, #data • ADDC A, direct • ADDC A, @Ri • 注意:影响PSW寄存器中的Cy 、AC、 OV、P标志位
• (3)加1指令 • INC A;只有它影响PSW,其余四个指 令不 影响 INC Rn INC direct INC @Ri INC DPTR
• • • •
4、累加器清零和取反指令 CLR A CPL A 用于对某个存储单元或累加器A中的数进 行清零和取反
• 例: • 1、内部数据存储单元30H有一个数,试 编程保留其低4位,高4位变为0 • 2、试编程把累加器A的低四位送入P1口 低四位, P1口高四位不变 • 3、外部RAM30H中有一个数,试编程把 它的低四位取反 • 4、内部RAM 30H中有一负数x,试编程 求x的补码
单片机汇编语言指令集

汇编语言的所有指令数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL 影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当C=0,Z=0时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立CXZ: CX寄存器的值为0(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,O=1时成立P: PARITY,P=1时成立PE: PARITY EVEN,P=1时成立PO: PARITY ODD,P=0时成立S: SIGN,S=1时成立Z: ZERO,Z=1时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。
8051单片机3单片机指令系统

(1) 方括号[ ]表示该项是可选项, 可有可无。 (2) 标号是用户设定的符号, 它实际代表该指令所在的地址。 标号必须以字母开头, 其后跟1~8个字母或数字, 并以“:”结 尾。 (3) 操作码是用英文缩写的指令功能助记符。它确定了本条指 令完成什么样的操作功能。如: ADD表示加法操作。任何一 条指令都必须有该助记符项, 不得省略。 (4) 操作数指的是指令操作的数据. 可以是一个数,也可以是寄 存器和特殊功能寄存器,还可以是标号地址;个数可以为0, 3 也可以为1,2,3
23
3.4.1 数据传送类指令
3.4.1 数据传送类指令
数据传送类指令共29条, 它是指令系统中最活跃、 使 用最多的一类指令。一般的操作是把源操作数传送到目的操 作数, 即指令执行后目的操作数改为源操作数, 而源操作数保 持不变 数据传送类指令不影响进位标志CY、 半进位标志AC 和溢出标志OV, 但当传送或交换数据后影响累加器A的值时, 奇偶标志P的值则按A的值重新设定。 按数据传送类指令的操作方式,又可把传送类指令分 为3种类型: 数据传送、数据交换和堆栈操作, 并使用8种助记 符: MOV、MOVX、MOVC、XCH、XCHD、SWAP、 PUSH及POP 24
3.4.1 数据传送类指令
25
3.4.1 数据传送类指令
1. 内部数据存储器间数据传送指令
内部RAM区是数据传送最活跃的区域, 可用的指令数也最 多, 共有16条指令, 指令操作码助记符为MOV,通用格式为: MOV 目的操作数 , 源操作数 内部RAM之间源操作数传递关系如下图所示
26
3.4.1 数据传送类指令
4
3.1 指令格式
指令描述符号:
在分类介绍各类指令之前, 先对描述指令的一些 符号意义进行一些简单约定:
单片机指令的逻辑运算与位操作技巧

单片机指令的逻辑运算与位操作技巧在单片机编程中,逻辑运算和位操作是非常常见的操作。
通过逻辑运算和位操作,我们可以对数据进行逻辑判断、位取反和位移等操作,极大地提高了程序的效率和灵活性。
本文将介绍一些常用的单片机指令的逻辑运算与位操作技巧。
一、逻辑运算技巧1. 与运算与运算是指将两个二进制数的对应位进行逻辑与运算,结果为1则输出1,否则输出0。
与运算常用于屏蔽和提取二进制数的某些位,可以通过逻辑与运算将不需要的位屏蔽掉。
例如,要将一个8位二进制数的低4位置零保留高4位,可以使用与运算。
2. 或运算或运算是指将两个二进制数的对应位进行逻辑或运算,结果为1则输出1,否则输出0。
或运算常用于将某些位设置为1,可以通过逻辑或运算将需要的位设为1。
例如,要将一个8位二进制数的低4位置1保留高4位,可以使用或运算。
3. 非运算非运算是指将一个二进制数的每一位取反,即1变为0,0变为1。
非运算常用于位的取反操作。
例如,要将一个8位二进制数的低4位取反,可以使用非运算。
4. 异或运算异或运算是指将两个二进制数的对应位进行逻辑异或运算,结果为1则输出1,否则输出0。
异或运算常用于判断两个二进制数的对应位是否相同。
例如,可以通过异或运算判断一个8位二进制数的低4位是否全为0。
二、位操作技巧1. 位取反位取反是指将一个二进制数的某些位取反,可以使用逻辑非运算实现。
位取反常用于将某些位翻转,即1变为0,0变为1。
例如,要将一个8位二进制数的低4位取反,可以使用位取反操作。
2. 位与操作位与操作是指将两个二进制数的对应位进行逻辑与运算,结果为1则输出1,否则输出0。
位与操作常用于屏蔽和提取二进制数的某些位。
例如,要提取一个8位二进制数的低4位,可以使用位与操作。
3. 位或操作位或操作是指将两个二进制数的对应位进行逻辑或运算,结果为1则输出1,否则输出0。
位或操作常用于将某些位设置为1。
例如,要将一个8位二进制数的低4位设置为1,可以使用位或操作。
单片机汇编程序算术逻辑运算

单元中内容减1。
该组指令的操作不影响PSW。
2021/5/
单片机原理B及a接ck口技术
8、 十进制调整指令(1条)
汇编指令格式 DA A;
机器码格式 1101 0100
操作
若 (A0-3)>9或AC=1,则(A0-3)+6→A0-3 同时,若(A4-7)>9或CY=1,则(A4-7)+6→A4-7
SUBB A,direct;1001 0101 (A) -CY -(direct) →A direct
SUBB A,@Ri; 1001 011i (A) -CY -((Ri)) →A
SUBB A, #data; 1001 0100 (A) -CY -#data →A data
注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中 将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中 将间接寻址(Ri为R0或R1)
结果为:(A)=74H 标志位为:Cy=0 AC=0 OV=1 P=0
2021/5/
单片机原理B及a接ck口技术
4、 乘法指令(1条)
汇编指令格式
机器码格式
操作
MUL AB
;
1010 0100 (A)×(B)→B15-8A7-0
该指令将累加器A和寄存器B中两个无符号数相乘,所得160111B(即67的BCD码),CY内容为1。求执行下列
指令后的结果。
ADDC A,R3;
DA A;
解:先执行ADDC A,R3; (A): 0101 0110 BCD:56
(R3): 0110 0111 BCD:67 (+)(CY): 0000 0001 BCD:01
单片机指令的逻辑运算与位操作

单片机指令的逻辑运算与位操作在单片机的程序设计中,逻辑运算和位操作是非常重要的操作。
通过逻辑运算和位操作,我们可以对数据进行精确的控制和处理。
本文将讨论单片机指令中的逻辑运算和位操作,并探讨其在实际应用中的一些案例。
一、逻辑运算在单片机指令中,逻辑运算主要通过与、或、非等运算符进行。
这些运算符可以对变量的二进制数进行逻辑运算,从而得到相应的结果。
逻辑运算在控制程序的执行流程、判断条件等方面起到了至关重要的作用。
逻辑与运算逻辑与运算符用符号“&”表示,它可以将两个数的二进制数进行与运算,并返回结果。
例如,如果我们有两个8位的二进制数A和B,在执行A & B运算后,将得到一个新的8位二进制数,其中每一位的值为A和B对应位的与运算结果。
逻辑或运算逻辑或运算符用符号“|”表示,它可以将两个数的二进制数进行或运算,并返回结果。
与逻辑与运算类似,逻辑或运算也会生成一个新的二进制数,其中每一位的值为两个操作数对应位的或运算结果。
逻辑非运算逻辑非运算符用符号“~”表示,它可以将一个数的二进制数进行非运算,并返回结果。
逻辑非运算会翻转每一位的值,即0变为1,1变为0。
二、位操作位操作是指对一个变量的二进制位进行特定操作的方法。
与逻辑运算类似,位操作在单片机程序设计中起到了至关重要的作用。
位与操作位与操作用符号“&”表示,它可以将两个数的二进制数进行位与运算,并返回结果。
与逻辑与运算类似,位与操作也会生成一个新的二进制数,其中每一位的值为两个操作数对应位的与运算结果。
位或操作位或操作用符号“|”表示,它可以将两个数的二进制数进行位或运算,并返回结果。
与逻辑或运算类似,位或操作也会生成一个新的二进制数,其中每一位的值为两个操作数对应位的或运算结果。
位非操作位非操作用符号“~”表示,它可以将一个数的二进制数进行位非运算,并返回结果。
位非操作会翻转每一位的值。
三、举例说明假设我们有一个8位的单片机,其中有两个变量A和B。
单片机指令英文全称

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。
(完整版)单片机指令大全

一个单片机所需执行指令的集合即为单片机的指令系统。
单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要翻译”成为机器码,单片机才能执行之。
现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。
但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。
所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。
在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。
但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识另h不易编写、难于辨读,极易出错,同时出错了也相当难查找。
所以现在基本上都不会直接使用机器语言来编写单片机的程序。
最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。
每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。
MCS-51共有111条指令,可分为5类:[1] .数据传送类指令(共29条)[2] .算数运算类指令(共24条)[3] .逻辑运算及移位类指令(共24条)[4] .控制转移类指令(共17条)[5] .布尔变量操作类指令(共17条)一些特殊符号的意义在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
Rn――当前选中的寄存器区的8个工作寄存器R0 —R7 (n=0-7 )。
Ri――当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1 (i=0,1 )direct —内部数据存储单元的8位地址。
03.9 第三章 - 单片机指令系统(位操作指令MOV、SETB、CLR、CPL、ANL、ORL)

;A = 59H = 0101 1001B ;P1 = A = 0101 1001B ;C = 1 ;ACC.1 = 1 ;P1.3 = 0 ;P1.6 = 0 ;P1.2 = 1 ;(20H)= P1 = 0001 0101B ;(30H)= A = 0101 1011B
09:43
单片机技术
8
3.9.2 位控制指令(SETB、CLR、CPL)
;P1.0 = 1 ;ACC.3 = 0 ;C = 1 ;C = 1 ;C = 1 ;P3.4 = 1
09:43
单片机技术
14
3.9.3 位条件转移指令(JC、JB、JBC)
❖ 1.判C转移指令ຫໍສະໝຸດ JC、JNC)JC rel
;先PC←PC+2;若(Cy)= 1时转移,且PC'
=PC+rel,否则顺序执行
CPL bit ;(bit)= (/bit)
▪ 功能:将Cy或bit取反。
09:43
单片机技术
9
3.9.2 位控制指令(SETB、CLR、CPL)
❖ 课堂练习
▪ 执行以下指令?
SETB P1.0 CLR 20H CLR PSW.2 CPL PSW.2 CLR RS0 SETB RS1
;P1.0 = 1 ;20H = 0 ;PSW.2 = 0 ;PSW.2 = 1 ;RS0 = 0 ;RS1 = 1
❖ 1.位置1指令(SETB)
▪ 格式:SETB C ;(Cy) = 1
SETB bit ;(bit)= 1
▪ 功能:将Cy或bit置1。
❖ 2.位置0指令(CLR)
▪ 格式:CLR C ;(Cy) = 0
CLR bit ;(bit)= 0
▪ 功能:将Cy或bit置0。
单片机3.3逻辑运算指令

注: ●位逻辑指令是某一位地址或C的内容进行逻辑操作,参 与运算的只是一位数。 ●片内RAM可位寻址字节地址是20H—2FH,位地址范围 是00H-7FH, 共128位,注意区分字节地址和位地址。 ●特殊功能寄存器SFR中可位寻址的位亦可参与位逻辑运 算,这些位所在的字节地址必能被8整除,其余不可位寻 址的位不可参与位逻辑运算。
★非运算:求反
符号 A
Z
记作 Z = A
2
一、 对A累加器进行的逻辑操作:
1. CPL A
;A求反
2. CLR A ;A清0
3.移位指令:
(1). RR A
7
0
(2).RRC A
C7
0
3
(3).RL A
7
0
(4).RLC A
C7
0
移位指令助记符意义: 第一个字母R 表示移位操作。 第二个字母 表示移位方向,L 向左;R 向右。 第三个字母 表示是否通过C。
16
位逻辑指令举例 MOV 24H, #02H MOV 2EH, #05H MOV C, 21H ANL C, 72H CLR C ORL C, 24H ANL C, 71H SETB C CPL C ORL C, 21H CLR 72H
;(24H) = 02H,(21H位)=1 (2EH)=05H,72H位70H位=1 ;( C )=1 ;( C) =1 ;( C) =0 ;(24H位)求反为1,( C )=1 ;(71H位)=0,与结果( C )=0 ;( C )=1 ;( C )=0 ;(21H位)=1,或结果( C )=1 ;(72H位)=0,(2EH)=01H
为C表示连同C共9位数一起移位 无第三字母表示与C无关。 4.SWAP A ;A的内容高低半字节相交换
单片机指令大全

引言概述:单片机指令是嵌入式系统设计中至关重要的一部分,它们定义了单片机的功能和操作。
本文是单片机指令大全系列的第二部分,旨在提供更多全面的单片机指令信息,帮助读者更好地理解和应用单片机指令。
正文内容:一、移位指令1.逻辑左移指令:将操作数的每一位向左移动一位,并且最低位填充0。
2.逻辑右移指令:将操作数的每一位向右移动一位,并且最高位填充0。
3.算术右移指令:将操作数的每一位向右移动一位,并且最高位保持不变。
4.循环左移指令:将操作数的每一位向左循环移动一位,即最高位移动到最低位。
5.循环右移指令:将操作数的每一位向右循环移动一位,即最低位移动到最高位。
二、逻辑运算指令1.逻辑与指令:对操作数进行逻辑与运算,将两个二进制数对应位上的值进行逻辑与操作。
2.逻辑或指令:对操作数进行逻辑或运算,将两个二进制数对应位上的值进行逻辑或操作。
3.逻辑非指令:对操作数进行逻辑非运算,将二进制数的每一位取反。
4.逻辑异或指令:对操作数进行逻辑异或运算,将两个二进制数对应位上的值进行逻辑异或操作。
5.逻辑移位指令:将操作数进行逻辑左移或右移。
三、算术运算指令1.加法指令:对操作数进行加法运算,并将运算结果保存到指定的寄存器或存储器中。
2.减法指令:对操作数进行减法运算,并将运算结果保存到指定的寄存器或存储器中。
3.乘法指令:对操作数进行乘法运算,并将运算结果保存到指定的寄存器或存储器中。
4.除法指令:对操作数进行除法运算,并将运算结果保存到指定的寄存器或存储器中。
5.移位指令:对操作数进行移位运算,包括算术左移、算术右移、循环左移和循环右移。
四、输入输出指令1.读取输入指令:从指定的输入设备读取数据,并将数据保存到指定的寄存器或存储器中。
2.输出显示指令:将指定的数据从寄存器或存储器中读取,并显示到指定的输出设备上。
3.端口输入指令:从指定的端口读取数据,并将数据保存到指定的寄存器或存储器中。
4.端口输出指令:将指定的数据从寄存器或存储器中读取,并输出到指定的端口上。
第九节 逻辑运算类指令和位操作指令

9.1 逻辑运算指令 9.1.1 逻辑与运算指令
逻辑与运算指令举例
例:设(A)=0C3H(11000011B),(R0) =0C3H(11000011B),( ) ),(R0 =0AAH(10101010B),执行指令: =0AAH(10101010B),执行指令: ),执行指令 ANL A,R0 (逻辑与运算用符号∧表示) A, 逻辑与运算用符号∧表示) (A)=1执行结果:( :(A =82H(10000010B) 执行结果:(A)=82H(10000010B) 指令ANL常用来屏蔽某些不用位 常用来屏蔽某些不用位, 例:指令ANL常用来屏蔽某些不用位,方法是将该位 0”相 用“0”相“与”,这种操作的目的操作数常用直接地 址寻址,而源操作数则用立即数。 址寻址,而源操作数则用立即数。如 ANL P1,#01100110 B P1, 执行结果: P1口锁存器的第 口锁存器的第0 执行结果:将P1口锁存器的第0、3、4、7位的内容 屏蔽掉。不管P1口中的这些位原值为何值 口中的这些位原值为何值, 屏蔽掉。不管P1口中的这些位原值为何值,经与操作 后均屏蔽为0 而其它位保持原值不变。 后均屏蔽为0,而其它位保持原值不变。
9.1.2 逻辑或运算指令
ORL A,Rn A, ORL A,direct A, ORL A,@Ri A, ORL A,#data A, ORL direct,A direct, ORL direct,#data direct, 和前面逻辑与指令类似,这里前4 和前面逻辑与指令类似,这里前4条指令的操作结果 存放在A 后两条指令将结果存放在直接地址中。 存放在A中,后两条指令将结果存放在直接地址中。
第九节 逻辑运算类指令和 位操作指令
ANL A,Rn A, ANL A,direct A, ANL A,@Ri A, ANL A,#data A, 上述指令的目的操作数为累加器A的内容, 上述指令的目的操作数为累加器A的内容,源操作数 有四种寻址方式:寄存器Rn 直接和间接寻址、 Rn、 有四种寻址方式:寄存器Rn、直接和间接寻址、立 即数。两操作数进行“ 运算后, 即数。两操作数进行“与”运算后,结果保留在累加 响任何标志位。 器A中,不影响任何标志位。 ANL direct,A direct, ANL direct,#data direct, 上述指令的目的操作数为直接地址寻址单元内容, 上述指令的目的操作数为直接地址寻址单元内容,源 操作数有两种寻址方式: 和立即数。 操作数有两种寻址方式:累加器A和立即数。运算结 果保留在直接寻址单元中,不影响任何标志位。 果保留在直接寻址单元中,不影响任何标志位。
Holtek(合泰)单片机指令介绍

DEC [m]
指令说明:
RAM ALU Shifter
[m]-1
影响标志:Z
DECA [m]
指令说明:
RAM ALU Shifter
[m]-1
ACC
影响标志:Z
〈例〉
RAM STATUS
…
INC [90H]
55H 1EH 00H
ACC
INCA [90H]
…
DEC [91H]
FEH FFH
指令周期
一个指令周期包括四个系统时钟周期。 指令的提取和执行呈流水线工作。
指令周期
由于采用了流水线的工作方式,因此多数 指令都能在1个指令周期内执行完成。 查表指令是2周期指令。(若查表所得内容
的低8位送往PCL,则该指令的执行就需要3个指 令周期。)
凡是使程序非顺序执行的指令,其执行时 间需要2个指令周期。(包括:JMP、CALL等,
MCU概述 指令系统概述 HOLTEK指令系统
HOLTEK指令系统
数据传送指令(3条) 算术运算指令(15条) 逻辑运算指令(19条) 控制和转移指令(11条) 位运算指令(4条) 读表指令(2条) 其它指令(9条)
数据传送指令
数据传送指令是应用最频繁的指令 助记符为MOV,其汇编语言指令格式为 MOV [目的字节],[源字节] 指令功能是将源字节的内容传送到目的 字节,源字节的内容不变。 这类指令不影响标志位。
…
…
带借位的减法指令
SBC A,[m]
指令说明:
RAM ALU Shifter
ACC+[m]+C
STATUS
ACC
影响标志:OV,Z,AC,C
SBCM A,[m]
C单片机指令集大全

格式功能简述字节数周期一、数据传送类指令MOVA,Rn寄存器送累加器11MOVRn,A累加器送寄存器11MOVA,@Ri内部RAM单元送累加器11MOV@Ri,A累加器送内部RAM单元11MOVA,#data立即数送累加器21MOVA,direct直接寻址单元送累加器21MOVdirect,A累加器送直接寻址单元21MOVRn,#data立即数送寄存器21MOVdirect,#data立即数送直接寻址单元32MOV@Ri,#data立即数送内部RAM单元21MOVdirect,Rn寄存器送直接寻址单元22MOVRn,direct直接寻址单元送寄存器22MOVdirect,@Ri内部RAM单元送直接寻址单元22MOV@Ri,direct直接寻址单元送内部RAM单元22MOVdirect2,direct1直接寻址单元送直接寻址单元32 MOVDPTR,#data1616位立即数送数据指针32MOVXA,@Ri外部RAM单元送累加器(8位地址)12MOVX@Ri,A累加器送外部RAM单元(8位地址)12MOVXA,@DPTR外部RAM单元送累加器(16位地址)12MOVX@DPTR,A累加器送外部RAM单元(16位地址)12MOVCA,@A+DPTR查表数据送累加器(DPTR为基址)12 MOVCA,@A+PC查表数据送累加器(PC为基址)12 XCHA,Rn累加器与寄存器交换11XCHA,@Ri累加器与内部RAM单元交换11 XCHDA,direct累加器与直接寻址单元交换21 XCHDA,@Ri累加器与内部RAM单元低4位交换11 SWAPA累加器高4位与低4位交换11POPdirect栈顶弹出指令直接寻址单元22 PUSHdirect直接寻址单元压入栈顶22二、算术运算类指令ADDA,Rn累加器加寄存器11ADDA,@Ri累加器加内部RAM单元11ADDA,direct累加器加直接寻址单元21ADDA,#data累加器加立即数21ADDCA,Rn累加器加寄存器和进位标志11ADDCA,@Ri累加器加内部RAM单元和进位标志11 ADDCA,#data累加器加立即数和进位标志21 ADDCA,direct累加器加直接寻址单元和进位标志21 INCA累加器加111INCRn寄存器加111INCdirect直接寻址单元加121INC@Ri内部RAM单元加111INCDPTR数据指针加112DAA十进制调整11SUBBA,Rn累加器减寄存器和进位标志11SUBBA,@Ri累加器减内部RAM单元和进位标志11 SUBBA,#data累加器减立即数和进位标志21 SUBBA,direct累加器减直接寻址单元和进位标志21 DECA累加器减111DECRn寄存器减111DEC@Ri内部RAM单元减111DECdirect直接寻址单元减121MULAB累加器乘寄存器B14DIVAB累加器除以寄存器B14三、逻辑运算类指令ANLA,Rn累加器与寄存器11ANLA,@Ri累加器与内部RAM单元11ANLA,#data累加器与立即数21ANLA,direct累加器与直接寻址单元21 ANLdirect,A直接寻址单元与累加器21 ANLdirect,#data直接寻址单元与立即数31 ORLA,Rn累加器或寄存器11ORLA,@Ri累加器或内部RAM单元11ORLA,#data累加器或立即数21ORLA,direct累加器或直接寻址单元21 ORLdirect,A直接寻址单元或累加器21ORLdirect,#data直接寻址单元或立即数31 XRLA,Rn累加器异或寄存器11XRLA,@Ri累加器异或内部RAM单元11 XRLA,#data累加器异或立即数21XRLA,direct累加器异或直接寻址单元21 XRLdirect,A直接寻址单元异或累加器21 XRLdirect,#data直接寻址单元异或立即数32 RLA累加器左循环移位11RLCA累加器连进位标志左循环移位11RRA累加器右循环移位11RRCA累加器连进位标志右循环移位11CPLA累加器取反11CLRA累加器清零11四、控制转移类指令类ACCALLaddr112KB范围内绝对调用22 AJMPaddr112KB范围内绝对转移22 LCALLaddr162KB范围内长调用32LJMPaddr162KB范围内长转移32SJMPrel相对短转移22JMP@A+DPTR相对长转移12RET子程序返回12RET1中断返回12JZrel累加器为零转移22JNZrel累加器非零转移22CJNEA,#data,rel累加器与立即数不等转移32 CJNEA,direct,rel累加器与直接寻址单元不等转移32 CJNERn,#data,rel寄存器与立即数不等转移32CJNE@Ri,#data,relRAM单元与立即数不等转移32 DJNZRn,rel寄存器减1不为零转移22DJNZdirect,rel直接寻址单元减1不为零转移32 NOP空操作11五、布尔操作类指令MOVC,bit直接寻址位送C21MOVbit,CC送直接寻址位21CLRCC清零11CLRbit直接寻址位清零21CPLCC取反11CPLbit直接寻址位取反21SETBCC置位11SETBbit直接寻址位置位21ANLC,bitC逻辑与直接寻址位22ANLC,/bitC逻辑与直接寻址位的反22ORLC,bitC逻辑或直接寻址位22ORLC,/bitC逻辑或直接寻址位的反22JCrelC为1转移22JNCrelC为零转移22JBbit,rel直接寻址位为1转移32JNBbit,rel直接寻址为0转移1、D1~D8八个彩灯按规定顺序依次点亮(间隔1秒),最后全亮;2、按规定顺序依次熄灭(间隔1秒),最后全灭;3、八个灯同时点亮,保持1秒;4、八个灯同时熄灭,保持0.5秒;再将第3、4步重复4遍,最后整个程序再重复N遍。
03.8 第三章 - 单片机指令系统(逻辑运算指令ANL、ORL、XRL、CPL、RL、RR、RRC、RLC)

0000 1001
0
9
09:42
单片机技术
6
3.8.1 逻辑“与”运算指令(ANL)
❖ 练习 ▪ 已知(A)=6EH,(R0)=9BH,执行ANL A,R0后 ?
0110 1110
∩ 1001 1010
0000 1010
0
A
09:42
单片机技术
7
3.8.1 逻辑“与”运算指令(ANL)
第三章:单片机指令系统
3.8 逻辑运算类指令
09:42
单片机技术
1
第三章:MSC-51 单片机指令系统
3.8 - 逻辑运算类指令
☺ 3.8.1 逻辑“与”运算指令 ☺ 3.8.2 逻辑“或”运算指令 ☺ 3.8.3 逻辑“异或”运算指令 ☺ 3.8.4 累加器A清0和取反 ☺ 3.8.5 “左移”循环指令(RL RLC) ☺ 3.8.6 “右移”循环指令(RR RRC)
∪ 1000 1001
1101 1111
D
F
09:42
单片机技术
12
3.8.2 逻辑“或”运算指令(ORL)
❖ 2.高考考点(ORL)
▪ 规则:有1出1,全0出0(按位) ▪ 功能:置1操作 ▪ 方法:某一位要置1则该位写1,其余不变位写0
09:42
单片机技术
13
3.8.2 逻辑“或”运算指令(ORL)
09:42
单片机技术
10
3.8.2 逻辑“或”运算指令(ORL)
❖ 1.“或” 逻辑指令(ORL)
▪ 指令格式:
ORL A ,
#data ;A ←(A)∪ data ,立即寻址 direct ;A ←(A)∪ direct ,直接寻址 Rn ;A ←(A)∪ (Rn) ,寄存器寻址 @Ri ;A ←(A)∪ (@Ri),寄间寻址
51单片机汇编指令集(附记忆方法)

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。
单片机指令的位操作和逻辑运算

单片机指令的位操作和逻辑运算单片机是在嵌入式系统中广泛应用的一种微处理器,它具有尺寸小、功耗低、集成度高等特点,常用于控制和管理各种电子设备。
在单片机的编程中,位操作和逻辑运算是非常重要的概念和技巧。
一、位操作位操作是指对单片机中的位进行操作,包括位的读取、置位、清零、取反等操作。
单片机中的数据通常以位的形式存储,对位的操作可以很方便地实现对数据的控制和处理。
1. 位的读取在单片机中,可以通过使用逻辑与运算符来读取某一位的值。
逻辑与运算符可以用来判断某一位是否为1或者0,从而进行相应的逻辑处理。
例如,在使用单片机控制LED灯时,可以通过读取一个特定位的值来确定LED灯的状态,进而进行灯的亮灭的控制。
2. 位的置位位的置位意味着将某一位设置为1。
在单片机编程中,可以使用逻辑或运算符和位运算符来实现位的置位操作。
通过位的置位操作,可以实现对某一位的控制。
例如,在使用单片机控制电机时,可以通过位置位操作来控制电机的启动。
3. 位的清零位的清零意味着将某一位设置为0。
与位的置位类似,位的清零操作同样可以使用逻辑与运算符和位运算符来实现。
通过位的清零操作,可以实现对某一位的复位。
例如,在单片机控制温度传感器时,可以通过清零操作来复位传感器的状态。
4. 位的取反位的取反意味着将某一位的值从1变为0,或者从0变为1。
在单片机中,可以使用位运算符来实现位的取反操作。
通过位的取反操作,可以实现对某一位状态的改变。
例如,在单片机输入输出控制中,可以通过取反操作来改变IO口的输出状态。
二、逻辑运算逻辑运算是指对单片机中的位进行逻辑判断和运算,包括逻辑与、逻辑或、逻辑非等操作。
逻辑运算可以对多位数据进行综合处理,从而实现各种逻辑功能。
1. 逻辑与运算逻辑与运算是指对两个数据进行逻辑与操作,结果为1的条件是两个数据都为1,否则结果为0。
在单片机编程中,可以使用逻辑与运算符来实现逻辑与运算。
逻辑与运算在逻辑判断和逻辑运算中广泛应用,常用于状态判断和位操作等方面。
单片机指令的数学运算与数据处理

单片机指令的数学运算与数据处理在单片机的开发过程中,数学运算与数据处理是不可或缺的重要部分。
单片机通过指令对数据进行处理和运算,以实现各种功能。
本文将讨论单片机指令的数学运算与数据处理,并探讨相关的应用。
一、数值运算指令单片机可以执行各种数值运算,包括加法、减法、乘法、除法等。
这些数值运算指令可以直接对数据进行操作,以实现各种复杂的计算需求。
1. 加法指令加法指令可以将两个操作数相加,并将结果存储到指定的目标寄存器或内存位置中。
例如,ADD指令可以将寄存器A和寄存器B中的数据相加,并将结果存储到寄存器C中。
2. 减法指令减法指令可以将一个操作数减去另一个操作数,并将结果存储到指定的目标寄存器或内存位置中。
例如,SUB指令可以将寄存器A中的数据减去寄存器B中的数据,并将结果存储到寄存器C中。
3. 乘法指令乘法指令可以将两个操作数相乘,并将结果存储到指定的目标寄存器或内存位置中。
例如,MUL指令可以将寄存器A和寄存器B中的数据相乘,并将结果存储到寄存器C中。
4. 除法指令除法指令可以将一个操作数除以另一个操作数,并将商和余数存储到指定的目标寄存器或内存位置中。
例如,DIV指令可以将寄存器A 中的数据除以寄存器B中的数据,并将商存储到寄存器C中,余数存储到寄存器D中。
二、逻辑运算指令除了数值运算,单片机还可以执行逻辑运算,包括与、或、非、异或等。
这些逻辑运算指令可以对数据进行位级操作,以实现各种逻辑运算需求。
1. 与运算指令与运算指令可以对两个操作数进行逐位与运算,并将结果存储到指定的目标寄存器或内存位置中。
例如,AND指令可以将寄存器A和寄存器B中的数据进行逐位与运算,并将结果存储到寄存器C中。
2. 或运算指令或运算指令可以对两个操作数进行逐位或运算,并将结果存储到指定的目标寄存器或内存位置中。
例如,OR指令可以将寄存器A和寄存器B中的数据进行逐位或运算,并将结果存储到寄存器C中。
3. 非运算指令非运算指令可以对一个操作数进行逐位取反,并将结果存储到指定的目标寄存器或内存位置中。
单片机指令表汇总

51单片机指令表汇总51单片机是一种广泛应用的微控制器,其指令集是进行编程的基础。
下面将51单片机的指令表进行汇总,以帮助初学者更好地理解其指令集。
一、数据传输指令1、MOV指令:将源操作数的内容传送到目标操作数。
2、XCH指令:将两个操作数的内容互换。
3、MOVC指令:从外部存储器将数据传送到目标操作数。
4、MOVX指令:将外部存储器中的数据传送到目标操作数。
5、PUSH指令:将数据压入堆栈。
6、POP指令:从堆栈中弹出数据。
二、算术运算指令1、ADD指令:将两个操作数相加,并将结果存放在目标操作数中。
2、SUB指令:从目标操作数中减去源操作数,并将结果存放在目标操作数中。
3、MUL指令:将两个操作数相乘,并将结果存放在目标操作数中。
4、DIV指令:将目标操作数除以源操作数,并将结果存放在目标操作数中。
5、ANL指令:对目标操作数和源操作数进行按位与运算,并将结果存放在目标操作数中。
6、ORL指令:对目标操作数和源操作数进行按位或运算,并将结果存放在目标操作数中。
7、XRL指令:对目标操作数和源操作数进行按位异或运算,并将结果存放在目标操作数中。
8、CPL指令:对目标操作数进行按位取反运算,并将结果存放在目标操作数中。
9、INC指令:将目标操作数加1。
10、DEC指令:将目标操作数减1。
11、ASR指令:将目标操作数右移n位,最高位用符号位补齐。
12、LSR指令:将目标操作数右移n位,最低位用0补齐。
13、ROL指令:将目标操作数循环左移n位,最高位移入最低位。
14、ROR指令:将目标操作数循环右移n位,最低位移入最高位。
单片机汇编指令表一、概述在单片机的世界里,汇编语言扮演着举足轻重的角色。
它是一种低级语言,能够直接与硬件进行交互,提供高效的代码执行效率。
下面,我们将详细列出一些常见的单片机汇编指令,以及它们的功能。
二、指令表1、MOV指令:用于将数据从一个寄存器移动到另一个寄存器。
例如,MOV R1, R2将把 R2的内容移动到 R1中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般形式:
ANL 与
ORL 第一操作数,第二操作数
XRL
或
异或
功能:第一操作数和第二操作数进行相应的逻辑运算,结 果在第一操作数指出的地址。
源及目的见 P50—P51页。 例
7
例1: MOV A,#46H MOV 40H, #59H
ANL A,#37H
ORL 40H,A
ORL A, 40H
XRL A,#55H
★异或运算:
符号
A
B
Z
记作 Z = A + B 输入信号相同则输出为0,输入信号相异则输出为1。 ★非运算:求反 符号 A Z
记作 Z = A
1
一、 对A累加器进行的逻辑操作:
1. CPL A 2. CLR A 3.移位指令: (1). RR A 7 (2).RRC A 0 ;A求反 ;A清0
C
7
ORL P1, A
;拼凑字节
11
例5.
用异或指令对RAM单元或寄存器某些位求反。
方法是:欲取反的位与“1”相异或 例如:XRL P1 ,#00110011B ;P1口的D 0,D1 ,D 4,D 5取反。 例6.用异或指令判断二数是否相等。
例如: MOV A, 30H
XRL A, 31H ;若运行结果(A)=0 则(30H)=(31H)
MOV C, 21H
ANL C, 72H CLR C
;( C )=1
;( C) =1 ;( C) =0 ;(24H位)求反为1,( C )=1 ;(71H位)=0,与结果( C )=0 ;( C )=1 ;( C )=0 ;(21H位)=1,或结果( C )=1
ORL C, 24H
ANL C, 71H SETB C CPL C ORL C, 21H
01000110 ∧ 00110111 0 0 0 0 0 1 1 0 A=06H ∨ 01011001 0 1 0 1 1 1 1 1 40H=5F ∨ 00000110 0 1 0 1 1 1 1 1 A=5FH 01010101 0 0 0 0 1 0 1 0 A=0AH
8
注:逻辑运算结果均在第一操作数中(目的), 第二操作数内容不变。
CLR 72H
;(72H位)=0,(2EH)=01H
14
10
例3
用“或”指令置位任何RAM单元或寄存器的某些位,方法是将需 置1的位和“1”相或。
例如, ORL P1 ,#00110011B;P1口的D0,D1,D4,D5位置1
例4
拼凑字节。例如要求将A内容的低2位信息送入P1口的低2位,P1口 原高6位不变。 ANL A,#00000011B ANL P1,#11111100B ;切取A中低2位 ;屏蔽P1口低2位
左移n次 等于乘2n
同理将其右移一次等于除2的运算,
右移n次等于除2n。
程序如下:
5
MOV A,30H
;x
RL A
RL A MOV 31H, A MOV A,30H CLR C
;2X
;4X
;X
RRC A
CLR C RRC A MOV 32H ,A
;X/2
;X/4
6
二、
包含双操作数的逻辑运算指令:
C A , #0E2H
;C=0 ;1 1 1 0 0 0 1 0 ;1 1 0 0 0 1 0 1 ;1 0 0 0 1 0 1 0 ;0 1 0 0 0 1 0 1 C=1 E2H
RRC A
SWAP A
;1 0 1 0 0 0 1 0
;0 0 1 0 1 0 1 0
C=1
4
例:已知 30H单元的内容为 X,且 X为无符号数,求 4X送 入31H单元存放,求X/4 的整数部份送入 32H单元存放, (0≤X<63) 讨论:将一个二进制数左移一次等于乘2的运算,
9
此类逻辑运算指令用途很广,举例:
例2 用“与”掩码的方法切取数据中需要的部分 MOV A, #0F6H ① ANL A,# 0FH ② ANL A,#7FH ;设A中为有符号数 ;屏蔽高4位 (A)=06H ;屏蔽符号位 (A)=76H
③ ANL A,#80H
;切取符号位 (A)=80H
0FH,7FH,80H,称为掩码,使用不同的掩码可屏蔽掉不同的部 份,留下有用的信息。
12
三、 位逻辑操作指令:
1. ORL
C , BIT ;C和某位地址的内容相 ANL
或
与
2. ORL
或
C , BIT
ANL
;C和某位地址内容的反码相
与
3.
CLR CPL C (BIT) ;C (BIT)
清零 求反
SETB
置1
13
位逻辑指令举例
MOV 24H, #02H MOV 2EH, #05H ;(24H) = 02H,(21H位)=1 (2EH)=05H,72H位70H位=1
0
2
(3).RL A
7 A C 7
0 0
表示移位操作。
第二个字母
第三个字母
表示移位方向,L 向左;R 向右。
表示是否通过C。 为C表示连同C共9位数一起移位 无第三字母表示与C无关。
4.SWAP A
;A的内容高低半字节相交换
3
例:CLR MOV RL A RLC A RR A