第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文
MCS51单片机指令系统及汇编语言程序设计
![MCS51单片机指令系统及汇编语言程序设计](https://img.taocdn.com/s3/m/d52d440c76eeaeaad0f330aa.png)
结果为 :(R0)= 7EH,(7EH)=0FFH,(7FH)=3FH。
三、乘法和除法指令 乘法: MUL AB ;(A)×(B),积的低8位在A中,积的
; 高8位在B中; C总为0。
除法: DIV AB ;(A)÷(B),商在A中,余数在B中。
; 若(B)= 0 ,则结果不定,(OV)= 1, ;(C)= 0。
MCS51单片机指令系统及汇编语言程序设计
§3-1 汇编语言与指令系统简介
一、汇编语言程序设计的意义 什么是程序? 完成某项特定任务的指令的集合。 计算机按程序一条一条地依次执行指令,从而完成指定任务。 要让计算机完成各项任务,就应设计各种程序。
程序设计语言: 机器语言: 用二进制代码表示指令和数据。 汇编语言: 用助记符表示指令操作功能,用标号表示操作对象。 高级语言: 独立于机器,面向过程,接近自然语言和数学表达式.
MOV #data, A
Х
等等指令是非法指令。
2、栈操作指令
PUSH direct
POP direct
不影响任何标志位。
PUSH direct 指令执行中,机器自动进行两步操作:
(1) (SP)
(SP)+ 1
(2)((SP)) (direct)
例1、设(SP) = 09H,(DPTR)= 0123H,分析:
小结: 1、逻辑操作分为哪两类操作? 2、循环移位指令每执行一次,移几位? 3、ANL、ORL、XRL指令有哪些使用技巧?
§3-5 控制转移类指令
作用:改变程序计数器PC的值,从而改变程序执行方向。 分为四大类:无条件转移指令;条件转移指令;调用指令; 返回指令。
例4、两个4位BCD码相加,一个存放在(31H)(30H); 另一个存放在(33H)(32H);和数拟回存在(31H) (30H)中,试编程实现之。
第三章(MCS-51单片机指令系统)
![第三章(MCS-51单片机指令系统)](https://img.taocdn.com/s3/m/d0b1363fbd64783e09122b2c.png)
位操作指令 1.位传送指令 MOV C,bit MOV bit,C 2.位置位和清零指令 CLR C
CLR
SETB
bit
C
电气工程学院
SETB bit
3.位运算指令
ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit CPL C CPL bit
电气工程学院
movcaapcmovcaadptr变址寻址中只有两条指令第一个操作数必须是a变址部分必须是a和pc或a和dptr的组电气工程学院324位寻址位寻址是把8位二进制数中的某一位作为操作数看待称之为位寻址movc7fhmovc2fh7mova7fh可位寻址的空间1片内ram区20h2fh共16个单元其中每一位都可单独作为操作数2某些特殊功能寄存器sfr其特征是他们的物理地址应能被8整除共16个分布在80hffh的字节地址电气工程学院324位寻址电气工程学院3333数据传送指令数据传送指令数据传送指令1内部数据传送指令mova30hmovdptr1234h2外部ram数据传送指令movxadptr3外部rom数据传送指令movcaadptrmovcaapc电气工程学院3333数据传送指令数据传送指令direct直接寻址rn工作寄ri间接寻址累加器amovcadptrapcmovxdptr电气工程学院3434堆栈操作指令堆栈操作指令pushdirect
ADD
MOV JMP
A,R1
DPTR,#PMTB @A+DPTR
;A*3
LJMP LJMP
电气工程学院
2.条件转移指令
(1)累加器A判零转移指令
(2)比较条件转移指令(实际上进行减法操作,若A中结果不为零发生跳转) CJNE CJNE A,#data,rel A,direct,rel
第3章-MCS-51系列单片机的指令系统和汇编语言程序范文
![第3章-MCS-51系列单片机的指令系统和汇编语言程序范文](https://img.taocdn.com/s3/m/c431a0cc856a561252d36f3e.png)
第3章MCS一51系列单片机的指令系统和汇编语言程序3·1汇编指令3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。
3·1·2请总结:(1)汇编语言程序的优缺点和适用场合。
(2)学习微机原理课程时,为什么一定要学汇编语言程序?3·1·3MCS一51系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。
3·1·4要访问片内RAM,可有哪几种寻址方式?3·1·5要访问片外RAM,有哪几种寻址方式?3·1·6要访问ROM,又有哪几种寻址方式?3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。
3·1·8试分别针对51子系列与52子系列,说明MOV A,direct指令与MOV A,@Rj 指令的访问范围。
3·1·9传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为什么访问ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM?3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。
3·1·11请选用指令,分别达到下列操作:(1)将累加器内容送工作寄存器R6.(2)将累加器内容送片内RAM的7BH单元。
(3)将累加器内容送片外RAM的7BH单元。
(4)将累加器内容送片外RAM的007BH单元。
(5)将ROM007BH单元内容送累加器。
3·1·12 区分下列指令的不同功能:(l)MOV A,#24H 与MOV A.24H(2)MOV A,R0与MOV A,@R0(3)MOV A,@R0与MOVX A,@R03·1·13设片内RAM 30H单元的内容为40H;片内RAM 40H单元的内容为l0H;片内RAM l0H单元的内容为00H;(Pl)=0CAH。
第三章MCS51系列单片机指令系统及汇编语言程序设计
![第三章MCS51系列单片机指令系统及汇编语言程序设计](https://img.taocdn.com/s3/m/e2e9ddb10342a8956bec0975f46527d3250ca65c.png)
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
单片机第3章 mcs-51指令系统及汇编语言程序设计GGGAA
![单片机第3章 mcs-51指令系统及汇编语言程序设计GGGAA](https://img.taocdn.com/s3/m/5fb0f74df7ec4afe04a1df73.png)
举例:设累加器 的内容为 的内容为4AH,则执行 举例:设累加器A的内容为 ,则执行MOV R1,A , 指令后,内部 单元的值就变为4AH。 指令后,内部RAM 11H单元的值就变为 单元的值就变为 。
图3.3 寄存器寻址示意图
4 寄存器间接寻址:
指令格式:在指令中用“ 指令格式:在指令中用“@R0、@R1或@DPTR”来表示操 、 或 来表示操 作数。 作数。 指令特点:通过寄存器去间接地找操作数所在的存储单元。 指令特点:通过寄存器去间接地找操作数所在的存储单元。 实际操作数:地址为寄存器值的单元中的内容。 实际操作数:地址为寄存器值的单元中的内容。 寻址范围: 片内128字节 字节RAM。 寻址范围: @R0或@R1 :片内 或 字节 。 @DPTR:片外64KB的数据存储空间和 端口。 :片外 的数据存储空间和I/O端口 的数据存储空间和 端口。 操作数位置:在以寄存器中的内容为地址的存储单元中( 操作数位置:在以寄存器中的内容为地址的存储单元中(源 或目的)。 或目的)。
指令格式:都是相对转移指令, 指令格式:都是相对转移指令,在指令中用数值或语句标号指明 目标位置。 目标位置。 指令特点:都是转移指令,转移的目标地址由“ 形成。 指令特点:都是转移指令,转移的目标地址由“PC+n+rel”形成。 形成 指令描述: 指令描述:相对转移指令使程序从当前位置跳过由指令中的偏移 量规定的地址空间,转到程序的目标地址开始执行。 量规定的地址空间,转到程序的目标地址开始执行。 偏移量的提供方法:直接提供偏移量数值; 偏移量的提供方法:直接提供偏移量数值;给出目标地址语句的 标号。 标号。 寻址范围:rel是补码形式的 位二进制数,寻址范围PC+n-128~ 寻址范围: 是补码形式的8位二进制数,寻址范围 是补码形式的 位二进制数 PC+n+127。 。
第三章 MCS-51汇编语言指令
![第三章 MCS-51汇编语言指令](https://img.taocdn.com/s3/m/99180118fc4ffe473368ab7e.png)
ROM
0F87H
…… PC 1005H 0100 0000 PC 1006H 1000 0000 PC …… 1007H ……
取指
执行
00001111 00010000 10001111 00000111
ALU
1007+FF80=0F87H
3.1.7 寻址方式小结 方式 寄存器寻址 直接寻址 利用的变量 R0~R7、A、Cy、 DPTR 使用的空间
ORG伪指令总是出现在每段源程序或数据块的开始位置。 源程序的开始,一般都要设置一条ORG伪指令来指定该程 序在存储器中的起始位置,若省略则默认为0。可多次使 用ORG指令来规定不同程序段的起始地址,但是不允许和 前面指定的地址重叠,即不同的程序段之间不能有重叠。
⒉定义字节伪指令DB(Define Byte) 格式:[标号:] DB 字节数据表 功能:把字节数据表中的数据依次存放在由标号指定 的连续地址单元中。字节数据表中的数据多于一个时 用逗号分隔。
如:MOV A,70H;(A)←(70H) ROM
PC 1110 0101 操作码
直接地址
分析
执行
PC PC
0111 0000
……
SFR …… ACC 01100110 …… 70H 01100110 ……
3.1.4 寄存器间接寻址 指令指定的某一寄存器的内容作为操作数地址。 可用来间接寻址的寄存器有R0、R1、堆栈指针SP 和数据指针DPTR。前面加@表示间接寻址。 可访问内部数据存储器或外部数据存储器。
如:MOV A, @R0;(A)←(R0)
0 0 0 * * 0 0 0
… RS1 RS0 …
ROM PC PC 1110111 0 ……
3.MCS-51单片机指令系统及汇编语言程序设计
![3.MCS-51单片机指令系统及汇编语言程序设计](https://img.taocdn.com/s3/m/4e27524c33687e21af45a971.png)
ROM、内部RAM SFR XXH
14
例:MOV A,3AH
程序存储器 内部RAM … …
PC
PC+1
11100101 操作码 00111010 直接地址
3AH
39H
100111111
A 10011111
15
…
3.寄存器寻址
定义:操作数存放在MCS-51内部的某个工作寄存器Rn(R0~R7) 或部分专用寄存器中,这种寻址方式称为寄存器寻址。 特点:由指令指出某一个寄存器的内容作为操作数。存放操作 数的寄存器在指令代码中不占据单独的一个字节,而是嵌入 (隐含)到操作码字节中。寻址范围:四组通用寄存器组Rn (R0~R7)、部分专用寄存器( A, B, DPTR, Cy )。
1000H+30H
PC DPTR
基址寄存器 1000H
变址寄存器 30H 65H
A
20
特点:指令操作码中隐含作为基址寄存器用的DPTR(或 PC )和作为变址用的累加器A。在执行变址寻址指令时, MCS-51单片机先把基地址( DPTR或PC 的内容)和地址偏 移量(A的内容)相加,以形成操作数地址,再由操作数地 址找到操作数,并完成相应的操作。变址寻址方式是单字 节指令。
其中:00H是片内RAM中20H地址单元的第0位。
24
(2)字节地址加位序号的形式。如:
MOV 20H.0, C ; (20H.0)←(Cy) 其中:20H.0是片内RAM中20H地址单元的第0位。
第3章 MCS-51单片机指令系统 与汇编语言程序设计
主要内容: 介绍 MCS-51单片机的寻址方式、指令系统、 基本程序结构及汇编语言的开发和调试。重点在 于寻址方式、各种指令的应用、程序设计的规范、 程序设计的思想及典型程序的理解和掌握。难点 在于控制转移、位操作指令的理解及各种指令的 灵活应用,以及程序设计的基本方法和针对具体 的硬件设计出最合理的软件。
单片机第三章 MCS-51系列单片机的指令系统和汇编语言程序设计
![单片机第三章 MCS-51系列单片机的指令系统和汇编语言程序设计](https://img.taocdn.com/s3/m/4bc597fb4431b90d6d85c7cf.png)
direct, A direct, Rn direct, direct direct, @Ri direct, #data
F5( ) 88( )~8F( ) 85(源地址)(目的地址) 86( )~87( ) 75(直接地址)(立即数)
例: MOV MOV MOV MOV MOV
P1,A; 70H, R2; 0E0H, 78H; 40H, @R0; 01H, #80整H理课;件
汇编语言源程序 (助记符)
汇编程序
整理课件
目的程序 (机器码)
51系列单片机: 42种操作码助记符 33种操作功能 功能助记符与寻址方式组合 111种指令
单字节 49
双字节 46
3字节
16
单周期 64
双周期 45
4周期
2
• 数据传送类指令 • 算术运算类指令 • 逻辑运算类指令 • 位操作指令 • 控制转移类指令
十六进制机器码 E8H~EFH n=0~7 E5 ( ) E6H~E7H i=0,1 74 ( )
例: MOV MOV MOV MOV
A, R6; A, 70H; A, @R0; A, #78H;
(R6)→A (70H)→A ((R0))→A 78H→A
整理课件
2、以Rn为目的操作数的指令
MOV Rn, A
信
目的地
操作数 #X55XHH
MOV P1, #55H 整理M课O件V A, #01H
立即数寻址 直接寻址 寄存器寻址
寄存直接器给间出接地寻址址 变2址0H寻—址— 址直接寻 相对寻址
位寻址
目的地
注:寻址是寻操作数操的作数“地
址”!
内部RAM
目的地
或SFR区
C3 MCS-51系列单片机的指令系统和汇编语言程序示例
![C3 MCS-51系列单片机的指令系统和汇编语言程序示例](https://img.taocdn.com/s3/m/62561baed1f34693daef3eb9.png)
SMIC
字节地址 D7 D6 D5 D4 D3 D2 D1 D0 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 70H
…
20H
…
…
…
23 07H 06H 05H 04H 03H 02H 01H 00H
5.基址寄存器加变址寄存器间接寻址
A DPTR R5,A
;(A)←0 ;(DPTR)←(DPTR)+1 ;(R5)←(A)
16
3.寄存器间接寻址
SMIC
以寄存器中内容为地址,以该地址中内容为操作数 的寻址方式。 间接寻址的存储器空间包括内部RAM(不包括SF R)和外部RAM。 能用于寄存器间接寻址的寄存器有R0,R1,D PTR,SP。其中R0、R1必须是工作寄存器组 中的寄存器。SP仅用于堆栈操作。 为表现间接寻址,于寄存器前加一“@” MOV ——访问片内RAM MOVX——访问片外RAM
第三章 MCS-51系列单片机的 指令系统和汇编语言程序示例
郝丽俊@smic
第二章复习
51单片机的硬件结构 关键词:
性能特点 结构组成 CPU时序 指令周期 程序存储器 数据存储器
SMIC
2013-7-25
2
SMIC
2013-7-25
3
SMIC
2013-7-25
4
00H
片 内 位寻址区 R A 数据缓冲区(用户RAM区) M
操作码 操作数1 操作数2 操作数3
SMIC
按字节数分:单字节、双字节、三字节指令 按指令执行时间分:单周期、双周期、四周期指 令 按功能分:数据传送类、算术运算类、逻辑运算 类、控制转移类、布尔处理类指令
第三章 51系列单片机指令系统和汇编语言程序示例
![第三章 51系列单片机指令系统和汇编语言程序示例](https://img.taocdn.com/s3/m/09b2cd24974bcf84b9d528ea81c758f5f71f296a.png)
89C51片内RAM 128字节(00H—7FH)
89C52片内RAM 256字节(00H—0FFH)
那么对于这高128的RAM如何访问?(间址)
FFH
FFH
52子系列才有
的RAM区
80H
7FH
89C52
256字节
89C51
128字节
30H
2FH
20H
1FH
00H
80H
普通RAM区
SFR分布在
80H-FFH
让计算机处理问题,首先要编写程序。编写程序实
际上是从指令系统中挑选一个指令子集的过程。
指令一般有功能、时间和空间三种属性。
51系列单片机指令集含有111条指令
每条指令在程序存储器ROM中占据一定的空间,
以字节为单位。按指令所占字节数分类:
单字节(49条 ) ; 双字节(46条);3字节(16条)
每条指令在执行时要花去一定的时间,以机器
目的地址=当前PC值+rel
= 指令存储地址+指令字节数(2)+rel
注意:
1 ) 当前 PC 值 : 指相对转移指令的存储地址
指令的字节数。例如: JZ rel 是一条累加器 A 为
零就转移的双字节指令。若该指令的存储地址为
2050H,则执行该指令时的当前PC值即为2052H。
即当前PC值是对相对转移指令取指结束时的值。
常用到,1-8个字母/数字,“:”结尾
操作码就是指令功能助记符,指令实体
目的操作数
源操作数(无操作数,单操作数,双操作数)
注释,以“;”开头
《单片微机原理及应用》教学课件
指令描述符号介绍
第3章 MCS-51系列单片机的指令系统及汇编语言程序设计
![第3章 MCS-51系列单片机的指令系统及汇编语言程序设计](https://img.taocdn.com/s3/m/07e8cb11227916888486d73f.png)
注意:①A的内容是无符号数。 ②PC值是指令的当前PC值,即下条指令的PC值
3.1.6 相对寻址
变址寻址只能访问程序存储器。相对寻址是将程序计数器 PC的当前值与指令第二字节给出的偏移量相加,从而形成转 移的目标地址。 如:JZ 61H 注意:
① 相对偏移量是一字节有符号数,用补码表示,偏移范 围是:-128~+127。
3.1.3 寄存器寻址
操作数存放在寄存器中。 寻址对象:A,B,C,DPTR,R0~R7 。 B仅在乘除法指令中为寄存器寻址,在其他指 令中为直接寻址。 A可以寄存器寻址又可以直接寻址,直接寻址 时写作ACC
例如:MOV A,R0
MUL AB
;R0→A
;A*B→BA
ADD A,ACC ;A+A→A
MOVC A,@A+PC ;A← (A+PC) 常数表只能在查表指令后 256B 范围内。
例 查表法求 Y=X2。设 X(0≤X≤15)在片内 RAM 20H单
元,要求将查表求 Y,存入片内 RAM 21H单元
1)用DPTR作基址寄存器 ORG 0100H SQU: MOV DPTR,#TAB ;确定表首地址 MOV A,20H ;取 X MOVC A,@A+DPTR ;查表求 Y=X2
操作数的地址直接出现在指令中。 寻址对象: ①内部数据存贮器:使用它的地址。 ②特殊功能寄存器:既可使用它的地址,也可以直接使用 寄存器名。 ③位地址空间 ④程序存储器空间 例:MOV A,40H ;(40H)→A MOV 40H,41H ;(41H)→(40H) MOV P0,#45H ; 45H→P0 MOV 80H,#45H ; 45H→P0 MOV C,18H ; 位地址18H→C
第03章 MCS - 51单片机指令系统
![第03章 MCS - 51单片机指令系统](https://img.taocdn.com/s3/m/40db97056c85ec3a87c2c5f7.png)
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
(2)将数据传送到工作寄存器Rn的指令(3条) 例:已知累加器A的内容为30H,寄存器R7的内容 为50H,内部RAM30H单元的内容为40H,内部 RAM50H单元的内容为10H,请指出下列每条指令 执行以后相应单元内容的变化.
第 一 节 指 令 格 式 与 寻 址 方 式
第3章 MCS-51单片机指令系统
(6) 相对寻址:
在MCS -51 指令系统中设有转移指令, 分 为直接转移和相对转移指令, 在相对转移 指令中采用相对寻址方式。这种寻址方式 是以PC的内容为基本地址, 加上指令中给 定的偏移量作为转移地址,也就是目的地 址(用来修改PC的值)。指令中给出的偏 移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
第3章 MCS-51单片机指令系统
(1) 立即寻址:
立即寻址方式是将操作数直接存放在指令字 节中,作为指令的一部分存放在代码段里。 比如:MOV A, #3AH 跟在指令操作码后面的数就是参加运 算的数, 该操作数称为立即数。立即数有一字 节和二字节两种可能, 如指令: MOV DPTR, #0DFFFH 上述两条指令均为立即寻址方式, 第 一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据 指针DPTR中(DPH, 0FFH→DPL)。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
3.2数据传送指令
程序中使用最多的指令,主要用于内部RAM、 寄存器、外部RAM以及程序存储器之间的数据 传送、保存以及交换。 工作原理:将源操作数简单地传给目的 操作数,而源操作数的内容不变,PSW的内容 不改变。 分类:内部数据传送指令、外部传送指 令、查表指令、交换指令和堆栈指令。
第三章MCS-51指令系统及汇编语言程序设计
![第三章MCS-51指令系统及汇编语言程序设计](https://img.taocdn.com/s3/m/f4f5fe4dfe4733687e21aae9.png)
指 令 系 统 的 寻 址 方 式
MCS-51指令系统及一般说明 MCS-51指令系统及一般说明
在介绍指令之前, 在介绍指令之前 , 先对指令中使用的一些符号意义进行简单 的说明。 的说明。 direct---直接地址, ---直接地址 ① direct---直接地址,即8位的内部数据存储器单元或特殊 功能寄存器的地址。 功能寄存器的地址。 #data--包含在指令中的8位常数。 --包含在指令中的 ② #data--包含在指令中的8位常数。 #datal6--包含在指令中的16位常数 包含在指令中的16位常数。 ③ #datal6--包含在指令中的16位常数。 rel-- 位的带符号的偏移量。用于SJMP --8 SJMP及所有的条件转移 ④ rel--8位的带符号的偏移量。用于SJMP及所有的条件转移 指令中。 指令中 。 偏移量按相对于下一条指令的第一个字节地址与跳转 后指令第一个字节地址之差计算, 范围内取值。 后指令第一个字节地址之差计算,在-128~+127范围内取值。 128 +127范围内取值 DPTR--数据指针,可用作16位的地址寄存器。 --数据指针 16位的地址寄存器 ⑤ DPTR--数据指针,可用作16位的地址寄存器。
指 令 系 统 的 寻 址 方 式
寄存器间接寻址
寄存器间接寻址方式可用于访问内部RAM 或外部数据存储器 寄存器间接寻址方式可用于访问内部 RAM或外部数据存储器 。 RAM 或外部数据存储器。 这种寻址方式是由指令指定某一寄存器的内容作为操作数的 地址。 地址。 其中(Ri)=40H (Ri)=40 例如 MOV A,@Ri ;(i=0或1),其中(Ri)=40H 这条指令表示从Ri中找到源操作数所在单元的地址, Ri中找到源操作数所在单元的地址 这条指令表示从Ri中找到源操作数所在单元的地址,把该地 址中的内容传送给A 即把内部RAM 40H单元的内容送到累加器A RAM中 址中的内容传送给A。即把内部RAM中40H单元的内容送到累加器A 中。
第3章MCS51系列单片机的指令系统及汇编语言程序设计
![第3章MCS51系列单片机的指令系统及汇编语言程序设计](https://img.taocdn.com/s3/m/f946f228e2bd960590c677b5.png)
30H
Eg:MOV A,30H
A XX A
结果
A 33H 30H 10H
33H
结果
Eg:MOV A,#10H
10H
XX
•
Eg.: MOV A,R2 R2 A 33H XX
A
33H
Eg. : MOV A,@R0
R0
55H
地址
55H
取出
A
78H
78H
注意:在使用Ri进行间址寻址时,只能够使用R0和R1。
当前工作寄存器中的某一个,即R0~R7; R0或者R1 单片机内部RAM低128字节(00h~7fh)中的某 个字节地址, 或者是某个专用寄存器的名字; #data 8位(1字节)立即数 #data16 16位(2字节)的立即数 Addr16 16位目的地址,在LJMP和LCALL的指令中采用 Addr11 11位目的地址,只在AJMP和ACALL指令中采用 Rel 相对转移指令中的偏移量。 DPTR 数据指针(由DPH和DPL构成) Bit 内部RAM(包括专用寄存器)中可寻址位的地址或 名字 Rn Ri Direct
有两个操作数,如MOV 相隔;
有三个操作数,如CJNE 也以逗号相隔。 注释
A, #00H指令,操作数之间以逗号
A, #00H, NEXT指令,操作数之间
注释是对指令的解释说明,用以提高程序的可读 性;注释前必须 以“;”和指令分开,注释在每条 指令后都可以设有。
2.1.2
指令中符号的意义说明
2.以通用寄存器Rn为目的的传送指令:( 3条)
MOV Rn,A ; Rn ← (A) MOV Rn,direct ; Rn←(direct) MOV Rn,#data ; Rn← data
单片机应用技术(C语言版)第3章MCS-51指令系统及汇编
![单片机应用技术(C语言版)第3章MCS-51指令系统及汇编](https://img.taocdn.com/s3/m/d3c2556fe87101f69e3195f5.png)
2019/11/10
18
(2)直接寻址不能够访问片内RAM的高
128字节(增强型),高128字节只能够间接
访问。
FFH 高128B RAM
idata区 80H
FFH 特殊功能 寄存器
80H
7FH
低128B RAM
data区 00H 增强型单片机片内RAM
2019/11/10
19
MOV A,#2CH ;2CH → A 表示把2CH这个数送给累加器A
2019/11/10
15
立即数也可以是16位的,如: MOV DPTR,#1234H
立即数的低8位送给了DPL,高8位送给 了DPH。
2019/11/10
16
2 直接寻址
直接寻址:是指操作数存放在片内RAM中, 指令中给出操作数的地址。例如:
3 寄存器寻址
寄存器寻址:就是由指令指出寄存器组 R0~R7中某一个或寄存器A、B、DPTR的 内容作为操作数。
2019/11/10
20
7F
30 2F
20 1F 18 17 10 0F 08 07 00
2019/11/10
堆栈和 数据缓存
位地址为 00H~7FH (128位)
R0、R1…R7
(第3组)
7
五、MCS-51汇编语言指令格式
其一般格式如下:
[标号:] 操作码 [目的操作数] [,源操作数] [;注释]
方括号中的内容可以没有,即可以没有 标号、操作数和注释,至少要有操作码。
2019/11/10
8
例如:
START: MOV →A
A,#23H ;23H
“START”为标号
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOV A,#19HADD A,#66H(2)MOV A,#5AHADD A,#6BH2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少?(1)ADDC A,R0, (2)ADDC A,31H(3) ADDC A,@R0, (4) ADDC A,#85H3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。
4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?CLR CMOV A,#52HSUBB A,#0B4H5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R16.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。
7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。
8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么?(1)MOV A, #0FFH ANL A, R0(2)MOV A, #0FH ANL A, 30H(3)MOV A, #0F0H ANL A, @R0(4)MOV A, #80H ANL 30H, A9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。
10.已知外部RAM30H中有一数AAH令高四位不变,低四位取反,试编出相应的程序。
11.已知:30H单元有一正数X,试编写求(-X)补码的程序。
12.如图所示,若X,Y,Z三个输入信号放在X,Y,Z三个单元中,试编写模拟电路功能的程序,并把电路输出送到F单元。
13.已知M1和M1+1有一个16位的二进制数,低8位存放在M1,高8位存放在M1+1,编程令其扩大一倍。
14. 已知M1和M1+1有两个BCD数,试编程把他们紧缩成一个字节并存放在M1单元。
15.已知某单片机的监控程序初始地址为A080H,采用什么方法使开机后自动执行监控程序。
16.确定指令执行后的PC值,及该指令的机器码:KWM:AJMP addr11其中:KWM为3100H,addr11=17.有如下程序,请计算SJMP START 指令中rel值,并分析目标地址的转移范围。
ORG 1000H1000H 7401H START: MOV A, #01H1002H F8H MOV R0,A1003H 90CF01H LOOP:MOV DPTR ,#0CF01H………1017H 80 rel SJMP START………END18.已知累加器A中存放带处理命令的编号0~4,程序存储器中有初始地址为PMTB三字节长转移指令表,试编写程序使单片机能根据A中的命令编号转去执行相应的命令程序。
PMTB三字节长转移指令表如下:PMTB:LJMP PM0LJMP PM1LJMP PM2LJMP PM3LJMP PM419.已知:外部RAM中以DA TA1为初始地址的数据块以0为结束标志,试编写程序把他们转移到DATA2为初始地址的内部RAM中。
20.试编一个程序,把片内RAM中以DATA为初始地址的数据块中的十个数相加,并把和放在SUM单元中。
设相加的结果不超过8为二进制数表示的范围。
21.设ACALL addr11指令在程序中的初始地址为1FFFH,堆栈指针SP为60H,试画出指令执行后的堆栈示意图,并确定被调用子程序的合法范围。
22.已知:MA=0500H,试问8031执行如下指令MOV SP,#70HMA:LCALL 8192H堆栈中数据如何变化?PC中内容是什么?23.试利用子程序技术编出令20H-2AH,30H-3EH三个子域清零的程序。
24.试编程把00H位中内容和7FH位中内容相交换。
25.设M、N和W都代表位地址,试编程完成M、N中内容的异或操作。
26.已知:内部RAM的M1,M2单元中各有一个无符号8位二进制数,试编程比较它们的大小,并把大数送到MAX单元。
27.已知:20H中有一无符号数X,若它小于50,则转向LOOP1执行;若它等于50,则转向LOOP2执行;若它大于50,则转向LOOP3执行,试编出相应程序。
28.已知外部RAM的2000H开始有一个输入数据缓冲区,该缓冲区中数据以回车符CR (ASCII码为0DH)为结束标志,试编一个程序能把正数送入30H(片内RAM)开始的正数区和把负数送入40H开始的负数区。
29.若已知A=76H,PSW=81H,转移指令所在地址位2080H,当执行下列指令后程序是否发生转移?PC值为多少?(1)JNZ 12H(2)JNC 34H(3)JB P,56H(4)JBC AC,78H(5)CJNE A,#50,9AH(6)DJNZ PSW,0BCH30.指出下列那些指令不存在,并改用其他指令完成预期的功能。
(1)MOV 20H,30H(2)MOV R1,R2(3)MOV @R3,20H(4)MOV DPH,30H(5)MOV C,PSW.1(6)MOV SMOD,C(7)MOVX R2,@DPTR(8)PUSH 20H(9)POP R0(10)XCH R1,R231.以下两段程序中,R2为两位16进制数,试问这两段程序各执行多少次循环?(1). MOV R2,#60HLOOP: …………DJNZ R2,LOOPSJMP $(2). MOV R2,#60HLOOP: …………MOV A,R2ADD A,#99HDA AMOV R2,AJNZ LOOPSJMP $32.用循环指令将内部RAM的20H,21H,22H三个连续单元的内容依次放到2FH,2EH,2DH 单元。
33.编写程序,若累加器A中的内容分别满足下列条件时,程序转移到LABEL处。
设A中存放无符号数。
(1)A>=10(2)A>10(3)A<=10(4)A<10第三章MCS51单片机的指令系统和汇编语言程序示例(第8~15节)1.设在内部RAM 的BLOCK 单元有一无符号数数据块的长度,无符号数数据块的始址是BLOCK +1,试编程求无符号数数据块中数据的累加和(不考虑进位位的加法之和),并把结果存入SUM 单元。
编程后请人工汇编成相应的目标代码。
2.请编出能把20H 单元的两个BCD 数变换成相应的ASCII 码放在21H (高位BCD 数的ASCII 码)和22H (低位BCD 数的ASCII 码)单元的程序。
3.已知一个16位二进制负数(补码形式)的低8位在NUM 单元和高8位在NUM +1单元,试编程求该数的绝对值。
4.已知20H 单元有一个二进制数,请编程把它转换成3位BCD 数,把百位BCD 数送入FRIST 单元的低四位,个位BCD 数送入SECOND 单元的低四位,十位BCD 数送入SECOND 单元的高四位。
5.已知V AR 单元有一个自变量X ,请编程求出下列条件下的Y 值,并将它存入FUNC 单元。
⎪⎩⎪⎨⎧<-=>=0X 10X 00X 1Y6.N =128的分支程序。
已知R3中的值为00H ~7FH 中的一个,请编出根据R3的值转移到相应分支程序去的程序。
7.已知两个有符号数分别存在ONE 和TWO 单元,编程比较他们的大小,并把大数存入MAX 单元。
8.某系有200名学生参加外语考试,若成绩已经存放在8031外部RAM 始址为ENGLISH 的连续的单元,现决定给成绩在95~100分之间的学生颁发A 级合格证书,成绩在90~94分之间的学生颁发B 级合格证书。
试编一个程序可以统计A 级和B 级证书的人数,并把统计结果存入内部RAM 的GRADA 和GRADB 单元。
9.已知内部RAM 从BLOCK 单元开始有一个无符号的数据块,块长在LEN 单元,试编程求出各数的累加和并存入SUM 单元。
10.已知内部RAM 单元以ADDR 为始址的数据块是无符号数,块长在LEN 单元,试编程求出各数的最大值并存入MAX 单元。
11.设有10组三字节被加数和加数,分别存放在BLOCK1和BLOCK2为始址的单元,请编程求出10组数的和(设和仍为3字节),并把和送回BLOCK1为始址的数据块中。
12.设单片机8031内部RAM 始址为30H 的数据块中有64个无符号数,试编程使他们按从小到大的顺序排列。
13.已知R0的低四位有一个16进制数(0~F ),试编程将他转化成相应的ASCII 码,并送入R0的程序。
14.已知BLOCK1为始址的数据块(数据块的长度在LEN 单元),数据块中每个存储单元的高,低四位分别是两个16进制数,试编程将他们转换成相应的ASCII 码,并放在BLOCK2为始址的连续存储单元(低四位ASCCII 码在前,高四位ASCCII 码在后)。
15.设有一个始址为DTATAB 的数据表格,表中存放1024个元素,每个元素为2个字节。
试编出能根据R5,R4中的元素序号查找对应的元素并放在R5,R4(R5中为高8位,R4中为低8位)的程序。
16.设MDA和MDB那有两个数a和b,请编出求c=a2+b2,并把c送入MDC 的程序。
设a和b都是小于10的整数。
17.在HEX单元存有两个16进制数,试编程分别把他们转换成相应的ASCII 码存入ASC和ASC+1单元。
18.已知片内RAM中有一个5位的BCD码(高位在前,低位在后),最大不超过65535,始址在R0中,BCD码位数减1(04H)在R2中,试编程将BCD码转换成二进制整数并存入R4和R3中的程序(R4中为高8位)。
19.已知BLOCK1和BLOCK2为始址的存储区分别存有5字节无符号被减数和减数(低位在前,高位在后),试编一个减法子程序令他们相减并把差放入BLOCK1为始址的存储单元。
20.设BLOCK1和BLOCK+1单元有两个补码形式的有符号数,请编一个子程序求他们的和,并把和放在SUM和SUM+1单元(低8位在SUM单元)。
21.16位无符号数乘法程序。
BLOCK1和BLOCK2为始址的存储区内放有16位的乘数和被乘数(低字节在前,高字节在后),试编程求积,结果放在BLOCK3为始址的连续4个存储单元。