2-4控制转移类指令与位操作指令(1)
微机原理习题课_1
提示:一个正数与负数相加,结果肯定不溢出
10
三、汇编指令 •汇编语言有三种基本语句:指令语句、伪指令语句、宏指令语句。 •指令语句=操作指令+操作数(可隐含) 汇编器如何找到操作数——寻址方式: (1)在数据存储器中,指令中如何提供操作数或操作数地址的方式。 (2)在程序存储器中,程序转移时需提供转移地址,这也称为寻址。
短标号,即位移量在-128~127的范围内。
注意:在编制大的循环程序时要注意跳转范围的限制问题,否则会出现以下的编译问题。
因此要求在编制程序时要做到短小精悍,简洁易读 提示:条件转移指令往往与逻辑指令,移位指令,CMP等指令相配合。
28
习题3.2
若WORD1及WORD2均为字变量,ADDITION为标号,请说明下列指令的错误之处:
12
例题 要点:理解各段与寄存器的概念,正确使用寻址方式。
例: (1)直接、间接、立即三种寻址方式的执行速度由快至慢依次为:
(2)下列指令中立操即作、数直在接代、码间段接中的是
A.MOV AL,25H
B.ADD AL,BH
C.CMP AX,[BP]
D.INC DS:[BP]
A
13
要点1:寄存器不能随便使用
若已知下一条指令到所跳转地址的相对位移量–128~+127,则可用标号SHORT
➢可以不定义SHORT NEXT:
… JMP NEXT
➢必须定义SHORT JMP SHORT NEXT …
NEXT: …
24
③段内间接转移:16位相对位移量 JMP reg或JMP mem MOV BX, 1000H JMP BX JMP WORD PTR [BX+20H] ④段间直接转移:32位相对位移量(CS:IP) JMP FAR PTR label, ⑤段间间接转移:32位相对位移量(CS:IP), JMP mem MOV SI, 0100H JMP DWORD PTR [SI]
80C51单片机指令系统操作码助记符英语原文和汉语含义
80C51单片机指令系统操作码助记符按功能可分为五大类:对每个助记符给出英语原文和汉语含义。
1)数据传送类指令(7种助记符)MOV:Move,对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送。
MOVC:Move Code,读取程序存储器数据表格的数据传送。
MOVX:Move External RAM,对外部RAM的数据传送。
XCH:Exchange,字节交换。
XCHD:Exchange low-order Digit,低半字节交换。
PUSH:Push into Stack,入栈。
POP:Pop from Stack,出栈。
2)算术运算类指令(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,除法。
3)逻辑运算类指令(10种助记符)ANL:And Logic,逻辑与。
ORL:OR Logic,逻辑或。
XRL:Exclusive-OR Logic,逻辑异或。
CLR:Clear,清0。
CPL:Complement,取反。
RL:Rotate left,循环左移。
RLC:Rotate Left through the Carry flag,带进位循环左移。
RR:Rotate Right,循环右移。
RRC:Rotate Right through the Carry flag,带进位循环右移。
SWAP:Swap,低4位与高4位交换。
4)控制转移类指令(18种助记符)ACALL:Absolute subroutine Call,子程序绝对调用。
LCALL:Long subroutine Call,子程序长调用。
MCS-51指令系统
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
控制转移类指令.ppt
(IP)←标号的偏移地址 (CS)←标号的段地址 如果标号为本代码段内定义的标号,则该指令同JMP NEAR PTR lable。 说明: ① 也可直接使用数值表达式来给出目标地址,这时可省略FAR属性说明。 JMP 2000H:0100H ② 机器指令代码直接提供了转向地址的段地址和偏移地址,属于直接转 移方式。 ③ 使用绝对地址来表示转移目标地址,因此属于绝对转移。
(2)条件转移指令分为以下四类。
① 单标志位测试转移指令 通过测试单个标志位的状态来决定是否转移的指令。 例:
ADD AX,BX JC LAB1 ;如果 CF = 1,转至 LAB1
CMP CX,DX JE LAB2 ;如果 ZF = 1,转至 LAB2
② 无符号数比较转移指令
该类指令将参与比较的两个数据看作是无符号数,并根据比较运算后 标志位CF和ZF的状态来判断它们之间的大小关系,从而决定是否转移。 例:
说明:
① 8位位移量是带符号数,因此跳转的范围为( -128 --- +127 )。
② 指令中的转移目标地址用相对于当前IP所指向指令的相对位移量来 表示,因此属于相对转移。
例1:
0000H EB 04 0002H B0 01 0004H B3 02 0006H B1 03
┇
例2:
0000H B0 01 0002H B3 02 0004H B1 03 0006H EB F8 0008H B2 04
JBE/JNA 标 CF=1或ZF=1 号
JG/JNLE 标 SF⊕OF=0且
号
ZF=0
带符号数 比较转移
JGE/JNL 号
单片机汇编指令
内部 RAM
R0
3 AH 6 5H 3 AH
A
6 5H
图2.4 寄存器间接寻址示意图
5. 变址寻址 变址寻址是指将基址寄存器与变址寄存器的内容相加,结 果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变 址寄存器。该类寻址方式主要用于查表操作。
例如,指令MOVC A,@A+DPTR执行的操作是将累加器
8051
开始 55H送P1口 延时0.3秒 AAH送P1口 延时0.3秒
流水式彩灯控制程序框图
控制程序 ORG 0000H LOOP: MOV P1,#55H ;将立即数55H送P1端口 LCALL TIME ;调延时子程序TIME MOV P1,#0AAH ;将立即数AAH送P1端口 LCALL TIME ;调延时子程序TIME SJMP LOOP ;转移到LOOP TIME: MOV R6,#200 ;延时子程序TIME TIME1:MOV R7,#200 TIME2:NOP NOP NOP DJNZ R7,TIME2 DJNZ R6,TIME1 RET END
CPL
RL
A
A
;将累加器A中的内容取反
;将累加器A的内容循环左移
内部RAM
R1 A 2 0H
2 0H
0 9H 0 1
RS1 RS0
图2.1 寄存器寻址示意图
2. 直接寻址 直接寻址是指把存放操作数的内存单元的地址直接写在
指令中。在MCS-51单片机中,可以直接寻址的存储器主要
有内部RAM区和特殊功能寄存器SFR区。 例如,指令MOV A,3AH执行的操作是将内部RAM 中 地址为3AH的单元内容传送到累加器A中,其操作数3AH就 是存放数据的单元地址,因此该指令是直接寻址。
汇编语言2-4逻辑移位指令
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
控制转移类指令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范围内。
《单片机原理及应用》课程标准
《单片机原理及应用》课程标准一、学习领域(课程)综述(一)学习领域定位“单片机原理及应用”学习领域由岗位群的“电子产品技术支持岗位”行动领域转化而来,是构成应用电子技术专业框架教学计划的专业学习领域之一,其定位见表一:表一学习领域定位(二)设计思路本学习领域注重培养分析问题、解决问题的能力、强化学生动手实践能力,遵循学生认知规律,紧密结合应用电子专业的发展需要,为将来从事应用电子产品的设计、检测奠定坚实的基础。
将本课程的教学活动分析设计成若干项目或工作情景,以项目为单位组织教学、并以典型设备为载体,通过具体案例,按单片机项目实施的顺序逐步展开,让学生在掌握技能的同时,引出相关专业理论知识,使学生在技术训练过程中加深对专业知识、技能的理解和应用、培养学生的综合职业能力,满足学生职业生涯发展的需要。
本课程在内容组织形式上强调了学生的主体性学习,在每个项目实施前,先提出学习目标,再进行任务分析,学生针对项目的各项任务进行相关知识的学习,并通过多种实践活动实施项目以实现学习目标。
最后根据多元化的评分标准进行自我评价。
(三)学习领域(课程)目标1.方法能力目标:能根据项目任务或工作,制订项目完成工作计划;学会自我学习、收集和检索信息、查阅技术资料;在单片机应用程序调试过程中会选择各种仪器仪表;学会单片机应用程序KEIL的仿真调试方法;学会学习和工作的方法,勤于思考、做事认真的良好作风;培养学生一丝不苟、刻苦钻研的职业道德;学会在产品制作过程中进行技术指导、质量管理和成本核算方法。
2.社会能力目标:建立团结协作的精神,能与人沟通和合作完成工作任务;养成勇于创新、敬业乐业的工作作风;形成清晰的逻辑思维意识,正确辨别事物的真假;了解电子行业技术应用的发展前景,拓宽产品开发的思路;掌握产品生产工艺要求,培养工作的质量意识、安全意识;具有较强的社会责任感,为祖国发展强大贡献力量的责任意识;积累丰富的工作经验。
3.专业(职业)能力目标:能熟悉和了解不同厂商、不同型号单片机器件并掌握其性能特点;能读懂单片机应用系统电路原理,包括复位电路、时钟电路、最小单片机应用系统电路,掌握各I/O的区别及与外围电路连接的方法,区分辩别单片机的地址线、数据线及控制线,熟练掌握单片机拥有的系统资源及资源利用,掌握汇编语言的指令格式、寻址方式,学会汇编语言的程序编写,学会简单的应用系统设计;能识别各种外围元器件并进行元器件焊接、KEIL仿真调试;能根据应用系统原理图编写控制程序;能在单片机系统调试和维修过程中,通过工程计算和理论分析,判断故障点和提供解决问题的途径;会使用常用仪器仪表如万用表、示波器、频率计对单片机应用系统进行判断分析、调试,直至调试成功;掌握程序流程图的画法、子程序的编写方法、中断程序的编写方法、子程序和中断调用、伪指令的熟练使用、熟练掌握顺序程序结构、循环程序结构、分支程序结构,掌握仿真器的使用及结合软硬件调试程序。
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 A,R7
RL A ;键值2倍,AJMP指令为双字节指令
MOV DPTR,#KEYG
JMP @A+DPTR
•••
KEYG: AJMP KEY0
KEYG+2: AJMP KEY1
•••
KEYG+30: AJMP KEY15
2.条件转移指令
条件转移指令是当满足给定条件时,程序转移到 目标地址去执行;条件不满足则顺序执行下一条 指令
用在中断服务程序的末尾 RETI与RET指令区别: RETI在返回的同
时同时释放中断逻辑
CJNE @Ri,#data,rel;
(PC)←(PC)+3 若data<((Ri)),(PC)←(PC)+rel且Cy←0; 若data>((Ri)),(PC)←(PC)+rel且Cy←1; 若data=((Ri)),顺序执行且Cy←0
例: MOV A, #40H
MOV R0,#10H
DJNZ direct,rel ;
(PC)←(PC)+3,(direct)←(direct)-1 当(diect)≠0时,(PC)←(PC)+rel; 当(direct)=0时,程序顺序执行。
注:操作数的内容先减1再判零,不等于0时转移
3.子程序调用
本指令完成两项操作:①把PC当前值压入堆栈;② 把子程序入口地址送PC。
⑴长调用指令 LCALL addr16 ;
(PC)←(PC)+3
(SP)←(SP)+1,((SP))←(PC)7~0;
(SP)←(SP)+1,((SP))←(PC)15~8;Biblioteka PC15~0←addr16
单片机原理及应用教案-第4章
第4课教学内容:2.4.2数据传送指令及要点分析2.4.3算术运算类指令及要点分析2.4.4逻辑操作与移位指令及要点分析2.4.5控制转移指令及其偏移量的计算2.4.6位操作指令2.4.7对指令的进一步说明教学目标:了解:单片机指令的分类与格式。
掌握:单片机指令的寻址方式,内部数据传送指令特点与应用,算术运算类指令及要点,逻辑操作与移位指令及要点,程序转移指令的相对偏移量计算,位操作指令的特点,PSW标志位的作用。
课时安排:3 课时教学重点:各类指令特点与应用教学提示:一、重点内容与要点分析1.数据传送类指令的共性:1)操作:把源操作数传送到目的操作数,指令执行后,源操作数不改变,目的操作数修改为源操作数。
2)若要求在进行数据传送时,不丢失目的操作数,则可以用交换型的传送指令。
3)数据传送指令不影响标志C、AC和OV,不包括奇偶标志P。
对于P一般不加说明。
POP PSW 或 MOV PSW,#(x)可能使某些标志位发生变化。
助记符有:MOV,MOVX,MOVC,XCH,XCHD,SWAP,POP,PUSH 8种。
源操作数可为:寄存器、寄存器间接、直接、立即、寄存器基址加变址 5种寻址方法;目的操作数可为:寄存器、寄存器间接、直接 3种寻址方法。
例1:设内部RAM的(30H)=40H,(40H)=10H ,(10H)=00H ,端口P1上的内容为11001010B(后缀B表示二进制数),分析下面7条指令分别属于上述16条指令中的哪一条,操作数采用的寻址方法,以及指令执行后各单元及寄存器、端口的内容。
MOV R0,#30H ;属于第8条(寄存器寻址、立即数寻址)(R0)=#30HMOV A,@R0 ;3条(寄存器寻址、寄存器间接寻址)(A)=#40HMOV R1, A ;2条(寄存器寻址、寄存器寻址)(R1)=#40HMOV B, @R1 ;13条(直接寻址、寄存器间接寻址)(B)=#10HMOV @R1, P1 ;14条(寄存器间接寻址,直接寻址)(40H)=#11001010B MOV P2, P1 ;15条(直接寻址、直接寻址)(P2)=#11001010B MOV 10H, #20H ;10条(直接寻址、立即寻址)(10H)=#20H指令执行以后,P1口的内容均为11001010B,其它内容如上。
《单片机技术与应用》课程标准
《单片机技术与应用》课程标准一、课程性质与任务本课程是中等职业教育电子技术应用专业必修的一门专业基础平台课程,是在《电子技术基础与技能》课程基础上开设的一门实践性较强的核心课程,其任务是培养学生具备单片机系统安装、调试、开发与应用能力,使学生能够掌握以MCS-51系列为主的单片机的基本结构、指令系统、存储系统及输入输出接口电路、中断系统、系统扩展等方面知识;了解单片机组成和工作原理,具备一定的汇编语言程序设计能力。
以及观察和分析问题、团队协助、沟通表达等能力和综合素质。
本课程的也是全面贯彻党的教育方针,落实立德树人根本任务,体现思政功能的“思政”课程;通过本课程学习,培养学生适应社会主义现代化建设德、智、体、美、劳全面发展的知识能力需要,了解单片机技术的特点、现状和未来发展趋势;理解单片机的工作原理;熟悉MCS-51单片机芯片的基本功能和典型应用实例,知道常用指令、寻址方式、接口的特点及用途,具有安全生产、节能环保和产品质量等职业意识和良好的工作方法、工作作风和职业道德的高素质劳动者。
二、本课程与其他课程的关系1.与前导课程的联系:学生在学习本课程前,具备基本电工基础、模拟电路、数字电路的分析基础,对计算机应用系统应具有一定的了解,通过本课程的学习,要求熟练掌握典型单片机系统的设计方法,能利用MCS-51单片机组成实际系统,具备一定的硬件编译能力。
2.与后续课程的联系:使学生通过本课程的学习,使学生掌握51系列单片机设计小型产品的设计能力,为后续《传感器技术》《Proteus仿真》等课程打下良好基础。
三、课程目标(一)思政目标1.坚定社会主义信念,坚持党的领导,自觉践行社会主义核心价值观;2.具有勤俭节约,科学用电,求实创新,合理消费的观念和意识;3.具有严谨求实,实事求是的科学精神,相信科学、热爱科学;4.具有良好安全意识,质量意识,树立安全第一、质量第一的职业意识;5.具有积极的学习和生活态度,自信、乐观,并积极进取,敢于面对挫折;6.建立为人民服务、为社会发展服务、为实现中华民族伟大复兴的努力奋斗的理想和信念。
控制转移指令
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 结果 目标地址
MCS-51单片机的指令集(分类)
子程序返回
1
24
RETI
中断返回
1
24
AJMP addr11
绝对短转移
2
24
LJMP addr16
长转移
3
24
SJMP rel
相对转移
2
24
JMP @A+DPTR
相对于DPTR的间接转移
1
24
JZ rel
累加器为零转移
2
24
JNZ rel
累加器非零转移
2
24
CJNE A,direct,rel
累加器与直接地址单元比较,不等则转移
2
12
MOV direct,Rn
寄存器内容送入直接地址单元
2
24
MOV direct,direct
直接地址单元中的数据送入直接地址单元
3
24
MOV direct,@Ri
间接RAM中的数据送入直接地址单元
2
24
MOV direct,#data8
8位立即数送入直接地址单元
3
24
MOV @Ri,A
累加器内容送入间接RAM单元
DEC @Ri
间接RAM内容减1
1
12
MUL A,B
A乘以B
1
48
DIV A,B
A除以B
1
48
DA A
累加器进行十进制转换
1
12
3、逻辑操作类指令
助记符
功能说明
字节数
振荡周期
ANL A,Rn
累加器与寄存器相“与”
1
12
ANL A,direct
累加器与直接地址单元相“与”
mcs-51指令系统
0000H 0700H …… …… ACALL Addr7-0 …… …… 2KB 2KB
一2KB范围内
ORG 07FFH
PC
07FFH
0801H 0810H 0FFFH 1000H 1100H
ACALL 0700H
ACALL 0810H ORG 1100H ACALL 1700H ACALL 0FFFH
ORL 对某些位置位 ORL P1,#00110010B ;P1口的1,4,5位置为1
A的低3 位送P1口,P1口高5位不变 ANL A,#O7H ANL P1,#0F8H ORL P1,A
XRL 对某些位取反 XRL P1,#00110001B ;P1口的0,4,5位取反
4.5 控制转移指令
00010010 2 addr 8-15 addr 0-7 (SP)=#07H SUBRTN的实际地 (PC)#0123H+#3=#0126H (SP)#07H+#1=#08H ((SP))=(08H)#26H (SP)#08H+#1=#09H ((SP))=(09H)(01H) (PC)#5678H
转移指令通过பைடு நூலகம்写PC的当前值,从而改变CPU执行 程序的顺序,使程序发生跳转。 按转移条件分类:
1)无条件转移:
执行无条件转移指令,程序无条件转移到指定处。 2)条件转移: 指令中给出转移条件,执行指令时,先测试条件,若 满足条件,则程序収生转移,否则,仍顺序执行程序。
4.5.1无条件转移指令
4.3 算术运算指令
例:被乘数3个字节,存在42H,41H,40H单元,乘数存在
R4中,将积存放到53H,52H,51H,50H中。
指令系统
19
2.1 数据传送指令(29条) 数据传送指令(29条 ——16位数据传送指令(1条) 16位数据传送指令(
MOV DPTR,#data16
——外部数据传送指令(4条) 外部数据传送指令(4条 数据传送指令(4
MOVX >,<源操作数> <目的操作数>,< >,< >
A MOVX
A
@DPTR , @DPTR @Ri @Ri
17
义
表示当前选定寄存器组的工作寄存器R 表示当前选定寄存器组的工作寄存器R0~R7
#data16 表示16位立即数,即0000H~FFFFH 16位立即数 #data16 表示16位立即数, 0000H
2、MCS-51的指令 MCS-51的指令
2.1 2.2 2.3 2.4 2.5 2.6 数据传送指令(29条) 数据传送指令(29条 算术运算指令(24条) 算术运算指令(24条 逻辑运算指令(24条 逻辑运算指令(24条) 控制转移指令(17条 控制转移指令(17条) 位操作指令(17条 位操作指令(17条) 常用伪指令(17条 常用伪指令(17条)
18
2.1 数据传送指令(29条) 数据传送指令(29条 ——8位数据传送指令(15条) 数据传送指令(15 (15条
MOV >,<源操作数> <目的操作数>,< >,< > A Rn MOV A Rn MOV A,#20H ,
目的地址
A
源地址
数 据
20H
direct1 , direct2 @Ri @Ri #data
PUSH direct POP direct
2)低半字节交换指令(1条 2)低半字节交换指令(1条) 低半字节交换指令(1
单片机常用指令
单片机常用指令单片机是一种集成在一个芯片上的微型计算机,广泛应用于各种电子设备中。
要让单片机按照我们的意愿工作,就需要给它下达各种指令。
下面就来介绍一些单片机常用的指令。
一、数据传送指令这一类指令用于在单片机内部的寄存器、存储器之间进行数据的传输。
比如“MOV”指令,它可以将一个数据从源操作数传送到目的操作数。
例如“MOV A, 50H”,就是把十六进制数 50H 传送到累加器 A 中。
“MOVX”指令则用于在单片机与外部数据存储器之间进行数据传送。
比如“MOVX A, @DPTR”,可以从外部数据存储器中读取数据到累加器 A 。
二、算术运算指令用于执行加、减、乘、除等算术运算。
“ADD”指令用于加法运算,“SUBB”指令用于带借位的减法运算。
例如“ADD A, R0”,将累加器 A 的值和寄存器 R0 的值相加,结果存放在累加器 A 中。
“MUL”指令用于乘法运算,它将累加器 A 和寄存器 B 中的两个 8 位无符号数相乘,结果的低 8 位存放在累加器 A 中,高 8 位存放在寄存器 B 中。
三、逻辑运算指令进行与、或、异或等逻辑操作。
“ANL”指令执行逻辑与操作,“ORL”指令执行逻辑或操作,“XRL”指令执行逻辑异或操作。
例如“ANL A, 0FH”,将累加器 A 的值和十六进制数 0FH 进行逻辑与运算,结果存放在累加器 A 中。
四、控制转移指令这类指令用于改变程序的执行流程。
“JMP”指令用于无条件跳转,直接跳转到指定的地址去执行程序。
例如“JMP 1000H”,程序将跳转到地址为 1000H 的地方继续执行。
“CJNE”指令用于比较两个操作数,如果不相等则跳转。
比如“CJNE A, 50H, LOOP”,如果累加器 A 的值不等于 50H ,就跳转到标号 LOOP 处执行。
“LCALL”和“ACALL”指令用于调用子程序。
“LCALL”可以调用64KB 范围内的子程序,而“ACALL”只能调用 2KB 范围内的子程序。
程序控制类指令
程序控制类指令
1 段内直接短转移
格式:JMP SHORT OPR 功能:SHORT表明程序转移的目标地 址与JMP指令在同一个代码段内,操作数 可以是目标地址的标号或指定一个8位的 偏移量,转 移 范 围 为 - 128 ~ 127 字 节。 SHORT可省略。
指令执行后,CS的内容不变,IP的值 (即JMP指令的下一条指令)与8位偏移量 之和被赋予当前的IP。
2 段内直接近转移
程序控制类指令
格式:JMP NEAR PTR OPR 功能:NEAR PTR表明程序转移的目标地址与JMP指令在同一个代码段内,操作数可以是目标地址的 标号或指定一个16位的偏移量,转移范围为-32768~32767字节。NEAR PTR可省略。
指令执行后,CS的内容不变,IP的值(即JMP指令的下一条指令)与16位偏移量之和被赋予当前的IP。
在执行子程序调用指令时
首先要将CALL指令的下一条指令 的地址压入堆栈保护起来,作为子
3 段内间接转移
格式:JMP WORD PTR OPR 功能:程序转移的目标地址与JMP指令在同一个代码段内,指令中的操作数是16位寄存器或存储器单 元,段内转移的偏移地址存放在16位寄存器或存储器中连续两个字节的存储单元中。使用寄存器作为操作 数时,WORD PTR省略,如JMP BX。
指令执行后,CS的内容不变,寄存器中的内容或存储器中指定地址开始的连续两个字节单元的内容被 赋予当前的IP。
条件转移指令
单个标志位的状态作 为转移条件的转移指
令
两个无符号数的比较 结果作为转移条件的
转移指令
两个带符号数的比较 结果作为转移条件的
转移指令
程序控制类指令
条件转移指令
程序控制类指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该如何修改?
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令 (2)条件转移类指令 判断A内容是否为0 ①判断A内容是否为0转移指令 (A)=0,则转移,否则顺序执行; JZ rel ;若(A)=0,则转移,否则顺序执行; JNZ rel ;若(A)≠0,则转移,否则顺序执行; (A)≠ 则转移,否则顺序执行; 例如: 例如:MOV A,#0 MOV R0,#0 JZ LAB2 LAB1: MOV R0,#0FFH LAB2: AJMP $ JNZ类似 不再举例。 类似, JNZ类似,不再举例。 比较转移指令(会影响到C 在此不作展开) ②比较转移指令(会影响到C位,在此不作展开) (A)=data,则顺序执行, CJNE A,#data,rel ;若(A)=data,则顺序执行,否则转移 (A)=(direct),则顺序执行, CJNE A,direct,rel ;若(A)=(direct),则顺序执行,否则转移 CJNE Rn,#data,rel ;若(Rn)=data,则顺序执行,否则转移 (Rn)=data,则顺序执行, ((Ri))=data,,则顺序执行, ,,则顺序执行 CJNE @Ri,#data,rel ;若((Ri))=data,,则顺序执行,否则转移
2011-11-12
结束! 结束!
思考:若要求将上次课我们 实现的单向流水灯改为双向 流水灯(即来回跑动),该 如何修改程序?
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令
作业: 作业: 设初始(30H)=FEH 执行下面程序段后, (30H)=FEH, (1)设初始(30H)=FEH,执行下面程序段后,(30H)=? MOV 30H,#0FEH MOV 31H,#5H MOV A,30H LOOP:RR A DJNZ 31H,LOOP MOV 30H,A 设初始(A)=37D (30H)=23D,执行下面程序段后, (A)=37D, (2)设初始(A)=37D,(30H)=23D,执行下面程序段后,(A)=? LOOP:DEC A INC 30H CJNE A,30H,LOOP MOV R0,A
任务2-4 控制转移类指令与位操作指令(1)
任务2 任务2-4 控制转移类指令与位操作指令
子任务2 单灯闪烁5 子任务2-4-1 单灯闪烁5次 1、任务要求:用单片机控制一个LED灯的亮灭,反复五次后保持常 任务要求:用单片机控制一个LED灯的亮灭, LED灯的亮灭 亮状态。 亮状态。 相关知识: 2、相关知识: 1)转移类指令 1)转移类指令 到上一次课为止,我们所学的单片机指令都是顺序执行指令, 到上一次课为止,我们所学的单片机指令都是顺序执行指令,也就是 说,之前我们编制的所有单片机汇编程序都是按照先后顺序一条一条 地逐行执行的。今天我们要给大家介绍转移类指令,有了转移类指令, 地逐行执行的。今天我们要给大家介绍转移类指令,有了转移类指令, 单片机执行程序时,就可以在该类指令的作用下, 单片机执行程序时,就可以在该类指令的作用下,根据我们的需要使 程序执行到某一行指令时跳至其他行。 程序执行到某一行指令时跳至其他行。 (1)无条件转移类指令 该类指令肯定会使单片机发生跳转, 该类指令肯定会使单片机发生跳转,不需要任何条件 ①AJMP addr11 ;短转移类指令 ②LJMP addr16 ;长转移类指令 ③SJMP rel ;相对转移类指令
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令
③例如:;主程序 例如: MOV P1,#0 ACALL DELAY MOV P1,#0FFH AJMP $ 子程序, ;子程序,实现延时功能 DELAY: MOV R0,#0FFH LOOP1: MOV R1,#0FFH DJNZ R1,$ DJNZ R0,LOOP1 RET
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令 (3)调用与返回指令 (3)调用与返回指令 回忆C语言编写程序时,对于反复使用的模块,为了让程序更简洁, 回忆C语言编写程序时,对于反复使用的模块,为了让程序更简洁, 我们往往将其编制为函数,在需要使用的时候进行调用。 我们往往将其编制为函数,在需要使用的时候进行调用。汇编语言中 也有类似功能,对于反复使用的模块,我们可以将其编制为子程序, 也有类似功能,对于反复使用的模块,我们可以将其编制为子程序, 在需要使用的时候进行调用。 在需要使用的时候进行调用。 ①调用指令 LCALL ;长调用指令 ACALL ;短调用指令 ②返回指令 RET ;返回指令
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令
区别: 区别: ①AJMP指令能转移的范围只能在2KB范围之内(0000H~07FFH、0800H~0FFFH…),双 AJMP指令能转移的范围只能在2KB范围之内(0000H~07FFH、0800H~0FFFH…),双 指令能转移的范围只能在2KB范围之内 字节指令; 字节指令; LJMP指令能转移的范围能达到64KB(0000H~FFFFH) 即整个程序存储器寻址空间, 指令能转移的范围能达到64KB(0000H~FFFFH), ②LJMP指令能转移的范围能达到64KB(0000H~FFFFH),即整个程序存储器寻址空间, 三字节指令; 三字节指令; SJMP指令能转移的范围只有256B(以当前地址为基点, 128~+127),双字节指令。 指令能转移的范围只有256B ),双字节指令 ③SJMP指令能转移的范围只有256B(以当前地址为基点,-128~+127),双字节指令。 例如: 例如: ① AJMP LAB MOV P2,#01H LAB:MOV P2,#03H ② LJMP LAB MOV P2,#01H LAB:MOV P2,#03H ③ SJMP LAB MOV P2,#01H LAB:MOV P2,#03H
2011-11-12
任务2 任务2-4 控:MOV A,#0 A,#0,LAB1 CJNE A,#0,LAB1 MOV R0,#0 AJMP LAB2 LAB1: MOV R0,#0FFH LAB2: AJMP $ 其余三条指令类似,不再举例。 其余三条指令类似,不再举例。 ③循环转移指令 ;(Rn)←(Rn)(Rn)≠0则转移, ≠0则转移 DJNZ Rn,rel ;(Rn)←(Rn)-1,若(Rn)≠0则转移,否则顺序执行 DJNZ direct,rel ;(direct)←(direct)-1,若(Rn)≠0则转移,否 ;(direct)←(direct)(Rn)≠0则转移, ≠0则转移 则 ;顺序执行
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令
④JMP @A+DPTR ;间接转移指令 类似于查表指令"MOVC A,@A+DPTR",指令将由"基址"(DPTR的内容)加 类似于查表指令"MOVC A,@A+DPTR",指令将由"基址"(DPTR的内容) "(DPTR的内容 偏移量"(A的内容)后的地址作为程序转移的地址。 "(A的内容 上"偏移量"(A的内容)后的地址作为程序转移的地址。 例如: ;传递表头(基址,或者说第一条分支地址) 例如:MOV DPTR,#TAB ;将要执行分支的序号传递给A MOV A,R0 MOV B,#2 ;因为AJMP为双字节指令,因此偏移量必须是2的倍数 MUL AB ;转移 JMP A,@A+DPTR ;分支0 TAB: AJMP S0 ;分支1 AJMP S1 ;分支2 AJMP S2 … 思考:如果分支0、1、2…所用的指令改为LJMP,则“MOV B,#2”应 B,#2”
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令 ;延时子程序 DELAY:MOV R1,#0FFH LOOP1:MOV R2,#0FFH DJNZ R2,$ DJNZ R1,LOOP1 RET ;结束 END
(2)软件程序 ORG 0000H ;主程序 MOV 30H,#5 LOOP:MOV P2,#01H ACALL DELAY MOV P2,#0 ACALL DELAY DJNZ 30H,LOOP MOV P2,#01H AJMP $
2011-11-12
任务2 任务2-4 控制转移类指令与位操作指令
3、任务解析 与上次课流水灯实现方式不同, 与上次课流水灯实现方式不同, 流水灯反复运行, 流水灯反复运行,因此只需使 用无条件转移指令"AJMP 用无条件转移指令" address11"指令即可 指令即可; address11"指令即可;但本次 任务, 任务,对反复执行的次数有了 限定, 限定,因此这里必须使用相对 较复杂的条件转移指令"DJNZ 较复杂的条件转移指令"DJNZ direct(或者Rn),rel"。 direct(或者Rn),rel"。 或者Rn),rel" (1)硬件电路