第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

合集下载

MCS51单片机指令系统及汇编语言程序设计

MCS51单片机指令系统及汇编语言程序设计
执行: DEC R0 DEC R0 DEC R0
结果为 :(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单片机指令系统)
电气工程学院
位操作指令 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系列单片机的指令系统和汇编语言程序范文

第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系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
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

举例:设累加器 的内容为 的内容为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汇编语言指令

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单片机指令系统及汇编语言程序设计

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系列单片机的指令系统和汇编语言程序设计

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系列单片机的指令系统和汇编语言程序示例

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系列单片机指令系统和汇编语言程序示例


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系列单片机的指令系统及汇编语言程序设计

注意:①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单片机指令系统
这里源操作数不能进行寄存器间接寻址, 也就是MOV Rn , @Rn 这个指令是不能用 的。
第 二 节 数 据 传 送 指 令
第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指令系统及汇编语言程序设计

指 令 系 统 的 寻 址 方 式
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系列单片机的指令系统及汇编语言程序设计

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指令系统及汇编
或 MOV A,90H
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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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个存储单元。

相关文档
最新文档