指令与汇编语言程序设计
第5章 指令与指令系统和汇编语言程序设计(2)

运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D 20F0命令看内存的20F0区域中保存的运行结果,6个大写的英文字母 已经被修改为小写字母: 0061 0062 0063 0064 0065 0066
汇编语言程序设计
1 将寄存器R2和R3的内容相加,结果存入R0。 2 将寄存器R2和R3的内容相加,如果有进位,寄存器R0的内 容置1,否则置0 3 若R1的内容是负数则置R0为-1,否则置0(提示:用TEST) 4 检测R3的是奇数,R0的内容置为1,否则置为0。(提示: 用移位检测C的方法来测量一位) 5 将内存中1000H起始的10个单元的内容取出加2送入原地址。 6 已知内存中1000H起始的10个单元中的数是ASC码,将其取 出送显示。 7 将键盘录入的数存到内存1000H单元中。 8 将键盘录入的10个数存到内存1000H-1009H。
有寄存器寻址,寄存器间接寻址等7种。
从表5.1中可以看出, (A组) INC DR 单操作数(DR的内容加1) (B组) LDRR DR,[SR] 双操作数 (DR [SR])
(4)从指令的功能区分
有运算、读写内存类指令,输入输出指令,转移 指令,子程序调用指令,置进位标志指令等。
从表5.1中可以看出, (A组) ADD DR ,SR 加运算 (B组) LDRR DR,[SR] 读写内存
41 42 43 44 45 46
A 2080
MVRD R3, 0006 ;指定被读数据的个数
MVRD R2, 20F0 ;指定被读、写数据内存区首地址
(2084) LDRR R0, [R2]
;读内存中的一个字符到R0寄存器
CALA 2100 ;调用子程序(入口地址为2100),完成显示、
汇编语言程序设计基本命令

汇编语言程序设计基本命令汇编语言是一种底层的编程语言,直接操作计算机硬件,其指令由一系列的机器码组成。
在汇编语言程序设计中,我们需要了解一些基本的命令,包括数据传送指令、算术运算指令、控制转移指令等,下面就对这些命令做一详细的介绍。
1.数据传送指令在汇编语言中,数据传送指令用来将数据从一个位置复制到另一个位置,常用的数据传送指令有MOV、LEA和XCHG。
-MOV指令:将源操作数的值复制给目标操作数,格式为MOV目标操作数,源操作数。
-LEA指令:用来将有效地址(即内存中的地址)传送给寄存器,格式为LEA目标操作数,源操作数。
-XCHG指令:交换两个操作数的值,格式为XCHG目标操作数,源操作数。
2.算术运算指令在汇编语言中,我们可以使用一系列算术运算指令来对数据进行运算和处理,常见的算术运算指令有ADD、SUB、MUL和DIV等。
-ADD指令:用于进行加法运算,格式为ADD目标操作数,源操作数。
-SUB指令:用于进行减法运算,格式为SUB目标操作数,源操作数。
-MUL指令:用于进行乘法运算,格式为MUL目标操作数,源操作数。
-DIV指令:用于进行除法运算,格式为DIV目标操作数,源操作数。
控制转移指令用于改变程序的执行流程,常见的控制转移指令有JMP、JZ、JE、JNE等。
-JMP指令:用于无条件地跳转到目标地址继续执行,格式为JMP目标地址。
-JZ指令:用于当结果为零时跳转到目标地址继续执行,格式为JZ目标地址。
-JE指令:用于当结果相等时跳转到目标地址继续执行,格式为JE目标地址。
-JNE指令:用于当结果不相等时跳转到目标地址继续执行,格式为JNE目标地址。
4.逻辑运算指令逻辑运算指令用于对数据进行逻辑运算,常见的逻辑运算指令有AND、OR、XOR和NOT等。
-AND指令:对两个操作数的对应位进行与运算,格式为AND目标操作数,源操作数。
-OR指令:对两个操作数的对应位进行或运算,格式为OR目标操作数,源操作数。
MCS-51系列单片机的指令系统和汇编语言程序

3·1 汇编指令第3 章MCS 一51 系列单片机的指令系统和汇编语言程序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。
指令系统与汇编语言程序设计

1010011i n
85 n1 n2
MOV DPTR,#d1d2 ;DPTR←d1d2
90 d1 d2
习题1:找出配对指令,实精现选p反pt 向传送。
《单片机原理及应用》教学课件
例2-4-1:顺序执行下列指令序列,求每一步执行结果。
MOV A,#30H
;A= 30H
MOV 4FH,A
;(4FH)= 30H
2-1 指令格式
一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释]
换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数
1.标号:指令的符号地址 2.操作码:指明指令功能。 3.操作数:指令操作对象 数据、地址、寄存器名及约定符号。 4.注释行:说明指令在程序中的作用。
第2章 指令系统与汇编语言程序设计 2-1 指令格式 2-2 指令寻址方式 2-3 状态标志 2-4 MCS-51指令系统
《单片机原理及应用》教学课件
单片机指令系统概述
一、MCS-51指令分类
MCS-51单片机共有111条指令。 1.按指令所占的字节数分类
①单字节指令49条 ②双字节指令46条 ③三字节指令16条 每条指令的平均字节数:
精选ppt
《单片机原理及应用》教学课件
例:查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H单元中,要 求将查表求Y,存入片内RAM21H单元。
2)指令地址
1000H 1002H 1004H 1005H 1007H 1008H 100BH
源程序
ORG 1000H
;程序起始地址
SQU: MOV A,20H ;取X
操作码和操作数是指令主体。
精选ppt
指令系统与汇编语言程序设计例

1
程序1
DATA SEGMENT
NAMES DB ‘TOM..’,20 DB ‘CATE’,25 DATA ENDS 该数据区在内存中的存放情况?
2
程序2
DATA SEGMENT A DB ‘123ABC’
DATA ENDS
DATA SEGMENT
9
10
)
序
,(
序
程
ห้องสมุดไป่ตู้
,
,
,
:
5
MOV DX 280H IN AL DX MOV CX 8 NEXT ROR AL 1 JNC NEXT1 MOV Byte PTR[BX]
0FFH JMP NEXT2 NEXT1 MOV [BX] 0
,
,
:
程序5(序)
NEXT2:INC BX LOOP NEXT …… 如果从280H端口输入的是
ASSUME CS:CODE, DS:DATA, ES:DATA
STR2 DB ‘HELLO WOOLD!’ FLAG DB ? CODE SEGMENT
DATA SEGMENT
6
程序4 (序)
START:MOV AX,DATA MOV DS,AX MOV ES,AX LEA BX,FLAG LEA SI,STR1 LEA DI,STR2 MOV CX,COUNT CLD
LP:MOV AH,2 MOV AL,[BX] XCHG AL,DL
CODE SEGMENT
INC BX
ASSUME CS:CODE,
DS:DATA
START:MOV AX, DATA
MCS-51单片机指令系统与汇编语言程序设计

docin/sundae_meng
P73 例2.58
ORG 0100H
MOV DPTR,#DATA LOOP2: MOV R1,A
MOV R0,#30H
INC R1
MOV R1,#40H LOOP: MOVX A,DPTR
START:
ORG 1000H MOV DPTR,#TABLE MOV A,20H ANL A,#0FH MOVC A,@A+DPTR MOV 21H,A
docin/sundae_meng
TABLE:
MOV A,20H ANL A,#0F0H
SWAP A MOVC A,@A+DPTR MOV 22H, A SJMP $ DB 30H,31H,32H,33H,34H
docin/sundae_meng
ORG 1000H
START: MOV A, 40H
; 将X送入A中
JZ COMP
; 若A为0,转至COMP处
JNB ACC.7, POST ; 若A第7位不为1(X为正数),则程序转到
POST处,否则(X为负数)程序往下执行
MOV A, #0FFH ; 将1(补码)送入A中
docin/sundae_meng
2.4.1 汇编语言程序设计的步骤
汇编语言程序设计:根据任务要求,采用汇编语言编制程序的过程称为汇编 语言程序设计。 汇编语言程序设计的步骤: (1)拟订设计任务书 (2)建立数学模型 (3)确定算法 (4)分配内存单元,编制程序流程图 (5)编制源程序
进一步合理分配存储器单元和了解I/O接口地址;按功能设计程序,明确 各程序之间的相互关系;用注释行说明程序,便于阅读和修改调试和修改。 (6)上机调试 (7)程序优化
第三章MCS51系列单片机指令系统及汇编语言程序设计

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条)
大学课件MCS51单片机指令系统与汇编语言程序设计

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实用教程 第3章 指令与汇编语言程序设计
2.比较转移指令应用举例
例3-3程序用比较转移指令修改如下:
START:
MOV R0,#30H ;指向第一个单元
MOV A,#0
;送的第一个数
AA: MOV @R0,A ;循环体,完成数据传送
INC A
;修改送的数据
INC R0
;修改指向的单元
CJNE A,#16,AA ;根据操作数信息控
;若A﹥data,PC←PC +rel,程序转移,Cy=0; ;若A﹤data,PC←PC +rel,程序转移,Cy=1; (2)CJNE Rn,#data,rel ;PC←PC +3,若Rn=data,程序顺序执行 ;若Rn﹥data,PC←PC +rel,程序转移,Cy=0; ;若Rn﹤data,PC←PC +rel,程序转移,Cy=1; (3)CJNE @Ri,#data,rel ;PC←PC +3,若=data,程序顺序执行 ;若(Ri)﹥data,PC←PC +rel,程序转移,Cy=0; ;若(Ri)﹤data,PC←PC +rel,程序转移,Cy=1; (4)CJNE A,direct,rel ;PC←PC +3,若A=(direct),程序顺序 执行; ;若A﹥(direct),PC←PC +rel,程序转移,Cy=0; ;若A﹤(direct),PC←PC +rel,程序转移,Cy=1;
MOV R2,#0H MOV R3,#0 AA: MOV A ,@R0 JB P,BB
INC R2
BB: CC:
SJMP CC INC R3 INC R0 DJNZ 20H,AA;
RET
单片机实用教程 第3章 指令与汇编语言程序设计
[例3-12]根据A中的内容选择相应的程序段执行。
START:MOV DPTR,#TAB ;指令表首址送DPTR
按照指令的顺序依次执行的程序,它也是所 有程序设计中最基本、最重要的程序 。
单片机实用教程 第3章 指令与汇编语言程序设计
[例3-1] 0~15共十六立即数送到内部RAM 30H开始的 单元中。
本题题意非常清楚,就是将0送到内RAM 30H 单元,将1送到内RAM 31H单元,以此类推。将立即 数送到内部RAM单元有现成的指令,这是一个功能 性数据处理,格式上可以写成子程序的形式,程序设 计如下:
RRC A;
Cy A7
A0
单片机实用教程 第3章 指令与汇编语言程序设计
[例3-6] 执行下面的指令,在注释区记录A中数据的变 化。
MOV A,#03H ;A=00000011B=3
CLR C
;Cy=0
RLC A
;A=00000110B=6,Cy=0
RLC A
;A=00001100B=12,Cy=0
4)DEC @Ri
;(Ri)←(Ri)-1
单片机实用教程 第3章 指令与汇编语言程序设计
3、循环程序设计举例
[例3-3] 0~15共十六个立即数送到内部RAM 30H开 始的单元中。
MOV 30H,#0
MOV 31H,#1 ……
MOV R0,#30H MOV A,#0 MOV @R0,A
MOV R0,#31H MOV A,#1 MOV @R0,A
单片机实用教程 第3章 指令与汇编语言程序设计
(3)判A转移指令 JB bit,rel ;PC←PC+3,若(bit)=1, ;则转移,PC←PC+rel ; 若(bit)=0,则顺序执行。 JNB bit,rel ;PC←PC+3,若(bit)=0, ;则转移,PC←PC+rel ; 若(bit)=1,则顺序执行。 JBC bit,rel ;PC←PC+3,若(bit)=0, ;则顺序执行。 ;若(bit)=1,则转移, ;PC←PC+rel,且(bit)←0
;送循环体循环修改
INC A
;循环修改
INC R0
;修改指向的单元
DJNZ R2,AA ;循环次数减1,到0退
;出循环,循环控制
RET
;子程序返回0
单片机实用教程 第3章 指令与汇编语言程序设计
二、比较转移指令与循环程序设计
1、比较转移指令 (1)CJNE A,#data,rel ;PC←PC +3,若A=data,程序顺序执行
START: MOV 30H,#0 ;(30H)←#0
MOV 31H,#1 ;(31H)←#1
…
MOV 3FH,#15 ;(3FH)←#15
RET
;返回
单片机实用教程 第3章 指令与汇编语言程序设计
一、循环程序的结构
1、循环程序:主要是用来实现功能相同、反复执行 的操作。
循环初值
循环体
循环修改
Y 循环控制 N 退出循环
可以看出左移一次相当于乘2;类似右移相当除以2。
2.循环移位指令应用
单片机实用教程 第3章 指令与汇编语言程序设计
2.循环移位指令应用
[例3-7]将第二章的循环流水灯程序修改成循环程序
ORG 0000H
LJMP SETUP
ORG 0030H
SETUP: MOV A,#0FEH ;循环初值
MAIN: MOV P1,A
1.条件转移指令 (1)判A转移指令
JZ rel ;PC←PC+2,若A=0,则转移, ;PC←PC+rel ;若A≠0,则顺序执行。
JNZ rel ;PC←PC+2,若A≠0,则转移, ;PC←PC+rel ;若A=0,则顺序执行。
单片机实用教程 第3章 指令与汇编语言程序设计
(2)判Cy转移指令 JC rel ;PC←PC+2,若Cy=1,则转移, ;PC←PC+rel ;若Cy=0,则顺序执行。 JNC rel ;PC←PC+2,若Cy=0,则转移, ;PC←PC+rel ;若Cy=1,则顺序执行。
一、堆栈的概念
1、堆栈是内部RAM中一段用来暂时存放数据的存储区, 通常用来保护断点和现场。
2、SP——堆栈指针对其进行管理,SP始终指向堆栈顶 部数据的地址,SP在单片机复位后它的值是07H。
3、堆栈中数据的存取方式按照先进后出、后进先出的 原则进行 。
4、堆栈操作
(1)压栈:先将SP加1,然后将要压入堆栈的数据 送到SP指示的单元中。
(2)隐含的堆栈操作指令 LCALL addr16 ;①PC←PC+3,
一般情况下,应在 初始化区对SP进 行设置,将堆栈设 定在数据缓冲区。
单片机实用教程 第3章 指令与汇编语言程序设计
2.条件转移指令应用 [例3-9]编写程序计算内RAM 20H单元中“1”的个
数,存放在R3中。 START:MOV R3,#0
MOV A,20H MOV R2,#8 AA: RLC A JNC BB INC R3 BB: DJNZ R2,AA; RET
CLR C
RLC A
;A的值乘以2
JNC AA
;
INC DPH ;超过256在DPH中加1
AA: JMP @A+DPTR ;散转指令
TAB: AJMP LOOP0 ;无条件转移指令表
AJMP LOOP1
…
AJMP LOOPn
LOOP0:…
;分支程序0
…
LOOP1:…
;分支程序1
…
单片机实用教程 第3章 指令与汇编语言程序设计
INC R1 BB: INC R0
DJNZ R2,AA;
RET
单片机实用教程 第3章 指令与汇编语言程序设计
五、分支程序的设计
1.单分支结构程序
条件成立?
2.多分支结构程序
(A)=n
S0
S1
…
Sn
分支0 分支1
分支n
图3-8 散转程序结构图
单片机实用教程 第3章 指令与汇编语言程序设计
[例3-11] 内部RAM 30H开始的单元,存放有一组无符号 数据块,数据块的长度在20H单元中,试编写程序计算数据块 中满足偶校验和满足奇校验数的个数,分别存放在R2和R3中。 START:MOV R0,#30H
(2)弹栈:先将数据弹出,然后将SP减1,指向新 的单元 。
单片机实用教程 第3章 指令与汇编语言程序设计
二、堆栈操作指令
1、堆栈操作指令
PUSH direct ;①SP+1→SP,
;②(direct)→(SP)
POP direct ;① (SP)→(direct),
;②SP-1→SP
[例3-13]已知SP=60H,分析执行下列指令后的结果。
循环初值
循环控制 Y
循环体 循环修改
N 退出循环
图 3 - 2 循环程序的两种结构
单片机实用教程 第3章 指令与汇编语言程序设计
循环程序一般包括四个部分:循环初值、循环 体、循环修改和循环控制。
循环初值:循环程序开始循环执行的初始条件,如 循环的次数等,在循环程序的开始部分,只执行一 次。
循环体:是循环程序的核心,就是反复要完成的具 体操作功能。
2、画流程图
起止框 处理框 判断框 输入/输出框 流程指向线
单片机实用教程 第3章 指令与汇编语言程序设计
3、编写源程序画流程图 4、汇编和调试 程序书写的两种格式:
第一种是完整程序格式的形式,即在第 二章介绍的程序一般结构 。
第二种就是子程序的形式。
二、顺序程序设计 顺序程序设计 :又叫直线程序,它是
;点亮灯
LCALL DELAY ;调延时子程序
RL A
;循环修改
LJMP MAIN