单片机课程第4章 80C51汇编程序设计

时间:2025-07-08

第4章 汇编语言程序设计教学内容: 教学内容: 4.1 汇编语言程序设计过程 4.2 基本程序结构 4.3 子程序及其调用 4.4 简单 设备的并口直接驱动示例 简单I/O设备的并口直接驱动示例

教学目的:1、掌握80C51汇编语言程序设计步骤 2、掌握80C51常用伪指令的使用方法 3、熟悉几种基本的程序结构和简单I/O程序设计方法

教学重点:1、 源程序形成目标程序的步骤 2、 伪指令与单片机指令的本质区别 3、 分支、循环、子程序及按键、LED显示程序的设计

教学难点:程序的设计及实现

4.1 汇编语言程序设计过程4.1.1 汇编语言程序设计过程 1.分析问题,确定算法或解题思路 2.画流程图 3.编写程序 4 .调试和修改

注意:程序语言的选择汇编语言,生成的目标程序占内存空间少、运行速 度快,具有效率高、实时性强。 高级语言,对系统的功能描述与实现简单, 高级语言,对系统的功能描述与实现简单,程序阅 读、修改和移植方便,适合于编写复杂的程序。 修改和移植方便,适合于编写复杂的程序。

流程描述流程图符号 “超级循环”框 架

4.1.2 程序编制的方法和技巧 强化模块观念程序模块(主程序模块、各种子程序模块) 模块化优点:分块设计、便于阅读、调试方便

采用循环和子程序使程序占用空间减少、结构清晰 循环初值和结束条件,避免“死机”现象 子程序的现场保护(注意栈平衡、寄存器内容) 对中断子程序还有注意保护PSW的内容

4.1.3 源程序的编辑和汇编目标程序的产生过程如下图:

4.1.3.1 源程序的编辑和汇编 源程序的编辑依据汇编语言规则 用好伪指令 符号不用中文 SJMP $ 用于调试 以 .ASM存盘ORG LJMP ORG MAIN:MOV MOV MOV LOOP:MOV INC DJNZ SJMP END 0000H MAIN 0040H R7,#16 R0,#60H A,#55H @R0,A R0 R7,LOOP $

源程序的汇编汇编源程序转为目标程序的过程叫汇编 汇编通常在Windows下的集成开发环境完成 用A51.EXE汇编生成.OBJ、.LIB及.LST

目标程序的连接.OBJ、.LIB经BL51.EXE生成无扩展名的绝对地址 目标文件 绝对地址目标文件可以用于仿真器调试 调试无误的目标文件用OH51.EXE转换为.HEX文件 .HEX文件经编程器写入单片机存储器

4.2 基本程序结构(无分支、无循环) 4.2.1 顺序程序

【例4-1】片内RAM的21H单元 片内RAM的21H单元 RAM 存放一个十进制数据十位的 ASCII码,22H单元存放该数 ASCII码 22H单元存放该数 据个位的ASCII码 据个位的ASCII码。编写程序 ASCII 将该数据转换成压缩BCD码存 将该数据转换成压缩BCD码存 BCD 放在20H单元。 放在20H单元。 20H单元

ORG LJMP ORG START:MOV ANL SWAP MOV MOV ANL ORL SJMP END

0000H START 0040H A,21H A,#0FH A 20H,A A,22H A,#0FH 20H,A $

;取十位ASCII码 ;取十

位ASCII码 取十位ASCII ;保留低半字节 ;保留低半字节 ;移至高半字节 ;移至高半字节 ;存于20H单元 存于20H ;存于20H单元 ;取个位ASCII码 取个位ASCII ;取个位ASCII码 ;保留低半字节 ;保留低半字节 ;合并到结果单元 ;合并到结果单元

4.2.2 分支程序 (单分支、双分支、多分支)【例4-2】设变量x以补码的 设变量x 形式存放在片内RAM 30H单 RAM的 形式存放在片内RAM的30H单 变量y 的关系是: 元,变量y与x的关系是: 大于0 当x大于0时,y=x; x=0时 当x=0时,y=20H; 小于0 ,y=x+5。 当x小于0时,y=x+5。 编制程序,根据x的大小求y 编制程序,根据x的大小求y并 送回原单元。 送回原单元。

ORG LJMP ORG START:MOV JZ ANL JZ MOV ADD MOV SJMP NEXT:MOV DONE:SJMP END

0000H START 0040H A,30H NEXT A,#80H DONE A,#05H A,30H 30H,A DONE 30H,#20H DONE

;取x至累加器 ;取 0,转 ;x = 0,转NEXT ;否 ;否,保留符号位 >0,转结束 ;x >0,转结束 <0处理 ;x <0处理 ;X+05H送 ;X+05H送Y 0,20H送 ;x = 0,20H送Y

【例4-3】根据R7的内容x(转移序号)转向相应的处理程序。 根据R7的内容x 转移序号)转向相应的处理程序。 R7的内容 R7内容为 内容为0 对应的处理程序入口地址分别为PP0 PP4。 PP0~ 设R7内容为0~4,对应的处理程序入口地址分别为PP0~PP4。

ORG 0000H LJMP START ORG 0040H

START:MOV ACALL AJMP JPNUM:MOV MOV ADD MOV MOVC XCH INC MOVC MOV MOV CLR JMP

R7,#3 JPNUM START DPTR,#TAB A,R7 A,R7 R3,A A,@A+DPTR A,R3 A A,@A+DPTR DPL,A DPH,R3 A @A+DPTR

;以转移序号3 ;以转移序号3为例 以转移序号

;置分支入口地址表首址 ;置分支入口地址表首址 ;乘2,调整偏移量 ;取地址高字节,暂存于R3 ;取地址高字节,暂存于R3 取地址高字节

;取地址低字节 ;取地址低字节 ;处理程序入口地址低 位送DPL 处理程序入口地址低8 ;处理程序入口地址低8位送DPL ;处理程序入口地址高 位送DPH 处理程序入口地址高8 ;处理程序入口地址高8位送DPH

TAB:DW DW DW DW DW PP0:MOV RET PP1:MOV RET PP2:MOV RET PP3:MOV RET PP4:MOV RET END

PP0 PP1 PP2 PP3 PP4 30H,#0 30H,#1 30H,#2 30H,#3 30H,#4

;转移序号为0 ;转移序号为0时,置功能号“0”于30H单元 转移序号为 置功能号“ 于30H单元 ;转移序号为1时,置功能号“1”于30H单元 ;转移序号为1 转移序号为 置功能号“ 于30H单元 ;转移序号为2 ;转移序号为2时,置功能号“2”于30H单元 转移序号为 置功能号“ 于30H单元 ;转移序号为3时,置功能号“3”于30H单元 转移序号为3 置功能号“ 于30H单元 ;转移序号为4时,置功能号“4”于30H单元 ;转移序号为4 置功能号“ 于30H单元 转移序号为

(2种:先执行,后判断;先判断,后执行) 4.2.3 循环程序 【例4-4】将内部RAM的30H至3FH单元初始化 …… 此处隐藏:1108字,全部文档内容请下载后查看。喜欢就下载吧 ……

单片机课程第4章 80C51汇编程序设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219