转移指令及位操作指令

合集下载

位操作指令

位操作指令

00010000 (PC) + 3 direct (PC) + 3 + rel rel address 0
2
位条件转移指令
JC rel
Jump if Carry is Set PC = PC + 2
N
JNC rel
Jump if Carry not Set PC = PC + 2 下条指令 C = 0? Y PC = PC + rel N 下条指令
P1.3 = 1,P1.5 = 0 , C=1 C = 1,则P1.5 = 1 , 原地跳转
位传送指令
指令格式
MOV bit,C MOV C,bit
指令功能
(CY) (bit) (bit) (CY)
机器码
10010010, direct 10100010, direct
周期
2 1
片内RAM、SFR中位地址。 、 片内 中 地址。
指令,可用逻辑与、 无位异或指令,可用逻辑与、或及取反指令予以实现


位传送指令 位状态操作指令 位逻辑运算指令 位条件转移指令
位条件转移指令
指令格式 判断 累加 器C
JC rel JNC rel JB bit,rel
指令功能
若CY = 0,则PC 若CY = 1,则PC 若CY = 0,则PC 若CY = 1,则PC 若(bit) = 0,则PC 若(bit) = 1,则PC 若(bit) = 0,则PC 若(bit) = 1,则PC (PC) + 2 (PC) + 2 +rel (PC) + 2 +rel (PC) + 2 (PC) + 3 (PC) + 3 + rel (PC) + 3 + rel (PC) + 3

位操作指令

位操作指令

位操作指令
位操作指令
 MCS-51单片机的特色之一是具有很强的位处理功能。

位操作指令又称为布尔指令,其功能是对内部RAM中可进行位操作的区域进行位操作。

 在进行位操作时,位累加器C即进位标志Cy,位地址是片内RAM字节地址20H~2FH单元中连续的128个位(位地址00H~7FH)和部分功能寄存器。

凡SFR中字符等地址能被8整除的特殊功能寄存器都具有可寻址的位地址,其中ACC(位地址E0H~E7H),B(位地址F0H~F7H)和片内RAM 中128个位都可作软件标志或存储位变量。

 1. 位数据传送类指令(2条)
 MOV C , bit ;(bit) →C,寻址位的状态送入C
 MOV bit , C ;C→(bit),C的状态送入位地址中
 2. 位修正指令(6条)
 CLR C ;0→C,清0累加器
 CLR bit ;0→(bit);清0寻址位。

汇编语言程序设计基本命令

汇编语言程序设计基本命令

汇编语言程序设计基本命令汇编语言是一种底层的编程语言,直接操作计算机硬件,其指令由一系列的机器码组成。

在汇编语言程序设计中,我们需要了解一些基本的命令,包括数据传送指令、算术运算指令、控制转移指令等,下面就对这些命令做一详细的介绍。

1.数据传送指令在汇编语言中,数据传送指令用来将数据从一个位置复制到另一个位置,常用的数据传送指令有MOV、LEA和XCHG。

-MOV指令:将源操作数的值复制给目标操作数,格式为MOV目标操作数,源操作数。

-LEA指令:用来将有效地址(即内存中的地址)传送给寄存器,格式为LEA目标操作数,源操作数。

-XCHG指令:交换两个操作数的值,格式为XCHG目标操作数,源操作数。

2.算术运算指令在汇编语言中,我们可以使用一系列算术运算指令来对数据进行运算和处理,常见的算术运算指令有ADD、SUB、MUL和DIV等。

-ADD指令:用于进行加法运算,格式为ADD目标操作数,源操作数。

-SUB指令:用于进行减法运算,格式为SUB目标操作数,源操作数。

-MUL指令:用于进行乘法运算,格式为MUL目标操作数,源操作数。

-DIV指令:用于进行除法运算,格式为DIV目标操作数,源操作数。

控制转移指令用于改变程序的执行流程,常见的控制转移指令有JMP、JZ、JE、JNE等。

-JMP指令:用于无条件地跳转到目标地址继续执行,格式为JMP目标地址。

-JZ指令:用于当结果为零时跳转到目标地址继续执行,格式为JZ目标地址。

-JE指令:用于当结果相等时跳转到目标地址继续执行,格式为JE目标地址。

-JNE指令:用于当结果不相等时跳转到目标地址继续执行,格式为JNE目标地址。

4.逻辑运算指令逻辑运算指令用于对数据进行逻辑运算,常见的逻辑运算指令有AND、OR、XOR和NOT等。

-AND指令:对两个操作数的对应位进行与运算,格式为AND目标操作数,源操作数。

-OR指令:对两个操作数的对应位进行或运算,格式为OR目标操作数,源操作数。

单片机原理及应用第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的补码

微机原理常用命令

微机原理常用命令

一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

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(封锁)。

汇编语言2-4逻辑移位指令

汇编语言2-4逻辑移位指令
第 2章
8086指令系统
一、数据传送类; 二、算术运算类; 三、位操作指令(逻辑运算和移位类); 四、串操作类; 五、控制转移类; 六、处理器控制类;
第 2章
8086指令系统
位操作指令,它们都是按位进行操作的包含逻辑运
算类指令和移位指令。 位操作类指令以二进制位为基本单位进行数据的操 作;这是一类常用的指令,都应该特别掌握 注意这些指令对标志位的影响 要求:全面而准确地理解每条指令的功能和应用 重点掌握以下指令:
第 2章
2、逻辑或指令OR
功能:对两个操作数执行按位逻辑或运 算,结果送到目的操作数
OR reg,imm/reg/mem ;reg←reg∨imm/reg/mem OR mem,imm/reg ;mem←mem∨imm/reg
说明:(1)按位逻辑或运算; (2)OR指令对操作数的限制和对标志位的影响; 思考: (1)某一个操作数自己和自己相逻辑或? 置某些位 (2)OR指令主要用在什么场合?
RCR reg/mem,1/CL
;带进位循环左移
;带进位循环右移
演示
第 2章
说明:循环移位指令
对操作数:同移位指令。 对标志的影响:
(1)按照指令功能设置进位标志CF (2)不影响SF、ZF、PF、AF (3)对于OF,同移位指令。如果进行一位移动, 则按照操作数的最高符号位是否改变,相应设置 溢出标志OF:如果移位前的操作数最高位与移位 后操作数的最高位不同(有变化),则OF = 1; 否则OF = 0。当移位次数大于1时,OF不确定
第 2章
例:移位指令
mov cl,4 mov al,0f0h ;al=f0h shl al,1 ;al=e0h ;CF=1,SF=1、ZF=0、PF=0,OF=0 shr al,1 ;al=70h ;CF=0,SF=0、ZF=0、PF=0、OF=1 sar al,1 ;al=38h ;CF=0,SF=0、ZF=0、PF=0、OF=0 sar al,cl ;al=03h ;CF=1,SF=0、ZF=0、PF=1 、OF=0

汇编语言指令汇总

汇编语言指令汇总

汇编语言指令汇总汇编语言是一种底层编程语言,用于编写计算机程序。

在汇编语言中,指令是执行特定操作的基本单元。

以下是一些常见的汇编语言指令的汇总:1.数据传输指令:-MOV:将源操作数的值复制到目的操作数。

-PUSH:将数据压入栈中。

-POP:从栈中弹出数据。

-LEA:将源操作数的有效地址加载到目的操作数中。

2.算术和逻辑指令:-ADD:将两个操作数相加,结果存储在目的操作数中。

-SUB:将第二个操作数从第一个操作数中减去,结果存储在目的操作数中。

-MUL:将两个操作数相乘,结果存储在目的操作数中。

-DIV:将第一个操作数除以第二个操作数,商存储在目的操作数中。

3.分支和循环指令:-JMP:无条件跳转到指定的地址。

-CMP:比较两个操作数的值。

-JZ/JNZ:当比较结果为零/非零时,跳转到指定的地址。

-JE/JNE:当比较结果为相等/不相等时,跳转到指定的地址。

-JG/JGE/JL/JLE:当比较结果为大于/大于等于/小于/小于等于时,跳转到指定的地址。

-LOOP:循环指令,根据计数寄存器的值重复执行指定的代码块。

4.中断指令:-INT:引发中断,将程序控制权转移到中断服务程序。

-IRET:从中断服务程序返回到调用程序。

5.位操作指令:-AND/OR/XOR:按位与/或/异或操作。

-NOT:按位取反操作。

-SHL/SHR:逻辑左移/逻辑右移操作。

6.I/O指令:-IN:从输入端口读取数据。

-OUT:向输出端口写入数据。

7.标志位操作指令:-CLC:清除进位标志位。

-STC:设置进位标志位。

-CLI:禁用中断。

-STI:启用中断。

8.字符串指令:-MOVS:将一个字符串从源地址移动到目的地址。

-CMPS:比较两个字符串的内容。

-LODS:从源地址加载一个字符或一个字符串。

-STOS:存储一个字符或一个字符串到目的地址。

9.其他指令:-NOP:空操作指令。

-HLT:停止运行指令。

以上只是一些常见的汇编语言指令,汇编语言的指令集因计算机体系结构而异。

03.9 第三章 - 单片机指令系统(位操作指令MOV、SETB、CLR、CPL、ANL、ORL)

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.5 控制转移和位操作指令(8)

3.5 控制转移和位操作指令(8)

2、条件转移指令 条件转移就是程序转移是有条件的。执行条件转移指 令时,如指令中规定的条件满足,则进行程序转移,否则 程序顺序执行。条件转移有如下指令: (1)累加器判零转移指令:JZ rel和 JNZ rel指令 这两条指令都是二字节指令,是有条件的相对转移指令, 以rel为偏移量。 (2)数值比较条件转移指令 数值比较条件转移指令把两个操作数进行比较,比较 结果作为条件来控制程序转移。共有四条指令: CJNE A,#data,rel;累加器内容与立即数不等转移 CJNE A,direct,rn ,#data,rel ;寄存器内容与立即数不等转移 CJNE @Ri,#data,rel ;内部RAM前128单元内容与立 即数不等转移。
汇编语言程序中,为等待中断或程序结束,常使程 序“原地踏步” ,对此可使用SJMP指令完成:HERE: SJMP HERE 或 HERE:SJMP $指令机器码为 80FEH。在汇编语言中,以“$”代表PC的当前值。 执行指令:L00P:SJMP L00P1,如果L00P的标 号值为0100H(即SJMP这条指令的机器码存于0100H 和0101H两个单元之中),标号L00P1值为0123H,即 跳转的目标地址为0123H,则指令的第二个字节(相对 偏移量)应为:rel=0123H一0102H=21H 。 (4)基址加变址寻址转移(变址转移)指令: JMP @A+DPTR ; (PC)←(A)+(DPTR) 这是一条一字节转移指令,转移的目的地址=(A) +(DPTR)。指令以DPTR内容为基址,而以A的内容 作变址。只要把DPTR的值固定,而给A赋以不同的值, 即可实现程序的多分支转移。键盘译码程序就是本指令 的一个典型应用。 (如P113例3.30)
2、位置位、复位指令 SETB C ; (Cy)←l SETB bit ; (bit)←1 CLR C ; (Cy)←0 CLR bit ; (bit)←0 3、位运算指令 ANL C,bit ; (Cy)←(Cy)∧(bit) ANL C,/ bit ; (Cy)←(Cy)∧/( bit ) ORL C,bit ; (Cy)←(Cy)∨(bit) ORL C,/ bit ; (Cy)←(Cy)∨/( bit ) CPL C ; (Cy)←/(Cy) CPL bit ; (bit)←/(bit)(P120例3.37) 4、位控制转移指令 位控制转移指令就是以位的状态作为实现程序转移的 判断条件。

汇编指令(常用指令)

汇编指令(常用指令)

汇编指令百科名片汇编指令是汇编语言中使用的一些操作符(如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(封锁)。

位操作指令

位操作指令
指令格式为
JB JNB
bit, rel bit, rel
位控制转移指令
按位条件转移并清零指令
这条指令将判断转移与修改结合在一起,实现“测试并清除” 的原子操作(不可分割的操作)。指令格式为
JBC
bit, rel
单片机原理与应用
只能在位操作数和位累加器C之间进行。根据传送方向不同, 有两条
MOV MOV
C, bit bit, C
1.2 位修改指令
位置位指令 将位累加器C或某一指定位置为1,有两条
SETB
C
SETB
bit
位修改指令
位清零指令 这种指令的功能是将位累加器C或某一指定位置为0,有两条
CLR
单片机原理与应用
位作指令
位操作指令的操作数不是字节,而是字节中的某一位,又称为 布尔操作指令
位操作指令的操作对象是内部RAM中的位寻址区(字节地址 20H~2FH)和特殊功能寄存器中的可以位寻址的寄存器。位操 作指令共17条,分别是位传送、位修改、位运算和位控制转移 4种
1.1 位传送指令
C
CLR
bit
位修改指令
位取反指令 这种指令的功能是将位累加器C或某一指定位取反,有两条
CPL
C
CPL
bit
1.3 位运算指令
位与指令 这种指令的功能是将位累加器C的值与指定位的内容或其反码
进行位与操作,结果存入C。有两条
ANL ANL
C, bit C, /bit
位运算指令
位或指令
这种指令的功能是将位累加器C的值与指定位的内容或其反码 进行位或操作,结果存入C。有两条
ORL ORL
C, bit C, /bit
1.4 位控制转移指令

2.3.5控制转移指令

2.3.5控制转移指令

例:某温度控制系 统,采集的温度值 (Ta)放在累加器A 中,在内部RAM54H单 元存放温度下限值 (T54),在55H单元 存放温度上限值 (T55)。若Ta>T55, 程序转向JW(降温 处理程序);若 Ta<T54,则程序转向 SW(升温处理程序); 若T55≥Ta≥T54,则 程序转向FH(返回 主程序)。
在指令中提供了子程序入口地址的低11位,这 11位地址的a7~a0在指令的第二字节中,a10~a8 则占据第一字节的高3位。 为了实现子程序调用,该指令共完成两项操作: 断点保护 断点保护是通过自动方式的堆栈操作来实现的, 即把PC值自动送堆栈保存起来,待子程序返回时再送 回该PC值。 构造目的地址 目的地址的构造是在PC当前值的基础上以指令提 供的11位地址取代PC的低11位,而PC的高5位不变。
二、条件转移指令
条件所谓条件转移就是指程序转移是有条件的。 执行条件转移指令时,如指令中规定的条件满足, 则进行程序转移,否则程序顺序执行。 1、累加器判零转移指令
JZ rel ; 若(A)=0,则PC←(PC)+2+rel
若(A)≠0,则PC←(PC) +2 JNZ rel ; 若(A)≠0,则PC←(PC)+2+rel 若(A)=0,则PC←(PC)+2 这两条指令都是二字节指令,是有条件的相对转
(2) 长调用指令
LCALL addr16
给 出。指令执行后,断点进栈保存,调用addr16地址 的子程序。因此本指令的操作内容可表出为: PC←(PC)+3 SP←(SP)+1,(SP)←(PC)7-0 SP←(SP)+1,(SP)←(PC)15-8 PC15~0←addr16 本指令是三字节指令,调用地址在指令中直接

微机原理与应用:第十四讲 控制转移指令

微机原理与应用:第十四讲 控制转移指令
指令SJMP rel,跳转范围是以该指令当前PC值为中 心下跳127个单元,上跳128个单元;
JMP @A+DPTR的跳转范围是以DPTR内容为起始点,向 下跳转255个单元。
2K页内跳转指令AJMP addr11,跳转范围是存储器 某一页面内。
13
转移指令的比较续
FFFFH FFFEH

a7…a0 a15…a8
解: 由于指令执行前(TI)=1,则该指令条件满足, 转移地址=8053H+3+93H=8056H+FF93H=7FE9H, 指令执行后(PC)=7FE9H,
根据该指令的功能,当该指令发生转移时,TI清零,即TI=0。
22
二、比较不相等转移指令
(1)CJNE
A,
direct, rel
指令功能:如果(A)≠(direct),条件满足转移。
rel 是带符号补码的偏移量,它的值可正可负。
5
相对转移指令续
❖ 从以上转移地址形成的公式可知,转移地址是相对于当 前PC值作相对偏移。
❖ 如果偏移量为正,程序就往下跳;如果偏移量为负,程 序就往上跳
6
例3-45
若执行的相对转移指令的地址为8123H,其偏移量 为04H,请问该指令执行的结果,即转移地址为多少?
这组转移指令有一个共性,就是其转移地址的形成 都是按相对寻址的方式来形成的。
本组指令有测试条件符合转移指令、比较不相等转 移指令和减1不为零转移指令。
17
一、测试条件符合转移指令
(1)累加器ACC内容是否为零条件转移指令
JZ 转移地址; 01100000
rel
JNZ 转移地址; 01110000
rel
解: LOOP: NEXT: STOP:

控制转移指令

控制转移指令

2.条件转移指令 条件转移指令 A判零转移指令(2字节) 判零转移指令( 字节 字节) 判零转移指令 • JZ rel (A)=0,转移;(PC)+2+rel PC ) ,转移; ) (A)≠0,则顺序执行 ) ,则顺序执行;(PC)+2 PC 。 • JNZ rel (A)≠0,转移;(PC)+2+rel PC ) ,转移; ) (A)=0,则顺序执行 ) ,则顺序执行;(PC)+2 PC
变址寻址转移指令: 字节) 变址寻址转移指令: (1字节) 字节 JMP @A+DPTR 根据A中数值的不同 中数值的不同,转向不同的子 根据 中数值的不同 转向不同的子 程序入口. 程序入口
(A)+(DPTR) PC
的值( ),转向相应的处理 例:根据A的值(0~3),转向相应的处理 根据 的值 ), 程序。( 。(LJMP指令 字节) 指令3字节 程序。( 指令 字节) MOV R1,A , RL A ;(A) ;( )*2 ADD A,R1 ;(A) , ;( )*3 MOV DPTR,#TABLE , JMP @A+DPTR TABLE: LJMP LOOP0;转0处理程序 : ; 处理程序 LJMP LOOP1 ; 转1处理程序 处理程序 LJMP LOOP2 ;转2处理程序 处理程序 LJMP LOOP3 ;转3处理程序 处理程序
短转移指令: 字节) 短转移指令: (2字节) 字节 SJMP rel (PC)+2+rel (PC) rel: 8位带符号数补码 位带符号数补码 转移范围: 转移范围 -128(-80H)~+127(7FH)(256B) ( ) ( ) 当前地址(PC)=2000H 例:当前地址 当前地址 执行 SJMP 56H 结果:目标地址 目标地址(PC)=2058H 结果 目标地址

PLC常用指令(很全的)

PLC常用指令(很全的)

一、顺控指令1 触点指令00 LD 逻辑操作开始01 LDI 逻辑非操作开始02 AND 逻辑乘03 ANI 逻辑乘非04 OR 逻辑加05 ORI 逻辑加非2 连接指令06 ANB AND逻辑块与07 ORB OR逻辑块或08 MPS 存储操作结果09 MRD 从MPS读取操作结果10 MPP 从MPS读取操作结果并清除结果3 输出指令11 OUT 软元件输出12 SET 软元件置位13 RST 软元件复位14 PLS 在输入信号的上升沿15 PLF 在输入信号的下降沿16 CHK 软元件输出翻转4 移位指令17 SFT 元件移1位18 SFTP 元件移1位5 主控指令19 MC 主控开始20 MCR 主控复位6 结束指令21 FEND 结束主程序22 END 总的程序末尾,返回第0步7 其它指令23 STOP 停止24 NOP 空操作二基本指令1 比较指令16位数据比较25 LD= 当S1=S2, 接通,当S1≠S2, 断开26 AND=27 OR=28 LD<> 当S1≠S2, 接通,当S1=S2, 断开29 AND<>30 OR<>31 LD> 当S1>S2, 接通,当S1≤S2, 断开32 AND>33 OR>34 LD<= 当S1≤S2, 接通,当S1>S2, 断开35 AND<=36 OR<=37 LD< 当S1<S2, 接通,当S1≥S2, 断开38 AND<39 OR<40 LD>= 当S1≥S2, 接通,当S1<S2, 断开41 AND>=42 OR>=32位数据比较43 LDD= 当(S1+1,S1)=(S2+1,S2), 接通44 ANDD=45 ORD=46 LDD<> 当(S1+1,S1)≠(S2+1,S2),接通47 ANDD<>48 ORD<>49 LDD> 当(S1+1,S1)>(S2+1,S2), 接通50 ANDD>51 ORD>52 LDD<= 当(S1+1,S1)≤(S2+1,S2),接通53 ANDD<=54 ORD<=55 LDD< 当(S1+1,S1)<(S2+1,S2), 接通56 ANDD<57 ORD<58 LDD>= 当(S1+1,S1)≥(S2+1,S2),接通59 ANDD>=60 ORD>=2 算术运算指令二进制16位加/减61 + (D)+(S)→(D)62 +P63 + (S1)+(S2)→(D)64 +P65 - (D)-(S)→(D)66 -P67 - (S1)-(S2)→(D)68 -P二进制32位加/减69 D+ (D+1,D)+(S+1,S)→(D+1,D)70 D+P71 D+ (S1+1,S1)+(S2+1,S2)→(D+1,D)72 D+P73 D- (D+1,D)-(S+1,S)→(D+1,D)74 D-P75 D- (S1+1,S1)-(S2+1,S2)→(D+1,D)76 D-P 77 * (S1)×(S2)→(D+1,D)78 *P79 / (S1)/(S2)→商(D), 余数(D+1)80 /P81 D* (S1+1,S1)×(S2+1,S2)→(D+3,D+2,D+1,D)82 D*P83 D/ (S1+1,S1)/(S2+1,S2)→商(D+1,D),余数(D+3,D+2)84 D/P85 B+ (D)+(S)→(D)86 B+P87 B+ (S1)+(S2)→(D)88 B+P89 B- (D)-(S)→(D)90 B-P91 B- (S1)-(S2)→(D)92 B-P93 DB+ (D+1,D)+(S+1,S) →(D+1,D)94 DB+P95 DB+ (S1+1,S1)+(S2+1,S2)→(D+1,D)96 DB+P97 DB- (D+1,D)-(S+1,S)→(D+1,D)98 DB-P99 DB- (S1+1,S1)-(S2+1,S2)→(D+1,D)100 DB-P101 B* (S1)×(S2)→(D+1,D)102 B*P103 B/ (S1)/(S2)→商(D),余数(D+1)104 B/P105 DB* (S1+1,S1)×(S2+1,S2)→(D+3,D+2,D+1,D)106 DB*P107 DB/ (S1+1,S1)/(S2+1,S2)→商(D+1,D),余数(D+3,D+2)108 DB/P109 INC (D)+1→(D)110 INCP111 DINC (D+1,D)+1→(D+1,D)112 DINCP113 DEC (D)-1→(D)114 DECP115 DDEC (D+1,D)-1→(D+1,D)116 DDECP3 BCD—二进制转换117 BCD (S)→(D)BCD转换118 BCDP119 DBCD (S+1,S)→(D+1,D)120 DBCDP121 BIN (S)→(D)二进制转换122 BINP123 DBIN (S+1,S)→(D+1,D)124 DBINP4 数据传送指令125 MOV (S)→(D)126 MOVP127 DMOV (S+1,S)→(D+1,D)128 DMOVP129 CML (S)→(D)130 CMLP131 DCML (S+1,S)→(D+1,D)132 DCML133 DCMLP134 BMOV (S)→(D)n个135 BMOVP136 FMOV (S)→(D)n个137 FMOVP138 XCH (D1)←→(D2)139 XCHP140 DXCH (D1+1,D1)←→(D2+1,D2) 141 DXCHP5 程序分支指令142 CJ 条件满足,跳转到P**处143 SCJ 条件满足后紧接的扫描周期,跳转到P**处144 JMP 无条件跳转到P**处145 CALL 执行P**处子程序146 CALLP147 RET 从子程序返回148 EI 允许中断149 DI 禁止中断150 IRET 从中断程序返回151 SUB 执行n指定的程序152 SUBP6 程序切换指令153 CHG 在主副程序间切换7 刷新指令154 COM 执行通讯刷新155 EI 允许通讯刷新156 DI 禁止通讯刷新157 SEG 对应软元件的刷新,仅执行1个扫描周期,M9052 ON时有效三应用指令1 逻辑运算指令158 WAND (D) AND (S)→(D)159 WANDP160 WAND (S1) AND (S2)→(D)161 WANDP162 DAND (D+1,D) AND (S+1,S)→(D+1,D)163 DANDP164 WOR (D) OR (S)→(D)165 WORP166 WOR (S1) OR (S2)→(D)167 WORP168 DOR (D+1,D) OR (S+1,S)→(D+1,D)169 DORP170 WXOR (D) XOR (S)→(D)异或171 WXORP172 WXOR (S1) XOR (S2)→(D)173 WXORP174 DXOR (D+1,D) XOR (S+1,S)→(D+1,D)175 DXORP176 WXNR (D) XOR (S)→(D)177 WXNRP178 WXNR (S1) XOR (S2)→(D)179 WXNRP180 DXNR (D+1,D) XOR (S+1,S)→(D+1,D)181 DXNRP182 NEG 0-(D)→(D)补码183 NEGP2 旋转指令184 ROR n位右转185 RORP186 RCR n位右转(带进位)187 RCRP188 ROL n位左转189 ROLP190 RCL n位左转(带进位)191 RCLP192 DROR n位右转193 DRORP194 DRCR n位右转(带进位)195 DRCRP196 DROL n位左转197 DROLP198 DRCL n位左转(带进位)199 DRCLP3 移位指令200 SFR n位右移201 SFRP202 SFL n位左移203 SFLP204 BSFR 1位右移205 BSFRP206 BSFL 1位左移207 BSFLP208 DSFR 1位右移209 DSFRP210 DSFL 1位左移211 DSFLP4 数据处理指令212 SER 数据搜索213 SERP214 SUM 位检查215 SUMP216 DSUM217 DSUMP218 DECO 译码编码219 DECOP220 ENCO221 ENCOP222 SEG 7段编码223 BSET 对字中n位置位224 BSETP225 BRST 对字中n位复位226 BRSTP227 DIS 组合分离228 DISP229 UNI230 UNIP231 ASC ASCII转化5 先进先出指令232 FIFW FIFO写233 FIFWP234 FIFR FIFO读235 FIFRP6 内存缓冲区存取指令236 FROM 从特殊功能模块读取数据237 FROMP238 DFRO239 DFROP240 TO 向特殊功能模块写数据241 TOP242 DTO243 FROM 从远程I/O站读数据244 FROMP245 DFRO246 DFROP247 TO 向远程站写数据248 TOP249 DTO250 DTOP7 FOR/NEXT指令251 FOR 重复n次252 NEXT8 本地站、远程I/O站存取指令253 LRDP 从本地站读数据254 LWTP 向本地站写数据255 RFRP 从远程特殊功能模块读数据256 RTOP 向远程特殊功能模块写数据9 显示指令257 PR 从指定的8点字软元件输出16个字符的ASCII码258 PR 顺序向输出模块输出ASCII码, 直到结束符NUL(00H)259 PRC 将字软元件的注释转换成ASCII码,并输出260 LED 将指定的8点字软元件显示16个字符的ASCII码261 LEDA 显示指定的英文数字字符262 LEDB263 LEDC 显示软元件S的注释264 LEDR 显示复位10 其它指令265 WDT WDT复位266 WDTP267 CHK 故障检测268 SLT 按参数设定的条件,数据被锁定269 SLTR 状态锁存复位,且执行SLT270 STRA 按参数设定的条件,采样数据存入271 STRAR 采样跟踪复位,且允许执行272 STC 进位标志(M9012)ON 273 CLC 进位标志(M9012)OFF 274 DUTY 用户定义时钟11 伺服指令275 DSFRP 请求启动伺服程序276 PSFLP 数据修改特殊继电器和特殊寄存器一特殊继电器M清单M9000 熔丝断M9002 I/O组件校验出错M9004 MINI网通讯出错M9005 AC电源掉电检测M9006 电池电压低M9007 电池电压低锁存M9008 自诊断出错M9009 信号报警器检测M9010 运算出错标志M9011 运算出错标志锁存M9012 进位标志M9016 数据存储区清零标志M9017 数据存储区清零标志M9018 数据通讯监控切换M9020 0号用户定时时钟M9021 1号用户定时时钟M9022 2号用户定时时钟M9023 3号用户定时时钟M9024 4号用户定时时钟M9025 时钟数据设置请求M9026 时钟数据出错M9027 时钟数据显示M9028 时钟数据读请求M9030 0.1秒时钟M9031 0.2秒时钟M9032 1秒时钟M9033 2秒时钟M9034 1分钟时钟M9036 常开M9037 常闭M9038 RUN后第一个扫描周期ONM9039 运行标志M9040 暂停PAUSE允许线圈M9041 PAUSE状态触点M9042 停止状态触点M9043 采样跟踪完成M9044 采样跟踪M9046 采样跟踪M9047 采样跟踪准备M9048 RUN LED闪烁标志M9049 切换输出字符数目M9050 存放操作结果的存储区交换触点M9051 CHG指令执行禁止M9052 SEG指令切换M9053 EI/DI指令切换M9054 单步运行标志M9055 状态锁存完成标志M9056 主程序P, I设置请求M9057 副程序P, I设置程序M9060 副程序2P, I设置程序M9061 副程序3P, I设置程序M9060 远程终端出错M9061 通讯出错M9065 分离传送状态M9066 传送处理切换M9067 I/O组件出错检测M9068 测试模式M9069 线路故障时的输出M9073 WDT出错标志M9074 PCPU准备完成标志M9075 测试模式标志M9076 外部急停输入标志M9077 手动脉冲发生器轴设置错误标志M9078 测试模式请求出错标志M9079 伺复程序设置出错标志M9081 对远程模块的通讯请求M9082 最终站数不一致M9084 出错检测M9086 运行标志BASIC程序M9087 暂停(PAUSE)标志M9091 操作运行出错细节标志M9091 微机子程序调用出错标志M9092 双电源模块过热M9093 双工电源模块出错M9094 I/O改变标志M9095 双工运行校验出错M9096 A3VCPU A自校出错M9097 A3VCPU B自校出错M9098 A3VCPU C自校出错M9099 A3VTU自校出错M9100 SFC程序登记M9101 SFC程序起/停M9102 SFC启动状态M9103 连续步转移有效/失效M9104 连续转移防止标志M9108 步转移监控定时器起始(对应D9108)M9109 步转移监控定时器起始(对应D9109)M9110 步转移监控定时器起始(对应D9110) M9111 步转移监控定时器起始(对应D9111)M9112 步转移监控定时器起始(对应D9112)M9113 步转移监控定时器起始(对应D9113)M9114 步转移监控定时器起始(对应D9114)M9180 激活步采样跟踪完成标志M9181 激活步采样跟踪执行标志M9182 激活步采样跟踪有效M9196 在块停止时控制输出M9197~9198 保险丝熔断,I/O校核出错显示切换二特殊寄存器D9000 保险丝断D9001 保险丝断D9002 I/O组件校验出错D9003 SUM指令检测位数D9004 MINI网主通讯组件出错D9005 AC掉电计数D9006 电池不足D9008 自诊断出错D9009 信号报警器检测D9010 出错步D9011 出错步D9014 I/O控制模式D9015 CPU运行状态D9016 ROM/RAM设置D9017 最小扫描时间D9018 当前扫描时间D9019 最大扫描时间D9020 恒定扫描D9021 扫描时间D9022 1秒计数器D9025 时钟数据(年,月)D9026 时钟数据(日,时)D9027 时钟数据(分,秒)D9028 时钟数据(星期)D9021~D9034 远程终端组件参数设置D9035 远程I/O组件的通讯属性D9035 扩展文件寄存器D9036 总的站数D9036~9037 供指定扩展文件寄存器软件地址D9038~9039 LED显示优先级D9044 采样跟踪D9050 SFC程序出错代码D9051 出错块D9052 出错步D9053 转移出错D9054 出错顺控步D9055 状态锁存步序号D9061 通讯出错代码D9072 PC通讯检测D9081 对远程终端模块的已执行的通讯请求数D9082 最后的站号D9090 微机子程序输入数据区首软元件号D9091 指令出错D9094 待更换的I/O组件的首地址D9095 A3VTS系统和A3VCPU的运行状态D9096 A3VCPU A自检出错D9097 A3VCPU B自检出错D9098 A3VCPU C自检出错D9099 A3VTU 自检测出错D9100~D9107 断保险丝的组件D9100 保险丝熔断的组件D9108~D9114 步转移监控定时器设置D9116~D9123 I/O组件校验出错D9124 信号器报警数量检测D9125~D9132 信号报警器地址号D9133~D9140 远程终端卡信息D9141~D9172 通讯重发次数D9173 模式设置D9174 设置重发次数D9175 线缆出错模块出错代码D9180~9193远程终端模块出错代码D9180 轴1和轴2的限位开关输出状态存储区D9181 轴3和轴4的限位开关输出状态存储区D9182 轴5和轴6的限位开关输出状态存储区D9183 轴7和轴8的限位开关输出状态存储区D9184 CPU出错的原因D9185 伺服放大器接线数据D9187 手动脉冲发生器轴设置出错D9188 在TEST模式下启动轴号请求出错D9189 出错程序号D9190 数据设置出错D9191 伺服放大器类型D9196~9199 故障站检测D9200 LRDP处理结果D9201 LWTP处理结果D9204 通讯状态D9205 执行回送的站D9206 执行回送的站D9207 通讯扫描时间(最大值)D9208 通讯扫描时间(最小值)D9209 通讯扫描时间(当前值)D9210 重发次数D9211 环路切换计数D9212 就地站运行状态(1~16)D9213 就地站运行状态(17~32)D9214 就地站运行状态(33~48)D9215 就地站运行状态(49~64)D9216 就地站出错检测(1~16)D9217 就地站出错检测(17~32)D9218 就地站出错检测(33~48)D9219 就地站出错检测(49~64)D9220 就地站参数不匹配或(1~16)远程站I/O分配出错D9221 就地站参数不匹配或(17~32)远程站I/O分配出错D9222 就地站参数不匹配或(33~48)远程站I/O分配出错D9223 就地站参数不匹配或(49~64)远程站I/O分配出错D9224 主站与从站和远程I/O站之间的初始通讯(1~16)D9225 主站与从站和远程I/O站之间的初始通讯(17~32)D9226 主站与从站和远程I/O站之间的初始通讯(33~48)D9227 主站与从站和远程I/O站之间的初始通讯(49~64)D9228 就地站或远程I/O站出错(1~16)D9229 就地站或远程I/O站出错(17~32)D9230 就地站或远程I/O站出错(33~48)D9231 就地站或远程I/O站出错(49~64)D9232 就地站或远程I/O站环路出错D9233 就地站或远程I/O站环路出错D9234 就地站或远程I/O站环路出错D9235 就地站或远程I/O站环路出错D9236 就地站或远程I/O站环路出错D9237 就地站或远程I/O站环路出错D9238 就地站或远程I/O站环路出错D9239 就地站或远程I/O站环路出错D9240 检测到接收出错的次数D9243 本站站号检测D9244 从站的总数D9245 检测到的接收出错次数D9248 就地站运行状态D9249 就地站运行状态D9250 就地站运行状态D9251 就地站运行状态D9252 就地站出错检测D9253 就地站出错检测D9254 就地站出错检测D9255 就地站出错检测各种软元件一览表项目A1,A1NA1S A2,A2NA2C A2-S1A2N-S1 A3,A3NA3A A2U,A3UA4UI/O软元件点256 512 1024 2048 8192输入继电器X 0~FF 0~1FF 0~3FF 0~7FF0~FFF输出继电器Y 0~FF 0~1FF 0~3FF 0~7FF0~FFF辅助继电器内部继电器(1000点)M0~M999 M0~M999, M2048~8191特殊继电器(256点)M9000~M9255锁存继电器(1048点)L1000~L2048通讯用继电器(2048点)B0~B3FF B0~BFFF定时器100ms定时器(200点)T0~T19910ms定时器(56点)T200~T255100ms记忆定时器(0点)计数器(256点)C0~C255寄存器数据寄存器(1024点)D0~D1023 D0~D6143特殊寄存器(256点)D9000~D9255通讯寄存器(1024点)W0~W3FF W0~WFFF累加器(2点)A0,A1变址寄存器(2点)Z, V Z,Z1~Z6(7点), V,V1~V6(7点)嵌套(8点)N0~ N7指针(256点)P0~P255中断指针(32点)I0~I31常数十进制K (16位)-32768~+32767(32位)-2147483648 ~+2147483647十六进制H (16位)0~FFFF(32位)0~FFFFFFFF分类指令助记符功能说明对应不同型号的PLCFX0S FX0N FX1S FX1N FX2NFX2NC程序流程00 CJ 条件跳转 P P P P P01 CALL 子程序调用Î Î P P P02 SRET 子程序返回Î Î P P P03 IRET 中断返回 P P P P P04 EI 开中断 P P P P P05 DI 关中断 P P P P P06 FEND 主程序结束 P P P P P07 WDT 监视定时器刷新 P P P P P08 FOR 循环的起点与次数 P P P P P09 NEXT 循环的终点 P P P P P传送与比较10 CMP 比较 P P P P P11 ZCP 区间比较 P P P P P12 MOV 传送 P P P P P13 SMOV 位传送Î Î Î Î P14 CML 取反传送Î Î Î Î P15 BMOV 成批传送Î P P P P16 FMOV 多点传送Î Î Î Î P17 XCH 交换Î Î Î Î P18 BCD 二进制转换成BCD码 P P P PP19 BIN BCD码转换成二进制 P P P PP 算术与逻辑运算20 ADD 二进制加法运算 P P P P P21 SUB 二进制减法运算 P P P P P22 MUL 二进制乘法运算 P P P P P23 DIV 二进制除法运算 P P P P P24 INC 二进制加1运算 P P P P P25 DEC 二进制减1运算 P P P P P26 WAND 字逻辑与 P P P P P27 WOR 字逻辑或 P P P P P28 WXOR 字逻辑异或 P P P P P29 NEG 求二进制补码Î Î Î Î P循环与移位30 ROR 循环右移Î Î Î Î P31 ROL 循环左移Î Î Î Î P32 RCR 带进位右移Î Î Î Î P33 RCL 带进位左移Î Î Î Î P34 SFTR 位右移 P P P P P35 SFTL 位左移 P P P P P36 WSFR 字右移Î Î Î Î P37 WSFL 字左移Î Î Î Î P38 SFWR FIFO(先入先出)写入Î Î P PP39 SFRD FIFO(先入先出)读出Î Î P PP数据处理40 ZRST 区间复位 P P P P P41 DECO 解码 P P P P P42 ENCO 编码 P P P P P43 SUM 统计ON位数Î Î Î Î P44 BON 查询位某状态Î Î Î Î P45 MEAN 求平均值Î Î Î Î P46 ANS 报警器置位Î Î Î Î P47 ANR 报警器复位Î Î Î Î P48 SQR 求平方根Î Î Î Î P49 FLT 整数与浮点数转换Î Î Î Î P高速处理50 REF 输入输出刷新 P P P P P51 REFF 输入滤波时间调整Î Î Î Î P52 MTR 矩阵输入Î Î P P P53 HSCS 比较置位(高速计数用)Î PP P P54 HSCR 比较复位(高速计数用)Î PP P P55 HSZ 区间比较(高速计数用)Î ÎÎ Î P56 SPD 脉冲密度Î Î P P P57 PLSY 指定频率脉冲输出 P P P P P58 PWM 脉宽调制输出 P P P P P59 PLSR 带加减速脉冲输出Î Î P P P方便指令60 IST 状态初始化 P P P P P61 SER 数据查找Î Î Î Î P62 ABSD 凸轮控制(绝对式)Î Î P PP63 INCD 凸轮控制(增量式)Î Î P PP64 TTMR 示教定时器Î Î Î Î P65 STMR 非凡定时器Î Î Î Î P66 ALT 交替输出 P P P P P67 RAMP 斜波信号 P P P P P68 ROTC 旋转工作台控制Î Î Î Î P69 SORT 列表数据排序Î Î Î Î P外部设备70 TKY 10键输入Î Î Î Î P71 HKY 16键输入Î Î Î Î P72 DSW BCD数字开关输入Î Î P P P73 SEGD 七段码译码Î Î Î Î P74 SEGL 七段码分时显示Î Î P P P75 ARWS 方向开关Î Î Î Î P76 ASC ASCI码转换Î Î Î Î P77 PR ASCI码打印输出Î Î Î Î P78 FROM BFM读出Î P Î P P79 TO BFM写入Î P Î P P外围设备80 RS 串行数据传送Î P P P P81 PRUN 八进制位传送(#) Î Î P P P82 ASCI 16进制数转换成ASCI码Î PP P P 83 HEX ASCI码转换成16进制数Î P PP P84 CCD 校验Î P P P P85 VRRD 电位器变量输入Î Î P P P86 VRSC 电位器变量区间Î Î P P P87 - -88 PID PID运算Î Î P P P89 - -浮点数运算110 ECMP 二进制浮点数比较Î Î Î ÎP111 EZCP 二进制浮点数区间比较Î ÎÎ Î P118 EBCD 二进制浮点数→十进制浮点数Î Î Î Î P119 EBIN 十进制浮点数→二进制浮点数Î Î Î Î P120 EADD 二进制浮点数加法Î Î Î ÎP121 EUSB 二进制浮点数减法Î Î Î ÎP122 EMUL 二进制浮点数乘法Î Î Î ÎP123 EDIV 二进制浮点数除法Î Î Î ÎP127 ESQR 二进制浮点数开平方Î Î ÎÎ P129 INT 二进制浮点数→二进制整数Î Î Î Î P130 SIN 二进制浮点数Sin运算Î Î ÎÎ P131 COS 二进制浮点数Cos运算Î Î ÎÎ P132 TAN 二进制浮点数Tan运算Î Î ÎÎ P147 SWAP 高低字节交换Î Î Î Î P定位155 ABS ABS当前值读取Î Î P P Î156 ZRN 原点回归Î Î P P Î157 PLSY 可变速的脉冲输出Î Î P PÎ158 DRVI 相对位置控制Î Î P P Î159 DRVA 绝对位置控制Î Î P P Î时钟运算160 TCMP 时钟数据比较Î Î P P P161 TZCP 时钟数据区间比较Î Î P PP162 TADD 时钟数据加法Î Î P P P163 TSUB 时钟数据减法Î Î P P P166 TRD 时钟数据读出Î Î P P P167 TWR 时钟数据写入Î Î P P P169 HOUR 计时仪Î Î P P外围设备170 GRY 二进制数→格雷码Î Î Î Î P171 GBIN 格雷码→二进制数Î176 RD3A 模拟量模块(FX0N-3A)读出ÎP Î P Î177 WR3A 模拟量模块(FX0N-3A)写入Î P Î P Î触点比较224 LD= (S1)= (S2)时起始触点接通Î Î P P P225 LD> (S1)> (S2)时起始触点接通Î Î P P P226 LD< (S1)< (S2)时起始触点接通Î Î P P P228 LD<> (S1)<> (S2)时起始触点接通Î Î P P P229 LD≦ (S1)≦ (S2)时起始触点接通Î Î P P P230 LD≧ (S1)≧ (S2)时起始触点接通Î Î P P P232 AND= (S1)= (S2)时串联触点接通Î Î P P P233 AND> (S1)> (S2)时串联触点接通Î Î P P P234 AND< (S1)< (S2)时串联触点接通Î Î P P P236 AND<> (S1)<> (S2)时串联触点接通Î Î P P P237 AND≦ (S1)≦ (S2)时串联触点接通Î Î P P P238 AND≧ (S1)≧ (S2)时串联触点接通Î Î P P P240 OR= (S1)= (S2)时并联触点接通Î Î P P P241 OR> (S1)> (S2)时并联触点接通Î Î P P P242 OR< (S1)< (S2)时并联触点接通Î Î P P P244 OR<> (S1)<> (S2)时并联触点接通Î Î P P P245 OR≦ (S1)≦ (S2)时并联触点接通Î Î P P P246 OR≧ (S1)≧ (S2)时并联触点接通Î Î P P P。

微机原理与接口技术3-9控制转移指令

微机原理与接口技术3-9控制转移指令

例: JMP 0120H JMP SHORT LPI ;直接转向0120H ;转向LPI
JMP NEAR PTR BBB ;转向BBB 由于是段内转移,故转移后CS内容保持不变
②段内间接转移 转移的目标地址(偏移量)由寄存器或存储单元的内 容给出。 例:JMP SI 若指令执行前(SI)=1200H,则指令执行后, (IP)=1200H,于是转向代码段的偏移地址1200H处执行。
(2)条件转移指令Jcc
格式为:
Jcc Label
; Label是转移的目标地址
Jcc指令包括下列3类: (1)测试单个标志位。
(2)用于带符号数比较。
(3)用于无符号数比较。
条件转移指令只能是段内直接转移,且指令的 转移范围为指令所在位置的-128~+127字节。
i 根据单个标志位设置的条件转移指令
出的位移量加到IP上。
②段内间接调用
子程序的偏移地址在寄存器或存储器中。
格式:CALL mem16/reg16 CALL执行时,它首先将IP内容压栈,然后把指定的寄 存器/存储器的内容送入IP。
例: CALL AX ;调用地址由AX给出 CALL WORD PTR[SI] ;调用地址由存储器给出.
在汇编语言中,段内间接寻址通常写成: JMP WORD PTR[BX+DI] 表示所取得的目标地址是一个字(16位偏移地址)。
③段间直接转移 在指令中直接给出要转移到的目的段地址和 偏移地址。
例:JMP 2000:1000H
执行时,(IP)←1000H,(CS)←2000H 注:直接地址为符号地址时,段间直接转移指令中 的符号地址前应加操作符FAR PTR。
•JL/JNGE •JLE/JNG
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7
• 例:利用子程序调用编写令20H-2AH, 30H-3EH,40H-4FH 三个区域清零的程 序
可编辑版
8
ORG 1000H
MOV SP,#70H
MOV R0,#20H
MOV R2,#0BH
ACALL ZERO
MOV R0,#30H
MOV R2,#0FH
ACALL ZERO
MOV R0,#40H
• 1、已知某单片机监控程序始址为A080H, 问用什么办法是单片机开机后自动执行 监控程序
• 2、已知MA=0500H,问8051单片机执行 如下指令

MOV SP ,#70H
• MA:LCALL 8192H
• 堆栈中数据如何变化,PC中内容是什么
可编辑版
11
• 3、已知外部RAM中以3000H为始址的数 据块以零为结束标志,试编程将之传送 到以30H为始址的内部RAM区
LCALL 标号 ;标号表示子程序首地址 ACALL 标号 来调用子程序。
可编辑版
5
(2)返回指令 (2条)
子程序执行完后必须回到主程序,如何返
回呢?只要执行一条返回指令就可以了。
RET
;子程序返回指令
RETI
;中断子程序返回指令
两者不能互换使用。
可编辑版
6
4. 空操作指令(1条)
NOP
可编辑版
可编辑版
17
(2)判位直接寻址位转移指令 JB bit,rel JNB bit,rel JBC bit,rel 第一条指令:如果指定的(bit)=1,则转移,否 则顺序执行,第二条指令功能相反。
同样理解:JB bit,标号 第三条指令是如果指定的(bit)=1,则转移, 并把该位清0,否则顺序执行。
ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit
可编辑版
16
4. 位控制转移指令(5条)
(1)判Cy转移指令
JC rel JNC rel
第一条指令的功能是如果Cy=1就转移,否
则就顺序执行。 第二条指令则和第一条指令相反,即如果
Cy=0就转移,否则就顺序执行。
同样理解: JNC 标号
可编辑版
18
例1:内部RAM的M1和M2单元各有一个 无符号8位二进制数,试编程比较它们的 大小,并把大数送到MAX单元
MOV A, M1 CJNE A, M2,LOOP LOOP: JNC LOOP1 MOV A,M2 LOOP1:MOV MAX,A
可编辑版
19
• 例2:已知外部RAM以2000H开始有一个 数据缓冲区,该缓冲区中数据以回车符 (ASCII码为0DH)为结束标志,试编一 程序把正数送入片内RAM以30H为起始 地址的正数区,把负数送入片内RAM以 50H为起始地址的负数区。(假设输入数 据不超过32个)
21
LOOP:MOV @R1,A INC R1 INC DPTR SJMP NEXT
DONE:END
可编辑版
22
可编辑版
20
ORG 0100H
MOV DPTR, #2000H
MOV R0,#30H
MOV R1,#50H
NEXT: MOVX A, @DPTR
CJNE A,#0DH,COMP
SJMP DONE
COMP:JB ACC.7 ,LOOP
MOV @R0,A
INC R0
INC DPTR
SJMP NEXT 可编辑版
可编辑版
1
2. 条件转移指令(8条)
条件转移指令是指在满足一定条件时进行相对转 移,否则程序继续执行本指令的下一条指令。
(1)判A内容是否为0转移指令(2条)
JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A≠0,就转移。 我们在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。 JNZ 标号 ;即转移到标号处
可编辑版
3
(3)减1条件转移指令(2条)
DJNZ Rn,rel DJNZ direct,rel
可编辑版
4
3.子程序调用和返回
(1)调用指令(2条)
LCALL addr16 ACALL addr11
;长调用指令 ;短调用指令
上面两条指令都是在主程序中调用子程序,两者的区别: 对短调用指令,被调用子程序入口地址必须与调用指令的 下一条指令的第一字节在相同的2KB存储区之内。 使用时可以用:
可编辑版
14
2 位变量修改指令(4条)
▪ 位清0指令 : CLR C
CLR bit 例:CLR P1.0 ;即使P1.0变为0
▪ 位置1指令: SETB C
SETB bit 例:SETB P1.0 ;使P.0变为1 位取反指令: CPL C
CPL bit
可编辑版
15
3.位 逻辑运算指令 (4条)
MOV R2,#10H
ACALL ZERO
ZERO: MOV @R0,#00H
INC R0
DJNZ R2,ZERO
RET
END
可编辑版
9
例:从P1口的P1.0管脚输出周期为10个机器 周期的方波 CLR P1.0
LOOP: CPL P1.0 NOP NOP SJMP LOOP
可编辑版
10
• 练习:
控制转移指令
• 1、无条件转移指令:
• 长转移类指令:LJMP addr16
• 绝对转
间接转移指令:JMP @A+DPTR
• 我们在编写汇编语言源程序时,可以直接写成:
LJMP 标号 ;即转移到标号处
AJMP 标号
SJMP 标号
JMP 标号
可编辑版
12
位操作指令
可编辑版
13
1.位传送指令 (2条)
MOV C,bit ;bit →C MOV bit,C ;C →bit
这组指令的功能是实现CY和其它位地址之间的 数据传递。
例:MOV C,P1.0 ;将P1.0的状态送给C。
MOV P1.0,C ;将C中的状态送到P1.0 ;引脚上去。
可编辑版
2
(2)比较转移指令(4条)
CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 同样地,使用时,我们可以将rel理解成标号,即: CJNE A,#data,标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
相关文档
最新文档