《单片机原理及应用》课程教学资源(PPT教学课件)第四章 汇编语言程序设计

第四章 汇編语言程序设讣
第四章 汇编语言程序设计

4.1汇编语言程序设计概述 所谓程序设计,就是按照给定的任务要求,编写 出完整的计算机程序。要完成同样的任务,使用的方 法或程序并不是唯一的。因此,程序设计的质量将直 接影响到计算机系统的工作效率、运行可靠性。 前面我们学过了汇编语言形式的指令系统,本章 重点介绍汇编语言程序结构以及如何利用汇编语言指 令进行程序设计的方法
所谓程序设计,就是按照给定的任务要求,编写 出完整的计算机程序。要完成同样的任务,使用的方 法或程序并不是唯一的。因此,程序设计的质量将直 接影响到计算机系统的工作效率、运行可靠性。 前面我们学过了汇编语言形式的指令系统,本章 重点介绍汇编语言程序结构以及如何利用汇编语言指 令进行程序设计的方法。 4.1 汇编语言程序设计概述

4.1.1汇编语言程序设计步骤 使用汇编语言设计一个程序大致上可分为以下几个步骤。 1)分析题意,明确要求。 (2)确定算法 (3)画程序流程图,用图解来描述和说明解题步骤。 起止框 处理框 ¥判断所框 流程线 连接点 (4)分配内存工作单元,确定程序与数据区的存放地址。 (5)编写源程序 (6)程序优化 (⑦)上机调试、修改和最后确定源程序
4.1.1 汇编语言程序设计步骤 使用汇编语言设计一个程序大致上可分为以下几个步骤。 (1) 分析题意,明确要求。 (2) 确定算法。 (3) 画程序流程图,用图解来描述和说明解题步骤。 图4.1 常用的流程图符号 (4) 分配内存工作单元,确定程序与数据区的存放地址。 (5) 编写源程序 (6) 程序优化。 (7)上机调试、修改和最后确定源程序

422伪指令语句 伪指令并不是真正的指令,也不产生相应的机器 码,它们只是在计算机将汇编语言转换为机器码时, 指导汇编过程,告诉汇编程序如何汇编。下面介绍 些MCS-51汇编程序常用的伪指令 (1)汇编起始伪指令ORG 格式:[标号:]ORG16位地址 功能:规定程序块或数据块存放的起始地址。如 oRG 8000H START: MOVA,#30H 该指令规定第一条指令从地址8000H单元开始存放, 即标号 START的值为8000H
4.2.2 伪指令语句 伪指令并不是真正的指令,也不产生相应的机器 码,它们只是在计算机将汇编语言转换为机器码时, 指导汇编过程,告诉汇编程序如何汇编。下面介绍一 些MCS-51汇编程序常用的伪指令。 (1)汇编起始伪指令ORG 格式:[标号:] ORG 16位地址 功能:规定程序块或数据块存放的起始地址。如: ORG 8000H START: MOV A ,#30H …… 该指令规定第一条指令从地址8000H单元开始存放, 即标号START的值为8000H

2)汇编结束伪指令END 格式:[标号:]END[表达式 功能:结束汇编。 例如: ORG 2000H START: MOV A,#OOH END START 表示标号 START开始的程序段结束。 (3)等值指令EQU 格式:字符名称EQU项 例如, TEST EQU R0 MOv A, TEST
(2)汇编结束伪指令END 格式:[标号:] END [表达式] 功能:结束汇编。 例如: ORG 2000H START: MOV A ,# 00H …… END START 表示标号START开始的程序段结束。 (3)等值指令EQU 格式:字符名称 EQU 项 例如,TEST EQU R0 MOV A,TEST

(4)定义字节指令DB 格式:[标号:]DB8位二进制数表 DB命令是从指定的地址单元开始,定义若干个8 位内存单元的内容。例如 ORG 1000H TAB;DB23H,73,“6 B TABI: DB 110B 以上伪指令经汇编以后,将对从1000H开始的若干 内存单元赋值: (1000H)=23H(1001H)49H (1002H)=36H(1003H)=42H 1004H=06H 其中36H和42H分别是字符6和B的ASC码,其余 的十进制数(73)和二进制数(110B)也都换算为十 六进制数了
(4)定义字节指令DB 格式:[标号:] DB 8位二进制数表 DB命令是从指定的地址单元开始,定义若干个8 位内存单元的内容。例如, ORG 1000H TAB; DB 23H,73, “6” , “B” TABl: DB 110B 以上伪指令经汇编以后,将对从1000H开始的若干 内存单元赋值: (1000H)=23H (1001H)=49H (1002H)=36H (1003H)=42H (1004H)=06H 其中36H和42H分别是字符6和B的ASCII码,其余 的十进制数(73)和二进制数(110B)也都换算为十 六进制数了

(5)定义字命令DW 格式:[标号:]DW16位二进制数表 例如, ORG 1000H TAB: DW 1234H, 0ABH, 10 汇编后: (1000H)=12H(1001H)=34H (1002H)=00H(1003H)=ABH 1004H)=00H(1005H=0AH DB、DW伪指令都只对程序存储器起作用,不能 用来对数据存储器的内容进行赋值或进行其它初始化 的工作
(5)定义字命令 DW 格式:[标号:] DW 16位二进制数表 例如, ORG 1000H TAB: DW 1234H , 0ABH , 10 汇编后: (1000H)=12H (1001H ) = 34H (1002H ) = 00H ( 1003H ) = ABH (1004H ) =00H (1005H) =0AH DB、DW伪指令都只对程序存储器起作用,不能 用来对数据存储器的内容进行赋值或进行其它初始化 的工作

4.2顺序程序设计 顺序结构程序是一种最简单、最基本的程序(也称为简单 程序),它是一种无分支的直线形程序,按照程序编写的顺序 依次执行 【例4-1】两个8位无符号数相加,和仍为8位。 假设两个无符号数X1,X2分别存放于内部RAM6OH 61H单元中,求其和并将和送入62H单元。 程序如下: ORG 0000H CLR MOV R0,#60H :设R0为数据指针 MOV a, ORO :取Ⅹ INC RO ADDC A, aRO :X,+Ⅹ INC RO MOV aRO, A 保存结果 END
4.2 顺序程序设计 顺序结构程序是一种最简单、最基本的程序(也称为简单 程序),它是一种无分支的直线形程序,按照程序编写的顺序 依次执行。 【例4-1】 两个8位无符号数相加,和仍为8位。 假设两个无符号数X1, X2分别存放于内部RAM60H、 61H单元中,求其和并将和送入62H单元。 程序如下: ORG 0000H CLR C MOV R0 ,# 60H ;设R0为数据指针 MOV A ,@R0 ;取X1 1NC R0 ADDC A ,@R0 ;X1+X2 1NC R0 MOV @R0,A ;保存结果 END

【例4-2】两个无符号双字节数相加。设被加数存放在内部存 储器30H(高位字节)、31H(低位字节)单元,加数存放在内 部存储器40H(高位字节)、41H(低位字节)单元,和存入30H (高位字节)、31H(低位字节)单元 程序如下: ORG 0000H CLR :将C清零 MOV R0,#31H :送被加数首址 MOV R1,#41H 送加数首址 MOV A,⑦aRQ 取被加数低宰节 ADD A ORI 两个低宰节相加 MOV ORO. A 低宰节和荐人被加数低宰节 DEC RO 修改指针,指向被加数高宰节 DEC RI 修改指针,指向加数高宰节 MOV A. ORO 取被加数高字节 ADDC A. ORI 高宰节相加 MOV ORO. A 存结果 已ND
【例4-2】两个无符号双字节数相加。设被加数存放在内部存 储器30H(高位字节)、31H(低位字节)单元,加数存放在内 部存储器40H(高位字节)、41H(低位字节)单元,和存入30H (高位字节)、31H(低位字节)单元。 程序如下: ORG 0000H CLR C ;将C清零 MOV R0 ,#31H ;送被加数首址 MOV R1 ,#41H ;送加数首址 MOV A ,@R0 ;取被加数低字节 ADD A ,@R1 ;两个低字节相加 MOV @R0 ,A ;低字节和存人被加数低字节 DEC R0 ;修改指针,指向被加数高字节 DEC R1 ;修改指针,指向加数高字节 MOV A,@R0 ;取被加数高字节 ADDC A,@R1 ;高字节相加 MOV @R0 , A ;存结果 END

【例4-3】编写16位二进制数求补程序 进制数的求补可归结为“求反加1”的过程,求反可用 CPL指令实现;加1时应注意,加1只能加在低8位的最低位上 因为现在是16位数,有两个字节,因此要考虑进位问题,即低8 位取反加1,高8位取反后应加上低8位加1时可能产生的进位, 还要注意这里的加1不能用ⅠNC指令,因为NC指令不影响CY标 ORG 0200H MOV A, RO ;低8位送A CPL A ;取反 ADD A, #OlH ;加1 MOV R2,A ;存结果 MOV A, RI ;高8位送A CPL A ;取反 ADDC A, #OOH ;加进位 MOV R3, A ;存结果 END
【例4-3】编写16位二进制数求补程序 二进制数的求补可归结为“求反加1”的过程,求反可用 CPL指令实现;加1时应注意,加1只能加在低8位的最低位上。 因为现在是16位数,有两个字节,因此要考虑进位问题,即低8 位取反加1,高8位取反后应加上低8位加1时可能产生的进位, 还要注意这里的加1不能用INC指令,因为INC指令不影响CY标 志。 ORG程序如下: 0200H MOV A ,R0 ;低8位送A CPL A ;取反 ADD A ,#01H ;加l MOV R2 ,A ;存结果 MOV A ,R1 ;高8位送A CPL A ;取反 ADDC A ,#00H ;加进位 MOV R3 ,A ;存结果 END
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《单片机原理及应用》课程教学资源(PPT教学课件)第三章 MCS-51单片机指令系统.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第一章 微型计算机基础知识.ppt
- 《3DS MAX应用制作》第二讲 客厅空间的制作.ppt
- 《3DS MAX应用制作》第一讲 大厅效果图的制作.ppt
- 《Delphi7程序设计》第9章 多层分布式应用系统.ppt
- 《Delphi7程序设计》第八章 DELPHI77数据库应用程序实例.ppt
- 《Delphi7程序设计》第7章 数据库编程基础.ppt
- 《Delphi7程序设计》第6章 Delphi中类的应用.ppt
- 《Delphi7程序设计》第5章 菜单、工具栏和多文档的设计.ppt
- 《Delphi7程序设计》第4章 对话框和多窗体设计.ppt
- 《Delphi7程序设计》第3章 可视化组件的应用.ppt
- 《Delphi7程序设计》第2章 00P Pascal基础知识.ppt
- 《Delphi7程序设计》第1章 Delphi概述.ppt
- 《Delphi7程序设计》第10章 数据交换技术.ppt
- 《SQL Server 2000数据库应用技术》教学资源(PPT课件讲稿)第1章 SQL Server关系数据库简介.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第四章 中文 Windows98.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第六章 WORD2000入门.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第八章 PowerPoint演示文稿.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第五章 计算机网络基础及 Internet.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第二章 微型计算机系统.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第二章 MCS-51系列单片机芯片结构.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第六章 单片机的中断与定时系统.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第五章 单片机存储器扩展技术.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第七章 单片机I/0口扩展及应用.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第十一章 单片机应用系统设计.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第八章 单片机串行数据通信.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第九章 A/D和D/A转换器接口.ppt
- 《单片机原理及应用》课程教学资源(PPT教学课件)第十章 AT89C2051 Flash单片机.ppt
- 浙江大学:《单片机原理与接口》第八章 80C51单片微机的系统扩展原理及接口技术.ppt
- 浙江大学:《单片机原理与接口》第九章 80c51单片微机的应用系统实例.ppt
- 浙江大学:《单片机原理与接口》第六章 单片微机定时器.ppt
- 浙江大学:《单片机原理与接口》第七章 80C51单片微机的串行口原理及应用.ppt
- 浙江大学:《单片机原理与接口》第五章 80C51单片微机的中断系统原理及应用.ppt
- 清华大学:《软件工程概论》课程教学资源(教案讲义)第九章 软件管理.doc
- 清华大学:《软件工程概论》课程教学资源(教案讲义)第八章 软件复用.doc
- 清华大学:《软件工程概论》课程教学资源(教案讲义)第七章 软件维护.doc
- 清华大学:《软件工程概论》课程教学资源(教案讲义)第五章 软件测试.doc
- 清华大学:《软件工程概论》课程教学资源(教案讲义)第四章 程序编码.doc
- 清华大学:《软件工程概论》课程教学资源(教案讲义)第三章 软件设计.doc
- 清华大学:《软件工程概论》课程教学资源(教案讲义)第二章 软件需求分析.doc