教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 资料大全 >

第3章汇编语言程序设计

来源:网络收集 时间:2025-12-13
导读: 第3章 指令系统及汇编 3.1 汇编程序与伪指令3.1.1 汇编程序MCS—51 指令所编写的汇编语言源程序, 还必须经 过从汇编源程序到机器语言目标程序的“ 翻译”, 才能 在 51 系列单片机运行, 这种翻译的过程称为汇编。 完 成汇编工作有两种途径: 一种是人工汇编;

第3章 指令系统及汇编

3.1 汇编程序与伪指令3.1.1 汇编程序MCS—51 指令所编写的汇编语言源程序, 还必须经 过从汇编源程序到机器语言目标程序的“ 翻译”, 才能 在 51 系列单片机运行, 这种翻译的过程称为汇编。 完 成汇编工作有两种途径: 一种是人工汇编; 一种是机器 汇编。汇编程序是将汇编源程序转变为相应目标程序 的翻译程序。

第3章 指令系统及汇编

3.1.2 伪指令在汇编源程序的过程中, 还有一些指令不要求计算 机进行任何操作, 不产生目标程序, 不影响程序的执行, 是一些说明性、指示性的指令, 称之为伪指令。 它主要 用来指定程序或数据的起始位置, 给出一些连续存放数 据的确定地址, 或为中间运算结果保留一部分存储空间 以及表示源程序结束等等。 不同版本的汇编语言, 伪指 令的符号和含义可能有所不同, 但是基本用法是相似的。

下面介绍几种常用的基本伪指令。

第3章 指令系统及汇编 (1) 设置目标程序起始地址伪指令ORG。格式: ORG 16位地址

该伪指令的功能是规定其后面目标程序的起始地址。

例如:

ORG

2000H

START: MOV A, #7FH ;机器码74H 7FH

…(2) 结束汇编伪指令END。 格式: END

END是汇编语言源程序的结束标志, 表示汇编结束。 在END 以后所写的指令, 汇编程序都不予以处理。 一个源程序只能有一 个END命令

第3章 指令系统及汇编

(3) 定义字节伪指令DB。格式: [标号: ]DB 项或项表 其中项或项表指一个字节, 或用逗号分开的字符串, 或以引号括起来的字符串(一个字符用ASCII码表示, 就相当于一个字节)。 该伪指令的功能是把项或项表

的数值(字符则用ASCII码)存入从标号开始的连续存储单元中。

第3章 指令系统及汇编 例如:TAB1:

ORGDB DB

2000H30H, 8AH, 7FH, 73 ′5′,′A′,′BCD′

以上伪指令经汇编以后, 将对 2000H开始的若干内存单元赋值: (2000H) = 30H (2001H)=8AH (2002H)=7FH (2003H) = 49H (2004H) = 35H (2005H) = 41H (2006H) = 42H (2007H) = 43H (2008H) = 44H ; 十进制数 73 以十六进制数存放 ; 数字 5 的ASCII码 ; 字母A的ASCII码 ; ′BCD′中B的ASCII码 ; ′BCD′中C的ASCII码 ; ′BCD′中D的ASCII码

第3章 指令系统及汇编

(4) 定义字伪指令DW。格式: [标号: ]DW 项或项表 DW用于定义一个字(即两个字节, 16 位二进制 数)。 在执行汇编程序时, 机器会自动按高 8 位先存入, 低 8 位后存入的格式排列, 这和MCS—51 指令中 16 位数 据存放的方式一致。 例如: ORG 1500H 1234H, 80H

TAB2: DW (1503H)=80H。

汇编以后: (1500H)=12H, (1501H)=34H, (1502H)=00H,

第3章 指令系统及汇编

(5) 等值伪指令EQU。格式: 标号: EQU 项 该伪指令的功能是将指令中项的值赋予本语句的 标号。 项可以是常数、 地址

标号或表达式。 例如:TAB: EQU 1000H

TAB1:

EQU

TAB

前一条伪指令表示TAB地址的值为1000H, 后一条 表示符号地址TAB1与TAB等值(可以互换), 需要注 意的是, 在同一程序中, 用EQU伪指令对某标号赋值后, 该标号的值在整个程序中不能再改变。

第3章 指令系统及汇编

(7) 位地址赋值伪指令BIT。格式: 标号 BIT位地址 该伪指令的功能是将位地址赋予特定位的标号, 经 赋值后就可用指令中BIT左面的标号来代替BIT右边所 指出的位。 例如: FLG: BIT F0 AI: BIT P1.0 经以上伪指令定义后, 在编程中就可以把FLG和AI 作为位地址来使用。

第3章 指令系统及汇编

3.2 基本程序设计方法3.2.1 程序的基本结构 程序的基本算法结构有 3 种: 顺序结构、 分支(选择)结构和循环结构。 顺序结构如图 3 ― 1 所示, 虚框内A框和B框分别 代表不同的操作, 而且是A、 B顺序执行。 分支结构如图 3 ― 2 所示, 它又称为选择结构。 该结构中包含一个判断框, 根据给定条件P是否成立而 选择执行A框操作或B框操作。 循环结构如图 3 ― 3 所示.

第3章 指令系统及汇编

图 3 ― 1 顺序结构

第3章 指令系统及汇编

图 3 ― 2 分支结构

第3章 指令系统及汇编

图 3 ― 3循环结构

(a) 当型循环;

(b) 直到型循环

第3章 指令系统及汇编

3.2.2 顺序结构程序设计例 1: 单字节压缩BCD码转换成二进制码子程序。 解: 设两个BCD码d1d0 表示的两位十进制数压缩存 于R2, 其中R2 高 4 位存十位, 低 4 位存个位, 要把其转 换成纯二进制码的算法为: (d1d0)BCD=d1×10+d0。 实 现该算法所编制的参考子程序如下:

第3章 指令系统及汇编 入口: 待转换的BCD码存于R2。出口: 转换结果(8 位无符号二进制整数)仍存R2。 BCD2B: ORG MOV ANL SWAP MOV MUL MOV MOV ANL ADD MOV 2000H A, R2 A, #0F0H A B, #0AH AB R3 , A A, R2 A, #0FH A, R3 R2, A ; (A) ← (d1d0)BCD ; 取高位BCD码d1 ; (A)=0d1H ; (B) ←10 ; d1×10 ; R3暂存乘积结果 ; (A) ← (d1d0)BCD ; 取低位BCD码d0 ; d1×10+d0 ; 保存转换结果

RET

; 子程序返回

第3章 指令系统及汇编 例 4: 3 个无符号单字节整数分别存于R1、 R2、 R3 中, 找出 其中最大数放于R0 中。解: 首先将 R0 清零, 然后进行(R1)与(R0)减法, 若(R1)-(R0)>0, 则(R1)>(R0), 把(R1) 送(R0); 否则(R0)保持不变。 再将(R0)分别与(R2)和(R3) 比较, 比较处理的方法与上面相同, 这样比较 3 次后, R0 中即为 3 数中的 最大数。 程序清单如下:

ORG 2500H MOV R0, #00H MOV A, R1 ACALL COMP MOV A, R2 ACALL COMP MOV A, R3 ACALL COMP HERE: AJMP HERE

BR2:

; R0 清零 ; 第一个数(R1)送A ; 比较(R1)与(R0)大小 ; 第二个数(R2)送A ; 比较(R2)与(R0)大小 ; 第三个数(R3)送A ; 比较(R3)与(R0)大小 ;程序原地循环

第3章 指令系统及汇编

COMP:

MOVCLR SUBB JC MOV

R4, AC A, R0 M1 A, R4

; R4 暂存A的内容; 清进位位C ; (A)-(R0) ; (A)<(R0)转至M1 ; 恢复A值

MOVM1: RET

R0, A

; (A)>(R0)时大数存

…… 此处隐藏:1469字,全部文档内容请下载后查看。喜欢就下载吧 ……
第3章汇编语言程序设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/1943846.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)