条件转移指令表

合集下载

指令

指令
还有什么方法 实现循环的终 止?
比较转移指令CJNE的应用
典型例题的第二种解答 MOV R0,#20H CLR A MOV @R0,A INC A INC R0 CJNE A,#0FH,LOOP SJMP $
LOOP:
位指令
项目分析
• 回顾:前面的两个流水灯,分别使用了立 即数寻址传送指令和移位指令,这些都是 字节操作指令。 • 分析:在单片机中,我们不仅可以对P1口 进行字节操作,同时改变P1口8位的状态, 也可以对它进行位操作,只改变指定位的 状态而不影响P1口中其它位的状态 。
0000H A,30H C A,31H NEXT P1,#0FDH EXIT P1,#0FEH $
CJNE
• MOV A,30H • CJNE A,31H,NEXT • MOV P1,#0FEH • NEXT:MOV P1,#0FDH
无条件转移和有条件转移指令
——无条件转移指令(3条) 无条件转移指令(3条 指令(3
用 循 环 指 令 实 现
#include <stdio.h> #include <reg51.h> #define uchar unsigned char #define uint unsigned int uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(uint time) //延时程序 { unsigned int j=0; for(;time>0;time--) { for(j=0;j<125;j++) {;} } } void main() //主程序 { while(1) { uchar i=0; while(i<8) { P0=table[i]; i++; delay(200); } } }

常用汇编指令表

常用汇编指令表

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 程序结束.。

微机原理指令汇总

微机原理指令汇总

我现将指令系统中各种助记符得英文全名写出来,各种助记符得记忆就会变得很简单o(∩_∩)o、、、在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有得I/O指令都使用这一寄存器与外界设备传送数据、BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)与串处理指令中用作隐含得计数器、DH&DL=DX(data):数据寄存器,常用于数据传递。

她们得特点就是,这4个16位得寄存器可以分为高8位: AH, BH, CH, DH、以及低八位:AL,BL,CL,DL。

这2组8位寄存器可以分别寻址,并单独使用。

另一组就是指针寄存器与变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前得堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS得一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目得变址寄存器,可用来存放相对于ES 段之目得变址指针。

指令指针IP(Instruction Pointer)标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)段寄存器(Segment Register)为了运用所有得内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。

控制转移类指令ppt课件(全)

控制转移类指令ppt课件(全)

(4)CJNE @Ri,#data,rel 该指令功能:若(( Ri ))≥ data,(CY)=0; 若(( Ri ))<data ,CY=1; 若(( Ri ))≠ data,则PC←(PC)+rel,转移; 若(( Ri ))=data,则程序顺序执行.
例:如果(A) ≠ 00H,转移到CX1;如果(R1) ≠ 10H, 转移到CX2;如果(A) ≠(60H),转移到CX3。程序段 如下:
(2)指令长短不一样。LJMP是3字节指令;AJMP、 SJMP是2字节指令;JMP是1字节指令。
(3)指令机器码构成不同。AJMP、LJMP、JMP后跟 的是绝对地址,而SJMP后跟的是相对地址。
(4)地址特点不同。LJMP、AJMP、SJMP的转移目标 地址是固定的,程序执行过程中不变;JMP的转移目 标地址随程序的执行是动态变化的。
1. 长跳转指令 LJMP (3字节) LJMP addr16 ; PC addr16
•执行该指令时, 将目标语句的16位地址addr16装入 PC, 程序无条件转向指定的目标语句执行。 •由于长跳转指令提供的是16位地址,对应64KB的程 序存储器地址空间,所以可跳转到64KB程序存储器 地址空间的任何地方。 •实际应用中长跳转汇编指令写作“LJMP 目标语句 标号”的形式,如“LJMP LOOP”。
• 指令对A、DPTR和标志位均无影响。
注意:以上四条指令结果均不影响程序状态 字寄存器 PSW 。
5.LJMP、AJMP、SJMP、JMP四条无条件转移指令的 区别:
(1)转移范围不一样。LJMP、JMP转移范围是64KB; AJMP转移范围是与当前PC值同一个2KB区间;SJMP 转移范围是相对当前PC值的-128B~+127B范围内。

avr指令表

avr指令表

SUBI Rd,K 立即数减 ICALL间接调用(128KB) SBC Rd,Rr 带进位减CALL k 长调用(4M)SBCI Rd,K 带进位立即数减 RET子程序返回 SBIW Rd,K 立即数减法 RETI中断返回 AND Rd,Rr 逻辑与CPSE Rd,Rr 比较相等跳行 ANDI Rd,K 直接数逻辑与 CP Rd,Rr 比较OR Rd,Rr 逻辑或CPC Rd,Rr 带进位比较 ORI Rd,K 直接数逻辑或 CPI Rd,K 带直接数比较 EOR Rd,Rr 异或 SBRC Rd,b 寄存器位被清零跳行 COM Rd 取二进制反码 SBRS Rd,b 寄存器位置位跳行 NEG Rd 二进制补码 SBIC P,b I/O 寄存器的位清零跳行 SBR Rd,K 寄存器位置位 SBIS P,b I/O 寄存器的位置位跳行 CBR Rd,K 清除进位标志 BRBS S,k SREG 中的位被置位转移 INC Rd 加 1 BRBC S,k SREG 中的位被清除转移 DEC Rd 减 1 BREQ k 相等转移 TST Rd 测试零或负 BRNE k 不相等转移 CLR Rd 清除寄存器 BRCS k 进位位置位转移 SER Rd 置位寄存器所有位 BRCC k 进位位清除转移 MULRd,Rr 乘法BRSH k 高于等于转ADD Rd,Rr 加法RJMPADC Rd,Rr 带进位加法 IJMP 算术和逻辑指令条件转移指令相对转移(-2K K 2K) 间接跳转(128KB) ADIW Rd,K 直接数加法 JMP k 长跳转(4M) SUB Rd,Rr 减法RCALL k 相对调用(-2K K 2K)寄存器和操作码BRLO k 低于转移(无符号) Rd :寄存器文件中的目的(或源)寄存器 BRMI k 负数转移 Rr : 寄存器文件中的源寄存器 BRPL k 正数转移R :指令执行后的结果 BRGE k 大于或等于转移(带符号) K :常数项或字节数据(8 位) BRLT k 小于转移(有符号) k :程序计数器的常量地址数据 BRHS k 半进位标志置位转移 b :在寄存器文件中或 I/O(3 位)中的位 BRHC k 半进位标志被清除转移 s : 在状态寄存器 (3 位)中的位 BRTS k T 标志被置位转移 X,Y,Z:间接地址寄存器 BRTC k T 标志被清除转移 P :I/O 口地址BRVS k 溢出标志被置位转移 q :直接寻址的偏移(6 位) BRVCk溢出标志被转移清除状态寄存器BRIE k 全局中断被使能转移 SREG: 状态寄存器 S :N ⊕V,符号测试位 BRID k 全局中断被禁止转移C :进位标志位 H :半进位标志位 状态寄存器(SREG)和布尔格式Z :零标志位 N :负数标志位 I T H S V N Z C V :2 的补码溢出指示位 7 6 5 4 3 2 1 0 T :用于 BLD 和 BST 指令传送位 I :全局中断使能禁止标志位标志: =/0/1/-; = 由指令引起的有效标志AVR C 高级语言的效率 执行同功能的程序,8MHzAVR224MHz C51不再有作废的产品; 不需要 5 分钟的紫外线擦除时间; 再也用不着因为掩模而无法入睡了;没有 10 周订货交货时间; 添加新特性易如反掌; 容易调试; 容易在线升级,几秒钟搞定;。

汇编条件转移指令

汇编条件转移指令

汇编条件转移指令1. 指令简介在汇编语言中,条件转移指令用于根据某个条件是否满足来决定是否跳转到某个指定的目标地址。

条件转移指令根据条件码寄存器中的标志位来进行判断,根据不同的条件码进行跳转或不跳转。

条件转移指令可以根据标志位的值来实现各种条件的判断,例如比较两个数的大小、判断某位是否为1等。

2. 有符号数的比较和跳转条件转移指令可以用于有符号数的比较和跳转。

在进行有符号数的比较时,需要使用特定的条件码,例如OF、SF、ZF等。

下面是一些常用的有符号数比较和跳转的条件码及其含义:•JO:溢出时跳转•JNO:不溢出时跳转•JS:结果为负时跳转•JNS:结果为非负时跳转•JE/JZ:结果为零时跳转•JNE/JNZ:结果不为零时跳转•JL/JNGE:结果为小于时跳转•JLE/JNG:结果为小于等于时跳转•JG/JNLE:结果为大于时跳转•JGE/JNL:结果为大于等于时跳转例如,我们可以通过如下汇编代码实现有符号数的比较和跳转:MOV AX, 10CMP AX, 20JL Less ; 如果AX小于20,则跳转到Less标签处在上面的例子中,如果AX的值小于20,则跳转到Less标签处继续执行代码。

3. 无符号数的比较和跳转与有符号数类似,条件转移指令也可以用于无符号数的比较和跳转。

在进行无符号数的比较时,需要使用特定的条件码,例如CF、ZF等。

下面是一些常用的无符号数比较和跳转的条件码及其含义:•JC:进位时跳转•JNC:不进位时跳转•JAE/JNB:大于等于时跳转•JB/JNAE:小于时跳转•JBE/JNA:小于等于时跳转•JA/JNBE:大于时跳转例如,在对无符号数进行比较时,可以使用如下汇编代码:MOV AX, 10CMP AX, 20JAE GreaterEqual ; 如果AX大于等于20,则跳转到GreaterEqual标签处在上面的例子中,如果AX的值大于等于20,则跳转到GreaterEqual标签处继续执行代码。

51单片机条件转移指令

51单片机条件转移指令

51单片机条件转移指令51单片机是一种常用的单片机芯片,它的条件转移指令在编程中起着重要的作用。

条件转移指令是根据特定的条件来决定程序的执行路径,使得程序具备一定的智能性和灵活性。

下面我们来详细介绍51单片机的条件转移指令以及它们的使用方法和注意事项。

51单片机的条件转移指令主要有以下几种:条件跳转指令、循环控制指令和中断指令。

这些指令可以根据特定的条件来改变程序执行的顺序和逻辑,实现程序的分支和循环控制。

首先,我们来介绍条件跳转指令。

条件跳转指令一般用于根据某个条件来跳转到不同的程序地址。

其中比较常见的有“跳转指令”、“条件判断指令”和“条件转移指令”等。

跳转指令可以根据某个条件来跳转到指定的程序地址,比如“跳转到某个子程序”或“跳转到某个循环体”。

条件判断指令可以根据特定的条件来执行跳转或继续执行下一条指令,比如“如果某个条件成立,就跳转到某个程序地址;否则继续执行下一条指令”。

条件转移指令一般用于根据某个条件转移到不同的程序地址,比如“如果某个条件成立,就转移到某个程序地址;否则继续执行下一条指令”。

其次,我们介绍循环控制指令。

循环控制指令一般用于实现程序的循环执行,其中比较常见的有“循环指令”和“计数器指令”等。

循环指令可以通过设置循环条件来实现程序的循环执行,比如“当某个条件成立时,就一直循环执行某段程序”。

计数器指令一般通过设置一个计数器来实现程序的循环执行,比如“循环执行某段程序一定的次数”。

最后,我们介绍中断指令。

中断指令主要用于处理外部的中断事件,比如“按键中断”和“定时器中断”等。

中断指令可以在程序执行的过程中,根据外部中断事件的发生来中断当前的执行流程,执行中断服务程序,处理完中断事件后,再返回到原来的程序地址继续执行。

在使用51单片机的条件转移指令时,需要注意以下几点。

首先,要根据具体的需求选择合适的条件转移指令,合理组织程序的逻辑结构。

其次,要注意条件转移指令的执行过程中是否会对程序的性能和时序等方面造成影响。

反汇编语言常用指令

反汇编语言常用指令

内容目录计算机寄存器分类简介计算机寄存器常用指令一、常用指令二、算术运算指令三、逻辑运算指令四、串指令五、程序跳转指令------------------------------------------计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。

对低16位数据的存取,不会影响高16位的数据。

这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

.4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。

程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。

可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register)。

它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。

在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。

在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。

条件转移指令

条件转移指令
(CF)=0且(ZF)=0
无符号数
高于或等于/不低于转移
JAE/JNB turgel
(CF)=0
无符号数
低于/不高于或等于转移
JB/JNAE turgel
(CF)=1
无符号数
低于或等于/不高于转移
JBE/JNA turgel
(CF)=1或(ZF)=1
无符号数
进位转移
JC turgel
(CF)=1
无进位转移
JNC /JZ turgel
(ZF)=0
不等于或非零转移
JNE/JNZ
(ZF)=1
奇偶校验为偶转移
JP/JPE turgel
(PF)=1
奇偶校验为奇转移
JP/JPO turgel
(PF)=0
条件转移指令
带符号数
小于或等于/不大于转移
JLE/JNG turgel
(SF)≠(OF)或(ZF)=1
带符号数
溢出转移
JO turgel
(OF)=1
不溢出转移
JNO turgel
(OF)=0
结果为负转移
JS turgel
(SF)=1
结果为正转移
JNS turgel
(SF)=0
高于/不低于或等于转移
JA/JNBE turgel
指令名称
汇编格式
转移条件
备注
CX内容为0的转移
JCXZ turgel
(CX)=0
大于/不小于或等于转移
JG/JNLE turgel
(SF)=(OF)且(ZF)=0
带符号数
大于或等于/不小于转移
JGE/JNL turgel
(SF)=(OF)
带符号数

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 本指令是三字节指令,调用地址在指令中直接

控制转移指令

控制转移指令

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 结果 目标地址

51单片机汇编指令总结

51单片机汇编指令总结

51单片机汇编指令总结51单片机汇编指令总结数据传输指令一.片内RAM数据传输指令1.以累加器A为目的操作数的指令:MOVA,RnMOVA,directMOVA,@RiMOVA,#data2.以寄存器Rn为目的操作数的指令:MOVRn,AMOVRn,directMOVRn,data3.以直接地址为目的操作数的指令:MOVdirect,AMOVdirect,RnMOVdirect1,derect2MOVdirect,@RiMOVdirect,#data4.间接地址为目的操作数的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data5.十六位数据传送指令:MOVDPTR,#data16二.累加器A与片外RAM数据传送指令:MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A三.查表寻址:MOVCA,@A+DPTR(先PC←(PC)+1,后A←((A)+(DPTR)))+MOVCA,@A+PC(先PC←(PC)+1,后A←((A)+(PC)))四.交换指令:1.字节交换指令:XCHA,RnXCHA,directXCHA,@Ri2.半字节交换指令:XCHDA,@Ri3.累加器半字节交换指令:SWAPA五.栈操作指令:1.PUSH(入栈指令)PUSHdirect2.POP(出栈指令)POPdirect算术运算指令:一.加法减法指令:1.加法指令:ADDA,RnADDA,directADDA,@RiADDA,#data2.带进位加法指令:ADDCA,RnA←(A)+(Rn)+CYADDCA,directA←(A)+(direct)+CYADDCA,@RiA←(A)+((Ri))+CYADDCA,#dataA←(A)+(data)+CY3.带借位减法指令:SUBBA,RnA←(A)-CY-(Rn)SUBBA,directA←(A)-CY-(direct)SUBBA,@RiA←(A)-CY-((Ri))SUBBA,#dataA←(A)-CY-#data二.乘法除法指令:1.乘法指令:MULABBA←(A)×(B)高字节放在B中,低字节放在A中2.除法指令:DIVABA←(A)÷(B)的商,(B)←(A)÷(B)的余数三.加1减1指令:1.加1指令:INCAA←(A)+1INCRnRn←(Rn)+1INCdirectdirect←(direct)+1INC@Ri(Ri)←((Ri))+1INCDPTRDPTR←(DPTR)+12.减1指令:DECADECRnDECdirectDEC@Ri四.十进制调制指令:DAA调整累加器A的内容为BCD码逻辑操作指令:一.逻辑与、或、异或指令:1.逻辑与指令:ANLA,RnANLA,directANLA,@RiANLA,#data2.逻辑或这令:ORLA,RnORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data3.逻辑异或指令:XRLA,RnXRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data二.清零、取反指令:1.累加器A清零指令:CRLA2.累加器A取反指令:CPLA三.循环位移指令:1.累加器A循环左移指令:RLA2.累加器A循环右移指令:RRA3.累加器A连同进位位循环左移指令:RLCA4.累加器A连同进位位循环右移指令:RRCA控制转移指令:一.无条件转移指令:1.绝对转移指令:AJMPaddr11(先PC+2,然后将addr11的低十位传给PC,PC的高六位不变)2.长转移指令:LJMPaddr16(用addr16的值替换PC的值)3.相对转移(短转移)指令:SJMPrel(带符号的偏移字节数)(PC+2,再加rel赋值给PC)4.间接转移指令:JMP@A+DPTR(A)+(DPTR)→(PC)二.条件转移指令:1.累加器判零转移指令:JZrel先PC+2;后判断,A为0时转移,PC+rel赋值给PC;否则顺序执行JNZrel先PC+2,后判断,A不为0时转移,PC+rel赋值给PC;否则顺序执行2.比较转移指令:CJNE目的操作数,源操作数,relCJNEA,direct,rel先PC+3传回PC,再比较目的操作数和原操作数CJNEA,#data,rel 目>源时,程序转移,PC+rel传回PC且CY=0CJNERn,#data,rel目=源时,程序顺序执行CJNE@Ri,#data,rel目ORLC,bitORLC,bit三.位清零、置一、取反指令:1.位清零指令:CLRCCLRbit2.位置一指令:SETBCSTEBbi3.位取反指令:CPLCCPLbit这类指令的功能执行的结果不影响标志位,当直接寻址位地址为端口P0~P3中的某一位时,具有“读-改-写”的功能。

微机原理与接口技术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

03.10 第三章 - 单片机指令系统(条件转移类指令LJMP、AJMP、SJMP、JMP、JZ、DJNZ、CJNE、RET、RETI)

03.10 第三章 - 单片机指令系统(条件转移类指令LJMP、AJMP、SJMP、JMP、JZ、DJNZ、CJNE、RET、RETI)

09:42
单片机技术
12
第三章:MSC-51 单片机指令系统
3.10.2 - 条件转移类指令
❖ 理解条件的概念 ❖ 掌握JZ、JNZ的特点和用法 ❖ 掌握DJNZ的特点和用法 ❖ 掌握CJNE的特点和用法
09:42
单片机技术
13
3.10.2 条件转移指令(JZ、DJNZ、CJNE)
❖ 1.判A转移指令(JZ、JNZ)
09:42
单片机技术
4
3.10 控制转移类指令 ❖ 控制转移类指令分类
▪ 无条件转移指令: 指执行此类指令,程序将无条件转移到目的地址
包括:LJMP 、AJMP 、SJMP 、JMP
Long(长-64KB)Absolutely(绝对-2KB)Short(短-256B)Jump(跳)
▪ 条件转移指令:
指程序需满足某种条件时,才转移到目的地址,否则顺 序执行下一条指令。
包括:JC、JB、JBC、JZ、DJNZ、CJNE
09:42
单片机技术
5
3.10.1 无条件转移指令(LJMP、AJMP、SJMP、JMP)
❖ 1.长转移指令(LJMP)
▪ 格式:LJMP addr16 ;PC =(PC)+ 3
;PC ← addr15~0 ▪ 范围:216B = 64KB,(0000H~FFFFH)
▪ 格式:JZ rel ;当A = 00H时转向rel,PC' =(PC)+ 2+rel ;否则顺序执行,PC' =(PC)+ 2
▪ 格式:JNZ rel ;当A ≠ 00H时转向rel,PC' =(PC)+2+rel ;否则顺序执行,PC' =(PC)+ 2

控制转移指令

控制转移指令

试着汇编下列源程序,如某条通过或无法通过汇编, ① 试着汇编下列源程序,如某条通过或无法通过汇编,根 据汇编信息窗口的提示,请逐条说明具体理由: 据汇编信息窗口的提示,请逐条说明具体理由: ORG 1000H LJMP 1900H AJMP 1900H AJMP 1100H SJMP 1100H SJMP $ END 实训要点: 实训要点: 1、观察每条指令在ROM中的存放地址。 、观察每条指令在 中的存放地址。 中的存放地址 2、计算目的地址和当前PC指针之间的距离。 、计算目的地址和当前 指针之间的距离。 指针之间的距离 3、比较三种指令之间的差异。 、比较三种指令之间的差异。
MOV DPTR,#TAB MOV A,COUT RL A JMP @A+DPTR ORG 1000H
TAB:
AJMP ZERO AJMP ONE
2、条件转移 、
反复单步执行下列程序段,结合A的内容 观察JNZ L1的 的内容, ①反复单步执行下列程序段,结合 的内容,观察 的 执行情况,并看该指令的下一条指令执行后, 窗口 窗口P1值的变 执行情况,并看该指令的下一条指令执行后,I/O窗口 值的变 化情况,说明该程序的功能。 化情况,说明该程序的功能。 START: L0: MOV A,#0 , CPL A JNZ L1 MOV P1,#00h SJMP L2 L1: L2: MOV P1,#0FFh SJMP L0 End
ROM地址 ROM地址 目的地址 是否出范围
例如:ORG 1000H AJMP 1900H 当前地址=1000H 当前PC=1002H(AJMP是2字节指令) 目的地址=1900H 1、高5位地址比较法 当前PC高5位=00010B 目的地址高5位=00011B
结论:不一致,因此跳转出范围。 2、范围比较法 当前PC的跳转的2K范围为 PC高5位+地址低11位(0~7FFH) 最小地址=00010 00000000000B=1000H 最大地址=00010 11111111111B=17FFH

第3章 指令系统3-2(2)

第3章 指令系统3-2(2)

例3-60 用SAR指令计算-128/8=-16的程序如下: MOV AL,1000 0000B ;AL=-128 MOV CL,03H ;右移位次数3 SAR AL,CL ;右移3次 指令执行后,AL=0F0H=-16。
10
CF
MSB←—----------------LSB
ROL循环左移
CF
MSB—---------------→LSB
SAR算术右移
7
例3-58 MOV AH,06H SAL AH,1 MOV CL,03H SHL DI,CL SAL BYTE PTR[BX],1
CF MSB←—----------------LSB ←0 SHL/SAL逻辑/算术左移
8
CF 0
MSB-—---------------→LSB
SHR逻辑右移
27
表3-11 直接标志条件转移指令 指令助记符
JC JNC JZ/JE JNZ/JNE JS
测试条件
CF=1 CF=0 ZF=1 ZF=0 SF=1 有进位 无进位
指令功能
转移 转移 转移 转移
结果为零/相等 符号为负
结果不为零/不相等 转移
JNS
JO
SF=0
OF=1
符号为正
溢出
转移
转移
JNO
JP/JPE
例3-55 假设AX中存有两个BCD数0508H,要将它 分别转换成ASCII码,结果放回AX。 OR AX,3030H
4
例3-56 若AL中存有某外设端口的状态信息,其中 D1位控制扬声器发声,要求该位在0、1之间来回变 化,其余各位保留不变,实现如下:
XOR AL,0000 0010B
5

电子信息工程技术《条件转移指令》

电子信息工程技术《条件转移指令》

条件转移指令:
第三页,共八页。
条件转移指令:
CJNE是比较转移指令,该指令通过比较前面两个操作数的大小,如果它们的值不相等那么转 移,相等那么继续执行。指令执行后要影响进位位CY,假设操作数1小于操作数2,那么CY= 1;假设操作数1大于操作数2,那么CY=0。
DJN在循环次数的循环程序中应用。
第四页,共八页。
条件转移指令:
JC、JNC、JB和JNB指令的功能分别是判别进位位CY和直接位地址的内容是“1〞还是“0〞,以此来决定程序 的走向。JBC指令的功能是:假设直接位地址的内容为“1〞那么转移,同时将该位清0,否那么顺序执行。
第五页,共八页。
● 条件转移指令
① 条件指令的格式;
② 条件转移指令转移的条件;
第八页,共八页。
Su小 结m
第六页,共八页。
条件转移指令
再见
第七页令是依据某种特定条件实现转移的指令。条件满足时实现转移,其目标地址在下 一条指令的起始地址为中心的256个字节范围内〔-128~127〕。J和JN指令是判别累加器A的内容是否 为0来确定是顺序执行还是转移。CJNE是比较转移指令,该指令通过比较前面两个操作数的大小,如果 它们的值不相等那么转移,相等那么继续执行。假设操作数1大于操作数2,那么CY=0。② 条件转移 指令转移的条件。条件转移指令
条件转移指令是依据某种特定条件实现转移的指令。条件满足时实现转移,其目标地址在 下一条指令的起始地址为中心的256个字节范围内〔-128~127〕;条件不满足时那么顺序执行 下面一条指令。
第一页,共八页。
条件转移指令:
J和JN指令是判别累加器A的内容是否为0来确定是顺序执行还是转移。
第二页,共八页。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
置方向标志指令
STD
置方向标志(DF←1),使所有串指令的地址修改为减量
关中断指令
CLI
清中断允许标志(IF←0),禁止CPU响应外部可屏蔽中断
开中断指令
STI
置中断允许标志(IF←1),允许CPU响应外部可屏蔽中断
表2.13外同步和空操作指令
类别
指令格式
功能
外同

HLT
使CPU停止程序执行,进入暂停状态。直到有复位信号或外部中断请求时,退出暂停状态
指令名
指令格式
指令功能
清除Cache
INVD
将内部和外部Cache的内容作废,外部Cache的数据不写回内存
回写和使Cache无效
WBINVD
先清除内部Cache,然后将外部Cache的内容写回内存,再清除外部Cache
作废TLB项
INVLPG
使TLB中的某一项作废
读CPU标识码
CPUID
根据EAX预先装入值,读CPU标识码和其他信息:
装入GDTR/IDTR
LGDT/LIDT存储器
GDTR/IDTR←(存储器)
存储GDTR/IDTR
SGDT/SIDT存储器
存储器←(GDTR)/(IDTR)
装入LDTR
LLDT源操作数
LDTR←(源操作数)
存储LDTR
SLDT目的操作数
目的操作数←(LDTR)
装入任务寄存器
LTR源操作数
TR←(源操作数)
高于或等于/不低于转移
JB/JNAE
CF=1
低于/不高于等于转移
JBE/JNA
CF=1或ZF=1
低于或等于/不高于转移
JE/JZ
ZF=1
等于/为零转移
JNE/JNZ
ZF=0
不等于/非零转移有符
号数
条件
转移
指令
JO
OF=1
溢出转移
JNO
OF=0
无溢出转移
JS
SF=1
为负数转移
JNS
SF=0
为正数转移
JG/JNLE
存储任务寄存器
STR目的操作数
目的操作数←(TR)
保护属性检查指令
指令格式
功能
CLTS
清除机器状态字中任务转换标志
LAR目的操作数,源操作数
装入访问权限
LSL目的操作数,源操作数
装入段界限
VERR目的操作数
验证段的可读性
VERW目的操作数
验证段的可写性
APRL目的操作数,源操作数
调整选择符的特权级
其他Pentium指令
SETLE/SETNG
ZF=1或SF≠OF
小于或等于/不大于
表2.12标志位操作指令
指令名
指令格式
功能说明
清进位指令
CLC
清进位标志CF,即:CF←0
置进位指令
STC
置进位标志,即:CF←1
进位取反指令
CMC
进位标志取反,即:CF←CF
清方向标志指令
CLD
清方向标志(DF←0),使所有串指令的地址修改为增量
高于/不低于或等于
SETBE/SETNA
CF=1或ZF=1
低于或等于/不高于
SETE/SETZ
ZF=1
等于/为零
SETNE/SETNZ
ZF=0
不等于/非零
SETG/SETNLE
ZF=1或SF=OF
大于/不小于或等于
SETGE/SETNL
SF=OF
大于或等于/不小于
SETL/SETNGE
SF≠OF
小于/不大于或等于
32位通用寄存器←(DRn),n=0~7
读模型专用寄存器
RDMSR
EDX:EAX←(MSR), ECX指定寄存器号00H~13H
写模型专用寄存器
WRMSR
MSR←(EDX:EAX), ECX指定寄存器号00H~13H
装入机器状态字
LMSW源操作数
MSW←(源操作数)
存储机器状态字
SMSW目的操作数
目的操作数←(MSW)
若EAX=0H,则:EAX:EBX:ECX:EDX←厂商信息
若EAX=1H,则:EAX:EBX:ECX:EDX←CPU信息
读时间戳计数器
RDTSC
EDX:EAX←时间标记计数器
从SMM返回
RSM
从系统管理方式(SMM)返回原来的实模式或保护方式
CF=1
有进位/低于/不高于或等于
SETNC/SETAE/SETNB
CF=0
无进位/高于或等于/不低于
SETO
OF=1
溢出
SETNO
OF=0
无溢出
SETP/SETPE
PF=1
校验为偶
SETNP/SETPO
PF=0
校验为奇
SETS
SF=1
为负数
SETNS
SF=0
为正数
SETA/SETNBE
CF=ZF=0
表2.10条件转移指令
指令助记符
转移条件
含义
无符
号数
条件
转移
指令
JC
CF=1
有进位转移(与JB / JNAE重叠)
JNC
CF=0
无进位转移(与JAE / JNB重叠)
JP/JPE
PF=1
奇偶位为1转移
JNP/JPO
PF=0
奇偶位为0转移
JA/JNBE
CF=ZF=0
高于/不低于等于转移
JAE/JNB
CF=0
WAIT
使CPU处于等待状态,直到有外部中断请求时,退出等待状态,顺序执行下一条指令
ESC
交权给外部处理器
LOCK
LOCK是一条前缀指令,可加于任何指令的前面。用于产生总线封锁信号LOCK,以禁止其他总线主设备访问总线
空操作
NOP
完成一次空操作。仅影响(E)IP寄存器,对标志位无影响。
系统寄存器装入与存储指令
指令名
指令格式
功能
装入CR指令
MOV CRn,32位通用寄存器
CRn←(32位通用寄存器),n=0,2,3,4
存储CR指令
MOV 32位通用寄存器,CRn
32位通用寄存器←(CRn),n=0,2,3,4
装入DR指令
MOV DRn,32位通用寄存器
DRn←(32位通用寄存器)通用寄存器,DRn
ZF=0且SF=OF
大于/不小于等于转移
JGE/JNL
SF=OF
大于或等于/不小于转移
JL/JNGE
SF≠OF
小于/不大于等于转移
JLE/JNG
ZF=1或SF≠OF
小于或等于/不大于转移
JCXZ
(CX)=0
CX寄存器为0转移
表2.11按条件设置字节指令
指令助记符
设置条件
指令条件说明
SETC/SETB/SETNAE
相关文档
最新文档