单片机汇编共17页文档
单片机PPT汇编语言

ORG 2000H 90 21 00 MOV DPTR, #TAB E5 20 MOV A , 20H 93 MOVC A , @A+DPTR F5 21 MOV 21H , A 22 RET ORG 2100H 00 01 04 TAB:DB 00H,01H,04H,09H,10H,19H 微机原理与接口技术 第五章 汇编语言程序设计 09,10,19
第五章 汇编语言程序设计
5.1 5.2 5.3 5.4 5.5 概述 顺序与循环程序设计 分支程序及查表设计 子程序设计 综合编程举例
微机原理与接口技术 第五章 汇编语言程序设计
5.1
5.1.1 程序设计语言
1、机器语言 、 2、汇编语言 、 3、高级语言 、
概 述
5.1.2 汇编语言的规范
1. 汇编语言源程序的格式
概 述
例1、AA EQU R1; R1 与 AA 等值 、 等值。 则“ MOV A , AA ”与“ MOV A , Rl ”等值。 与 等值 例2、K1 EQU 40 、 DL EQU 0FA4CH MOV A, K1 ; (40)=(28H)→ A LJMP DL ; FA4CH → PC
微机原理与接口技术 第五章 汇编语言程序设计
5.1
2. 汇编语言伪指令
(4)、DB ( Define Byte ) 、 定义字节伪指令,它的功能是从指定单元开始定义( 定义字节伪指令,它的功能是从指定单元开始定义(存 码字符。 储)若干个字节的数值或 ASCll 码字符。常用于定义数据 常数表。它的格式如下: 常数表。它的格式如下: 操作码 操作数 DB 字节常数或 ASCII字符 字符
微机原理与接口技术 第五章 汇编语言程序设计
LP :
单片机汇编程序算术逻辑运算

单元中内容减1。
该组指令的操作不影响PSW。
2021/5/
单片机原理B及a接ck口技术
8、 十进制调整指令(1条)
汇编指令格式 DA A;
机器码格式 1101 0100
操作
若 (A0-3)>9或AC=1,则(A0-3)+6→A0-3 同时,若(A4-7)>9或CY=1,则(A4-7)+6→A4-7
SUBB A,direct;1001 0101 (A) -CY -(direct) →A direct
SUBB A,@Ri; 1001 011i (A) -CY -((Ri)) →A
SUBB A, #data; 1001 0100 (A) -CY -#data →A data
注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中 将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中 将间接寻址(Ri为R0或R1)
结果为:(A)=74H 标志位为:Cy=0 AC=0 OV=1 P=0
2021/5/
单片机原理B及a接ck口技术
4、 乘法指令(1条)
汇编指令格式
机器码格式
操作
MUL AB
;
1010 0100 (A)×(B)→B15-8A7-0
该指令将累加器A和寄存器B中两个无符号数相乘,所得160111B(即67的BCD码),CY内容为1。求执行下列
指令后的结果。
ADDC A,R3;
DA A;
解:先执行ADDC A,R3; (A): 0101 0110 BCD:56
(R3): 0110 0111 BCD:67 (+)(CY): 0000 0001 BCD:01
单片机指令说明(汇编)

汇编伪指令注释:1、DS ---预留存储区命令格式:〔标号:〕 DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。
存储区预留的存储单元数由表达式的值决定。
TMP: DS 1从标号TEP地址处开始保留1个存储单元(字节)。
2、BIT---定义位命令格式:字符名称 BIT 位地址其功能用于给字符名称定义位地址。
SPK BIT P3.7经定义后,允许在指令中用SPK代替P3.7。
3、USING指令USING指令通知汇编器使用8051的哪一个工作寄存器组。
格式: USING 表达式(值必须为0-3,默认值为0。
)USING 0使用第0组工作寄存器。
4、SEGMENT指令SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。
格式:再定位段名 SEGMENT 段类型〔再定位类型〕其中,“再定位段名”用于指明所声明的段。
“段类型”用于指定所声明的段将处的存储器地址空间。
可用的段类型有 CODE、XDATA、DATA、IDATA和BIT。
STACK_SEG SEGMENT IDATADATA_SEG SEGMENT DATA5、RSEG---再定位段选择指令再定位段选择指令为RSEG,用于选择一个已在前面定义过的再定位段作为当前段。
格式: RSEG 段名段名必须是在前面已经声明过的再定位段。
DATA_SEG SEGMENT DATA ;声明一个再定位DATA段RSEG DATA_SEG ;选择前面声明的再定位DATA段作为当前段6、绝对段选择指令CSEG---绝对代码段DSEG---内部绝对数据段XSEG---外部绝对数据段ISEG ---内部间接寻址数据段BSEG---绝对位寻址数据段格式:CSEG [AT 绝对地址表达式]DSEG [AT 绝对地址表达式]XSEG [AT 绝对地址表达式]ISEG [AT 绝对地址表达式]BSEG [AT 绝对地址表达式]括号内是可选项,用来指定当前绝对段的基地址。
完整word版单片机汇编语言经典一百例

51单片机实用程序库4.1 流水灯程序介绍:利用P1 口通过一定延时轮流产生低电平输出,以达到发光二极管轮流亮的效果。
实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。
程序实例(LAMP.ASM)ORG 0000HAJMP MAINORG 0030HMAIN:9MOV A,#00HMOV P1,A ;灭所有的灯MOV A,#11111110BMAIN1:MOV P1,A ;开最左边的灯ACALL DELAY ;延时RL A ;将开的灯向右边移AJMP MAIN ;循环DELAY:MOV 30H,#0FFHD1: MOV 31H,#0FFHD2: DJNZ 31H,D2DJNZ 30H,D1RETEND4.2 方波输出程序介绍:P1.0 口输出高电平,延时后再输出低电平,循环输出产生方波。
实际应用中例如:波形发生器。
程序实例(FAN.ASM):ORG 0000HMAIN:;直接利用P1.0口产生高低电平地形成方波////////////// ACALL DELAYSETB P1.0ACALL DELAY10CLR P1.0AJMP MAIN;////////////////////////////////////////////////// DELAY:MOV R1,#0FFHDJNZ R1,$RETEND五、定时器功能实例5.1 定时1秒报警程序介绍:定时器1每隔1秒钟将p1.o的输出状态改变1 次,以达到定时报警的目的。
实际应用例如:定时报警器。
程序实例(DIN1.ASM):ORG 0000HAJMP MAINORG 000BHAJMP DIN0 ;定时器0入口MAIN:TFLA G EQU 34H ;时间秒标志,判是否到50个0.2秒,即50*0.2=1秒MOV TMOD,#00000001B;定时器0工作于方式1MOV TL0,#0AFHMOV TH0,#3CH ;设定时时间为0.05秒,定时20次则一秒11开总中断SETB EA ;SETB ET0 ;开定时器0中断允许SETB TR0 ;开定时0运行SETB P1.0LOOP: AJMP LOOPDIN0:;是否到一秒//////////////////////////////////////// INCC: INC TFLAGMOV A,TFLAGCJNE A,#20,REMOV TFLAG,#00HCPL P1.0;////////////////////////////////////////////////// RE:MOV TL0,#0AFHMOV TH0,#3CH ;设定时时间为0.05秒,定时20次则一秒RETIEND5.2 频率输出公式介绍:f=1/ts51 使用12M晶振,一个周期是1微秒使用定时器1的频率为200HZ,以产生65535,最大值为0工作于方式例:200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电12平或低电平的时间为2500 微秒。
51单片机汇编程序

51单片机汇编程序1. 简介51单片机是一种常用的8位单片机芯片,具有广泛的应用领域。
51单片机的编程语言主要有汇编语言、C语言和底层汇编语言。
本文主要介绍51单片机的汇编程序。
2. 汇编程序基础2.1 寄存器51单片机的CPU有4个8位寄存器(A、B、DPTR、PSW)和一个16位寄存器(PC)。
在汇编程序中,我们可以使用这些寄存器来进行各种操作。
•A寄存器(累加器):用于存储数据和进行算术运算。
•B寄存器:辅助寄存器,可用于存储数据和进行算术运算。
•DPTR寄存器:数据指针寄存器,用于存储数据存取的地址。
•PSW寄存器:程序状态字寄存器,用于存储程序运行状态信息。
•PC寄存器:程序计数器,用于存储当前执行指令的地址。
2.2 指令集51单片机的指令集包含了多种汇编指令,可以用来进行数据操作、算术运算、逻辑运算、控制流程等。
常用的汇编指令有:•MOV:数据传送指令。
•ADD、SUB:加法和减法运算指令。
•ANL、ORL、XRL:逻辑运算指令。
•MOVX:外部RAM的读写指令。
•CJNE、DJNZ:条件分支指令。
•LCALL、RET:函数调用和返回指令。
2.3 编写一个简单的汇编程序下面是一个简单的汇编程序示例,用于将A寄存器中的数据加1,并将结果存储到B寄存器中。
ORG 0x0000 ; 程序的起始地址MOV A, #0x01 ; 将A寄存器赋值为1ADD A, #0x01 ; 将A寄存器加1MOV B, A ; 将A寄存器的值传送到B寄存器END ; 程序结束在上面的示例中,ORG指令用于指定程序的起始地址,MOV 指令用于将A寄存器赋值为1,ADD指令用于将A寄存器加1,MOV指令用于将A寄存器的值传送到B寄存器,END指令用于标记程序结束。
3. 汇编语言的应用51单片机的汇编语言广泛应用于各种嵌入式系统中,包括智能家居、工业自动化、仪器仪表等领域。
汇编程序具有以下特点:•程序执行效率高:由于汇编语言直接操作硬件,可以精确控制程序的执行流程,提高程序的执行效率。
单片机应用技术(汇编语言)电子课件

89C51/89S51内部有4KB Flash 存储器 (89C52/89S52有8KB),程序存储器用于存放用户 程序和原始数据等。
认识单片机的结构
4、定时/计数器
89C51/89S51有2个16位的可编程定时/计数器 T0和T1(89C52/89S52有3个,除T0、T1以外,还 有一个定时/计数器T2),实现定时或计数功能。
认识单片机的引脚
(4) 控制引脚ALE/ PROG 、PSEN、EA/Vpp ALE/ PROG(30脚):地址锁存允许输出/编程
脉冲输入端。当访问外部程存器时,ALE的输出用 于锁存地址的低8位。而不访问外部存储器时, ALE端将有一个1/6振荡频率的正脉冲信号输出,这 个信号可以用于识别单片机时钟电路是否工作,也 可以当作时钟信号向外输出。在对片内程序存储器 编程时,用于输入编程脉冲,低电平有效。
单片机工作条件
复位电路是在CPU通电后,给复位端9脚 (RST)一个复位脉冲,使CPU内部处于初始工作 状态。51系列单片机是高电平复位,在正确复位后 (工作状态)9脚应保持低电平。如果复位电路出 现故障,CPU也将无法工作。由于CPU的复位电路 只在开机的瞬间产生复位脉冲,周期一般为几毫秒, 用万用表无法鉴别正常与否。对于只有上电复位的 复位电路,快速判断CPU复位电路是否有故障可以 采取强制复位的方法,将复位端瞬时接电源正端, 如果此时CPU恢复工作,说明CPU的复位电路有故 障。对于有按键复位的复位电路,按下复位键,测 量复位端是否有高电平产生来判断复位电路工作是 否正常。
认识单片机的引脚
从单片机诞生至今的近30年中,已有上百家生 产商加入单片机的生产和研发行列,生产出几百个 系列的上万个机种的单片机,使用户有较大的选择 余地。除51系列单片机以外,其他一些公司如 Motorola公司、德州仪器TI公司、ST公司、美国微 芯公司等都推出了一些各具特色的单片机。但51系 列单片机曾在世界单片机市场占有50%以上的份额, 多年来国内也一直以51系列单片机作为教学的主要 机型,因此本书仍以51系列单片机为例讲解单片机 原理及应用技术。
单片机课件 汇编语言程序设计PPT

4.1 概述
---- 程序头( 即定义变量和等值符号)---SCL BIT P1.2 ;定义SCL位变量 SDA BIT P1.3 ;定义SDA位变量 ByteCon DATA 30H ;定义字节变量
ByteCon ……
ORG nnnn ;CPU复位后,第一指令机器码存 放单元地址,具体值由CPU类型决定。
单片机课件 汇编语言程序设计PPT
4.1 概述
一、汇编语言伪指令 伪指令
汇编程序某些指令在汇编时并不产生目标代码,不 影响程序的执行,不是CPU能执行的指令,只提供一 些汇编控制信息的指令。 常用的伪指令: (1)设置起始地址ORG
格式: ORG nn 1、ORG:表明为后续源程序经汇编后的目标程序安 排存放位置,nn则给出了存放的起始地址值;
可以使人们抓住程序的基本线索,对全局有完整的了解。
4.1 概述
好处: (1)容易发现设计思想上的错误和矛盾,便于找出解 决问题的途径。 (2)便于把较大的程序分成若干个模块,从而分头进 行设计,最后合在一起联调。 5、按所使用计算机的指令系统,依据框图写出汇编语言 程序。 编程的三个原则:尽可能的节省数据存储单元;缩 短程序长度;减少执行时间。
8000H 8096H
4.1 概述
(5)赋值(等值)EQU 格式: 标号 EQU 项或表达式 功能:将语句操作数的值赋于本语句的标号,用EQU 赋过值的标号名可以用作数据地址、代码地址、位地址 或是一个立即数,它可以是8位、也可以是16位。 注意: 1、在同一程序中,用EQU伪指令对标号赋值后,该 标号的值在整个程序中不能再改变;
须是事先未定义过的。
4.1 概述
例4.6 A1 BIT P1.0 A2 BIT 02H
单片机汇编 pdf

单片机汇编
单片机汇编语言是一种低级编程语言,它允许开发者直接与单片机的硬件进行交互。
汇编语言在单片机编程中的重要性体现在以下几个方面:
1. 硬件控制:汇编语言能够提供对单片机硬件的精确控制,因为它本质上是一种直接对CPU 指令集进行编程的语言。
2. 性能优化:对于需要优化性能的应用,汇编语言可以更高效地利用单片机的资源,因为它允许开发者精细地调整代码以减少执行时间和内存占用。
3. 理解底层:学习汇编语言可以帮助开发者更好地理解计算机的实际运行步骤和CPU的工作方式,这对于深入理解单片机的工作原理非常有帮助。
4. 调试与优化:在高级语言编程中遇到问题时,有时候需要深入到汇编层面进行调试和优化,这对于解决复杂的硬件相关问题至关重要。
需要注意的是,虽然汇编语言提供了对硬件的直接控制,但它的学习曲线相对陡峭,且编程效率不如高级语言。
因此,对于一些不需要深入了解硬件或者对性能要求不是特别高的应用,使用高级语言可能更为合适。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BRCH:JC NEXT
;若该数小,则进行下一次循环
XCH A,MAX
;若该数大,则与MAX交换
NEXT:INC R0
;为下一次循环做准备
DJNZ LEN,LOOP ;判断循环次数
SJMP $
END
返回
例题4:R0的低四位对应一个16进制数码,编写程序,将该数码对应 字符的ASCII编码送入R1。(例如:若R0的低4位为1110B,对应16 进制数码E,则将字符’E’的ASCII码送入R1)
汇
;(1002H)=8AH,(1003H)=00H,(1004H)=0AH,(1005H)=00H
编
语 g. DS(存储空间定义)伪指令
言
[标号:] DS 项或项表
格 例: SPC: DS 08H; 从SPC地址开始,预留8个存储单元
式
DB 25H ; (SPC+8)=25H
及 h. BIT(位地址赋值)伪指令
循 解:
环
ORG 1000H和MV A, R0查ANL A, #0FH
表
ADD A, #03H
程
MOVC A, A+PC ; 查表指令
序
MOV R1, A ;指令长度为一个字节
设
SJMP $ ;指令长度为两个字节
计 ASCTAB:DB ‘0’, ‘1’, ‘2’, ‘3’, ‘4’ ; 制表
DB ‘5’, ‘6’, ‘7’, ‘8’, ‘9’
汇
MOV A , AA
编
LCALL DELAY
语 d. DATA(数据地址赋值)伪指令
言
字符名称 DATA 表达式 ;将右边表达式(8位)赋左边,
格
;只能是数据或地址等DATA型
式
字符名称 XDATA 表达式; 16位
及
例: AA DATA 35H
构
DELAY XDATA 0A7E6H
成
e. DB(字节定义)伪指令
循 环
解: ORG 1000H LEN DATA 31H
和 查 表 程
MAX DATA 32H MOV R0,#ADDR MOV MAX, #00H LOOP:MOV A,R0
;R0指向数据块,初始化为数据块首地址 ;MAX单元初始化,清零 ;开始循环体,将一个数取到A
序 设 计
CJNE A,MAX,BRCH;比较该数与MAX的大小
则在子程序的开始部分用压入堆栈命令保护现场,在结束部分用弹出
堆栈命令恢复现场
可利用寄存器、存储单元或堆栈进行子程序的入口参数和出口参
子 数传递
程 序 例题5:设MDA和MDB内有两数a和b, 设 请编出求c=a2+b2并把c送入MDC的程序, 计 设a和b皆为小于10的整数
SJMP $ END
JZ DONE
;若VAR=0,则转DONE
JNB ACC.7,POS;若VAR>0,则转POS
MOV A,#0FFH ;若VAR<0,-1给A
SJMP DONE
返回
2.3.6 循环和查表程序设计 例题3:已知内部RAM ADDR为始址的无符号数数据块的块长存储于 LEN单元内,请编程找出数据块中的最大数并存入MAX单元
成
b. END(结束汇编)伪指令
例:END
c. EQU(赋值)伪指令
字符名称 EQU 数据或汇编符
;将右边的数据或汇编符赋给左边的字符名称
例如:AA EQU R1 ;AA当作寄存器R1使用 A10 EQU 10H ;A10=10H
DELAY EQU 07E6H ; DELAY=07E6H
MOV R0 , A10
机器汇编
返回
2.3.4 顺序程序设计
例题1:求一个16位二进
制负数的补码。设此16
位二进制数存于NUM、
顺
NUM+1单元
序
程
序
设
计
解:补码=反码+1 ORG 1000H
NUM DATA 20H MOV R0,#NUM MOV A,R0 CPL A ADD A,#01H MOV R0,A
INC R0 MOV A,R0 CPL A ADDC A,#00H MOV R0,A SJMP $ END
[标号:] DB 项或项表
例: TAB: DB 45H,73,‘A’ ;将45H、73、‘A’依次存放
;入TAB地址开始的存储单元
f. DW(字定义)伪指令
[标号:] DW 项或项表
例:ORG 1000H
HETAB:DW 1234H, 8AH, 10 ;(1000H)=12H,(1001H)=34H
返回
2.3.5 分支程序设计
例题2:已知VAR单元内有一自变量X,按如下条件编出
求函数值Y并将它存入FUNC单元的程序
若X>0,则Y=1;
若X=0,则Y=0;
分
若X<0,则Y= -1。
支 程 ORG 1000H 序 VAR DATA 30H 设 FUNC DATA 31H 计
MOV A,VAR
POS :MOV A,#01H DONE:MOV FUNC,A
DB ‘A’, ‘B’, ‘C’, ‘D’, ‘E’ , ‘F’
END
‘9’ ‘8’ ‘7’ ‘6’ ‘5’ ‘4’ ‘3’ ‘2’ ‘1’ ‘0’ SJMP $
MOV R0, A MOVC A, A+PC …
2.3.7 子程序设计 子程序可自动保护断点(即主程序中下一条指令的地址),但不
会自动保护现场(即运行子程序前的寄存器状态),若要保护现场,
单片机汇编
§2.3 汇编语言程序设计
主要内容 汇
编
语
1. 汇编语言格式及构成
言
2. 汇编源程序设计步骤及汇编
程 序
3. 顺序程序设计
设
4. 分支程序设计
计
5. 循环和查表程序设计
6. 子程序设计
2.3.1 汇编语言格式
标号段:操作码段 操作数段;注释段
如:LP1: MOV R2, #10; 设置循环次数
构
字符名称 BIT 位地址
成 例:A1 BIT 00H
A2 BIT P1.0
MOV C,A1 ;将位地址00H的值送Cy
返回
2.3.3 汇编源程序设计步骤及汇编 源程序设计步骤: 1)拟定设计任务书,设计任务书包括:程序功能、技术指标、精度
汇 等级、实施方案、工程进度、所需设备、研制费用、人员分工 编 2)建立数学模型 语 3)确立算法 言 4)绘制程序流程图 格 5)编制汇编语言源程序 式 6)上机调试 及 构 汇编语言源程序的汇编 成 人工汇编
汇 标号段:指明所在指令操作码字节所在的内存地址。标号由大写英文 编 字母开头的字母和数字串组成,长度为1~8个字符。标号段可省略。
语 言
2.3.2 汇编语言构成
格
1. 指令性语句(助记符语句)
式
2. 指示性语句(伪指令)
及
a. ORG(起始汇编)伪指令
构
例:ORG 2000H; 指定程序存储地址从2000H开始