单片机33逻辑运算指令

合集下载

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

高职高专单片机原理及应用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讲逻辑运算指令及移位、转移指令

单片机原理及应用第6讲逻辑运算指令及移位、转移指令
只有它影响psw其余四个指影响incrnincdirectincriincdptr会影响psw寄存器中的标志位decrndecdirectdecri只有第一条指令影响psw十进制调整指令da影响psw中的标志位乘法指令mulab影响psw中的标志位ov1则结果超过了255除法指令divab影响psw中的标志位ov1则除数为零除法无意义31h单元编出一完整程序把两个数乘积的低位放入32h单元高放入33h单元org0100hmovr030hmovar0incr0movbr0mulabincr0movr0aincr0movr0bend逻辑运算指令anldirectanldirectorldirectorldirectxrldirectxrldirectdata内部数据存储单元30h有一个数试编程保留其低的低四位送入p1低四位p1口高四位不变外部ram30h中有一个数试编程把它的低四位取反内部ram30h中有一负数的补码循环移位指令rla7a0a7a0a7a0cycya7a0后两条指令影响标志位cy
• (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单片机指令系统

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。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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
相关文档
最新文档