单片机讲义课件第三章
单片机 第三章课件
第六讲课题:第三章MCS-51指令系统一教学目的:了解指令系统概述、熟练掌握数据传送指令教学难点、重点:指令的用法作业:实验预习I、课程复习、引入单片机硬件方面的内容告一段落,以下开始学习指令系统II、本课内容第三章MCS-51指令系统3.1概述●计算机能直接识别的只能是由0和1编码组成的指令,这种编码称为机器码或称为机器语言指令●由机器码编制的计算机能识别和执行的程序称为目标程序。
●每一条指令包含两个基本部分:操作码和操作数。
操作码表明指令要执行的操作性质;操作数说明参与操作的数据或数据所存放的地址。
●MCS-51机器语言指令有单字节指令,双字节指令和三字节指令三种格式1.单字节指令单字节指令格式由8位二进制编码表示,有两种形式:(1)8位编码全表示操作码。
例:NOP(2)8位编码中包含操作码和寄存器编码,例如:MOV A ,Rn 11101xxx xxx=0~72.双字节指令MOV A, # DATA 74H DATA 三字节指令三字节指令格式中第一个字节为操作码,其后两个字节为操作数。
例如:MOV direct, #DATA 75H direct DATA一条汇编语言指令中最多包含 4 个区段, 如下所示:[标号:]操作码助记符[操作数][,操作数][;注释]例:START: MOV A, #0F0H ;将F0H赋值给A寄存器4 个区段之间要用分隔符分开:标号与操作码之间用“:”隔开,操作码与操作数之间用空格隔开,操作数与注释之间用“;”隔开, 如果操作数有两个以上,则在操作数之间要用逗号“,”隔开(乘法指令和除法指令除外)。
注意:所有标点、空格都不能是中文标点!::;;,,3.2 寻址方式●有操作数的指令中,操作数可能在指令、寄存器、存储器、I/O接口中●地址:寄存器,存储器和I/O接口进行的编号寄存器一般可以用寄存器名表达I/O接口和程序存储器以及外部数据存储器用16位地址表达内部RAM用8位地址表达●指令中所规定的寻找操作地址的方式称为寻址方式。
(单片机完整课件PPT)第三章
寻址范围包括:
(1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位
可寻址位在指令中有如下4种的表示方法:
a. 直接使用位地址。例如PSW.5的位地址为0D5H。
b. 位名称的表示方法。例如:PSW.5是 F0 标志位,可使 用F0表示该位。 c.单元地址加位数的表示方法。例如 :(0D0H).5。 d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。
课堂练习:
指出下列指令中划线的操作数的寻址方式: Mov r0,#60h Mov a,30h Mov a, @r0 Movc a, @a+dptr Cjne a,#00h,one Cpl c Mov c,30h
如: MOV
A,Rn
;(Rn)→A,n=0~7
表示把寄存器Rn的内容传送给累加器A
寻址范围:ACC,B,DPTR,PSW,R0~R7,C
三、存储器寻址 寻址空间:64K 外RAM、64K ROM、128B 内RAM
1.直接寻址方式
操作数直接以单元地址的形式给出: MOV A,40H 寻址范围:内部RAM的256个单元 2.寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 如: MOV A,@Ri ;i=0或1
单片机原理与应用技术
厦门理工学院电子与电气工程系 陈志英
第3章 单片机汇编语言编程技术
机器语言:是计算机可以识别和直接执行的语言,它是由一 组二进制代码组成。 汇编语言:是用助记符代替机器语言的操作码,用16进制 数代替二进制代码。 高级语言:是采用类似自然语言并与具体计算机类型基本无
单片机第三章课件
一、程序设计概述
(一)程序设计语言 1.机器语言 机器语言是用机器码编写程序。能被计算机直接识别 和执行。
2.汇编语言 汇编语言是用助记符编写程序。
汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把 源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称 为汇编。汇编有人工汇编和计算机汇编两种方法。
பைடு நூலகம்
ORG 0000H MOV A,R1 MOV B,A MUL AB CLR C SUBB A,R2 MOV R4,A MOV A,B SUBB A,#00H MOV R5,A SJMP $ END
【例3-5】编写拆字程序。 将MCS—51片内RAM中20H单元中的高半字节送21H单元 的低半字节,低半字节送22H单元的低半字节,两个单元的 高半字节为0。 程序如下: MOV A,20H SWAP A ANL A,#0FH MOV 21H,A MOV A,20H ANL A,#0FH MOV 22H, A
课堂练习: 1.编写拼字程序。将8051片内RAM50H单元中的高半字节和 51H单元的低半字节拼成一个数,送52H单元。
【例3-6】编写查表程序。 将十六进制数转换为ASCII码。设1位十六进制数存在R0寄 存器的低4位,转换后的ASCII码仍送回R0中。 解: 待转换的十六进制数为0~F。根据ASCII码表可知,0~9 的ASCII码为30H~39H,A~F的ASCII码为41H~46H。将 以上ASCII码值列成表格。
三、分支结构程序设计 在程序设计中,经常需要计算机对某情况进行判断,然后根 据判断的结果选择程序执行的流向,这就是分支程序。 在汇编语言程序中,通常利用条件转移指令形成不同的程序 分支。 1.单分支程序 【例3-7】 在片内RAM 30H单元中存有一个带符号数,试 判断该数的正负性,若为正数,将6EH位清0;若为负数, 将6EH位置1。
单片机PPT第三章 (1)
单片机技术及应用
DELAY:MOV R0,#20 ; 1周期 D1: MOV R1,#20 ;1周期 DJNZ R1, $ ;2周期 DJNZ R0,D1 ;2周期 RET
单片机技术及应用
5. 调用指令
1) 绝对调用指令
• ACALL addr11 • 这条指令无条件地调用入口地址指定的子程序。指令 执行时PC加2,获得下一条指令的地址,并把这16位 地址压入堆栈,栈指针加2。然后把指令中的a10~a0
单片机技术及应用
3.2.6 位寻址
• 位寻址方式是指将要访问的数据是一个单独的位。
下面介绍几个例子表示几种规定位的方法。
• SETB 8EH
SETB ET1
;对位地址8EH置位
;置预先定义了的位地址ET1(定时器
T1允许位)
SETB 0A8H.3 ;置A8H 单元的位3
单片机技术及应用
单片机技术及应用
• 注: (70H)表示地址70H里的内容
单片机技术及应用
• 3.2.2 立即数寻址
• 立即数寻址方式是指令操作码后面字节的内容就是
操作数本身。汇编指令中,在一个数的前面冠以“#”
符号作前缀,就表示该数为立即数寻址。
例如:机器码 助 记 符 注释
74 5F
MOV A,#5FH
;5FH→A
• 该指令功能是将立即数5FH送入累加器A。
伪指令 并不算可执行程序的一部分,所 以不会被汇编器汇编,也不生成执行代码, 但却告知汇编器一些信息。如常用的伪指
令ORG告诉汇编器程序的起始地址、伪指
令END表明汇编程序的结束。
18
单片机技术及应用
1. ORG(Origin,起点) • ORG伪指令总是出现在每段源程序或数据块的开 始,它指明此语句后面的程序或数据块的起始地
单片机课件第3章(1)PPT课件
精选PPT课件
3
华中科技大学文华学院
第3章 51系列单片机汇编语言程序设计
3.1 概述 3.2 程序设计基本方法 3.3 子程序设计 3.4 典型程序设计举例
精选PPT课件
4
华中科技大学文华学院
彩灯循环设计
概述
精选PPT课件
5
华中科技大学文华学院
概述
ORG 0000H MAIN: MOV P1, #80H ;D7发光
MOV P1, #40H ;D6发光
MOV P1, #20H ;D5发光
MOV P1, #10H ;D4发光
MOV P1, #08H ;D3发光
MOV P1, #04H ;D2发光
MOV P1, #02H ;D1发光
MOV P1, #01H ;D0发光
SJMP MAIN
;循环
精选PPT课件
6
华中科技大学文华学院
〔例1〕 设变量X存放在外部RAM的2000H,与内部 RAM 30H单元的其准数Y比较,函数F存放在内部 RAM的40H单元。试编程实现下列函数关系:
1 (X>Y) F= 0 (X=Y)
-1 (X<Y)
精选PPT课件
11
华中科技大学文华学院
方法一: (1)流程图
开始 A←X A←X-Y A=0
程序设计基本方法
精选PPT课件
2
华中科技大学文华学院
2.设RAM 40H单元的内容为80H,80H单元内容为47H, P1口的输入状态为0FFH,试判断下列程序执行结 果。 MOV R0,#40H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV P2,P1
3.试编写1234H-0FA3H的程序段,将结果高8位存入51H, 低8位存入50H单元。
4单片机技术基础第三章PPT课件
14.08.2020
9
二、寻址方式的种类:
1、寄存器寻址 2、直接寻址 3、立即数寻址 4、寄存器间接寻址 5、变址寻址 6、相对寻址 7、位寻址
14.08.2020
10
1、寄存器寻址
寄存器寻址:由指令指出寄存器组R0~R7
中的某一个或其他寄存器(A,B,DPTR等)的内 容作为操作数。
分为机器语言、汇编语言和高级语言。
机器语言:用二进制编码表示每条指令,是计算机
能直接识别和执行的语言。
汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的
如:MOV A,#0AH
74 0AH
14.08.2020
5
§3.1.2 指令格式
89C51汇编语言指令格式:
第三章 指令系统
3.1 汇编语言 3.2 寻址方式 3.3 89C51指令系统
14.08.2020
1
整体概况
+ 概况1
您的内容打在这里,或者通过复制您的文本后。
概况2
+ 您的内容打在这里,或者通过复制您的文本后。
概况3
+ 您的内容打在这里,或者通过复制您的文本后。
学习目的与要求:
▼熟悉机器语言、汇编语言机器区别
14.08.2020
12
表3-1 低3位操作码与寄存器Rn的对应关系
低3位rrr 000 001 010 011 100 101 110 111 寄存器Rn R0 R1 R2 R3 R4 R5 R6 R7
14.08.2020
13
2、直接寻址
直接寻址方式:在指令中给出的是操作数所在片内
单片机课件第三章1
特点: 能被CPU直接识别、运行的形式。也称机器码、汇编语 言的目标代码。
缺点:不便于阅读、记忆和调试修改。
2021/2/21
4
2 十六进制表示方式: 它是对二进制形式的一种简化。
00100100B
24H
00001000B
08H
二进制表示的形式 十六进制表示的形式
在实验室等少数环境下,可以将这种形式作为输入程 序的一种辅助手段。但是,这种形式的指令格式必须由对 应的监控程序把它们翻译成二进制的“机器码”后存入程 序存储器并运行。
20
例1:MOV A, 30H ;A (30H)
RO
A
PC
EM5H
操作码内RAM
××
PC
30H
操作30数H 地×址×
PC
××
例2:ANL 30H,#30H
;30H
RO
PC
5M3H
操作码
PC
30H
直接地址
PC
30H
立即数
PC
××
(30H)∧ #30H 内RAM
30H × ×
“与”
ALU “结果”
202三1/2字/21 节:LJMP 2000H ;将16位的地址2000H送PC中。(LCALL) 21
MOV A,R7 ;将寄存器R7中的内容送累加器A中。
MOV 20H,R0 ;将寄存器R0中的数据送内存20H单元
INC R1
;将寄存器R1中的内容加一
ADD A,R3 ;A的内容与寄存器R3的内容相加送A
寄存器寻址方式的指令大多是单字节指令。指令本身并不含 有操作数,而是含有存放操作数的寄存器的3位代码。以 MOV A,Rn为例,使用R7寄存器,所以rrr=111,即指令的机 器码为:0EFH
单片机课件第3章
ROM指令(2条 指令(2 ⒋ 读ROM指令(2条)
① MOVC ② MOVC A,@A+DPTR A,@A+PC ;(A+DPTR)→A PC+1 ;PC+1→PC,(A+PC)→A
三个不同的存储空间用三种不同的指令传送: 三个不同的存储空间用三种不同的指令传送: 内RAM(包括特殊功能寄存器): RAM(包括特殊功能寄存器): 外RAM: ROM: 用MOV指令传送; MOV指令传送; 指令传送 用MOVX指令传送; MOVX指令传送; 指令传送 用MOVC指令传送。 MOVC指令传送。 指令传送
⒋ 寄存器间接寻址
间接寻址是根据操作数地址的地址寻找 间接寻址是根据操作数地址的地址寻找 操作数地址的地址 操作数。 操作数。 间接寻址用间址符“ 作为前缀。 间接寻址用间址符“@”作为前缀。 【例】 A,@R0 将以R MOV A,@R0 ;将以R0中内容为地址的存储单元中的数据
传送至A 传送至A中
操作码:表示指令的操作功能。 ⑵ 操作码:表示指令的操作功能。
操作码用助记符表示, ① 操作码用助记符表示, 的操作功能。 它代表了指令 的操作功能。 操作码是指令的必需部分, ② 操作码是指令的必需部分, 是指令的核心,不可缺少。 是指令的核心,不可缺少。
操作数:参加操作的数据或数据地址。 ⑶ 操作数:参加操作的数据或数据地址。
⒉ 直接寻址 直接寻址是给出操作数的直接地址 给出操作数的直接地址。 直接寻址是给出操作数的直接地址。 直接寻址范围为内RAM 128B和特殊功能寄 直接寻址范围为内RAM 128B和特殊功能寄 存器。 存器。
【例】 MOV MOV A,3 A,3AH A,P0
单元中的数据传送至A ;将内RAM 3AH单元中的数据传送至A中 将内RAM AH单元中的数据传送至 ;将特殊功能寄存器P0口中的数据传送至A中 将特殊功能寄存器P0口中的数据传送至A P0口中的数据传送至
第3章单片机课件
压栈时,堆栈指针先加1,然后压入数据; 出栈时,数据先弹出,然后堆栈指针减1。
例3.9 设(A)=30H,(B)=31H, 执行以下各条指令后,堆 栈指针及堆栈内容变化。 MOV PUSH PUSH POP POP SP, #3FH A B A; B;
;(SP)=3FH ;(SP)=40H(40H)=30H ;(SP)=41H(41H)=31H ;(SP)=40H(A)=31H ;(SP)=3FH(B)=30H
2).以Rn为目的字节的传送指令
• MOV • MOV • MOV Rn,A Rn,direct Rn,#data
; n=0~7
3).以直接地址为目的字节的传送指令
• • • • • MOV MOV MOV MOV MOV dcrect, dcrect, dcrect1, dcrect, dcrect, A Rn ; n=0~7 direct2 @Ri ;i=0,1 #data
SUBB SUBB SUBB SUBB A, #data A, direct A, @Ri A, Rn
例3.12 设(A)=0C9H,(R2)=54H,Cy=1 执行指令:SUBB A,R2 结果:(A)=74H Cy=0 AC=0 OV=1 P=0
例3.13 将(31H)、(30H)和 (41H)、(40H)中两个双字节 无符号数相加,结果送51H、50H。 • • • • • • MOV A,30H ADD A,40H MOV 50H,A MOV A,31H ADDC A,41H MOV 51H,A
3.3 算术运算指令
共有24条。 主要完成加、减、乘、除四则运算 以及增量、减量和十 进制调整操作。 大多数的算术运算指令都对 PSW 的标志位有影 响。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一字节 0 1 1 0 0 0 0 0 操作码(60H) 第二字节 rel 操作数(相对偏移量)
3.1 概述
三字节指令 三字节指令的编码由三个字节组成,第一字节为操
址的单元中。
3.280C51单片机寻址方式
3.2 80C51单片机寻址方式
寻址方式:根据指令中给出的地址寻找真实操作数 地址的方式。
80C51单片机共有7种寻址方式。
一、立即寻址
指令操作码后的一个字节是实际操作数本身。该操 作数直接参与操作,又称立即数,用符号“#”表示
可以为工作寄存器名、SFR名、标号名、常数、表 达式等,用以表示操作数地址;
根据指令功能的不同,操作数可以有一个、两个、 三个或者没有,操作数之间用“,”分开;
分为目的操作数和源操作数两种; 为使操作数区段出现的字符和16进制数区别开来, 在以字母开头的16进制数前加0,如将FFH写成 0FFH(H表示此数为16进制数,二进制用B表示,十进 制用D表示或省略)。
以冒号结尾; 不能用指令助记符、伪指令或寄存器名来做标号
名; 标号是任选的,只在需要时才设标号; 一旦使用了某标号定义一地址单元,在程序的其
他地方就不能随意修改这个定义,也不能重复定义。
3.1 概述
“操作码”
指令或伪指令的助记符,用来表示指令的性质。对 于一条汇编语言指令,这一字段是必不可少的。
“操作数”
令中,偏移量以下一条指令第一字节地址为基址,偏 移量范围为-128~+127; (12) bit:内部RAM或SFR的直接寻址位地址
3.1 概述
(13) @:间址寄存器或基址寄存器前缀; (14) /:位操作指令中,表示对该位先求反再参与操作,
但不影响原值; (15) (X):表示X地址中的内容; (16) ((X)):表示以X地址单元中内容为地址的单元中数; (17) X←Y:把Y单元中内容赋给X地址单元中; (18) (X)←Y:把Y单元中内容赋给以X地址中内容为地
1 1 1 0 0 1 1 i (E6H~E7H)
3.1 概述
双字节指令 编码由两个字节组成,存放在存储器中占两个存储
单元。 例如 MOV A,#data; 功能:把立即数#data送
到A中,机器码为: 第一字节 0 1 1 1 0 1 0 0 操作码 (74H) 第二字节 #data 操作数(立即数)
单片机课件第三章
3.1 概述
3.1 概述
一、指令系统与编程 1、指令
计算机进行某种操作的代码形式。 2、指令系统
一台计算机所能识别的全部指令。 3、程序
使计算机完成某种任务的一系列指令。
3.1 概述
二、 汇编语言与机器语言 1、机器语言 计算机能直接识别的由0和1组成的二进制编码指
令,这种编码称为机器码。 特点: 记忆、书写、编程很不方便,不易理解,容易出
3.1 概述
“注释” 对指令的解释,可有可无。良好的注释是
汇编语言程序编写中的重要组成部分。
3.1 概述
四、指令代码格式 1、指令代码(即机器语言) 指令的二进制数表示方法,是指令在存储器存储
的形式。 2、根据指令代码的长度,80C51的指令可分为: 单字节指令 由8位二进制编码表示。有两种形式: (1) 8位全表示操作码。 例如,空操作指令NOP,机器码为:00000000
作码,第二、三字节为操作数,存放在存储器中占三 个存储单元。
例如 MOV direct,#data 功能:把立即数#data送到直接地址direct中,机器 码为:
第一字节 0 1 1 1 0 1 0 1 操作码(75H) 第二字节 direct 操作数(直接地址) 第三字节 #data 操作数(立即数)
(6) direct:表示可以直接寻址的内部RAM地址或SFR 地址;
(7) #data:包含在指令中的8位立即数; (8) #data16:包含在指令中的16位立即数; (9) addr16:16位目的地址; (10) addr11:11位目的地址; (11) rel:补码形式的8位地址偏移量。用于相对转移指
第三章 80C51单片机指令系统--- 3.1 概述
(பைடு நூலகம்) 8位编码中包含操作码和寄存器编码。 例如 MOV A,Rn ;
功能:把Rn中的内容送到A中,机器码为: 1 1 1 0 1 ← n → (E8H~EFH)
又如 MOV A,@Ri ; 功能:把间址寄存器Ri中的内容为地址的单元中内容 送到A中,其机器码为:
3.1 概述
结论: 无论是哪种指令,其第一个字节均为操作码,它
确定了指令的功能;其他的字节为操作数,指出了被 操作的对象,指明了参与操作的数据或数据所存放的 地址。
学会初步判断指令代码长度的方法,对于正确应 用指令系统是非常有益的。
3.1 概述
3、指令代码长度的初步确定
(1)操作码是一定要占一个字节; (2)80C51在进行指令编码时,掌握的原则是尽量简 单、短、具有规律性。因此,通常将作操作数的固定 不变的寄存器隐含到操作码中(如A,B,Rn,DPTR 等); (3)通常将作操作数的间址寄存器Ri,DPTR隐含到 操作码中; (4)通常8位立即数#data,直接地址direct,相对 偏移量rel单独占一个字节。 通过指令系统的学习,逐步了解、掌握确定指令代 码长度的方法。
错。 2、汇编语言 用助记符(操作码)、符号地址(操作数)、标号等符
号表示指令的功能和特征。 特点: 便于记忆、理解、分类和编程。
3.1 概述
三、汇编语言格式 1、汇编语句 由4部分构成。 [标号:] 操作码 [操作数] [;注释] 2、各部分作用 “标号” 该指令的符号地址,根据需要设定。 标号是以字母开始,由1~8个字母或数字串组成,
3.1 概述
五、指令中常用符号 (1) A:累加器ACC; (2) B:寄存器B; (3) C:进(借)位标志位,在位操作指令中作为位累
加器使用; (4) Rn:当前选中的工作寄存器组的8个寄存器
R0~R7; (5) Ri:当前选中的工作寄存器组中作为寄存器间接
寻址的2个寄存器R0、R1;
3.1 概述