- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
part_04汇编语言程序设计课件
第4章 汇编语言程序设计; 4-1 汇编程序约定;源程序使用机器汇编要考虑汇编程序的约定:;汇编的主要任务:;一、标号
标号是语句地址的标志符号,用于引导对该语句的非顺序访问。有关标号的规定为:
标号由1~8个ASCII字符组成。第一个字符必须是字 母,其余字符可以是字母、数字或其他特定字符;
不能使用该汇编语言已经定义了的符号作为标号。如指令助记符、寄存器符号名称等;
标号后边必须跟冒号。
二、操作码
操作码用于规定语句执行的操作。它是汇编语句中唯一不能空缺的部分。它由指令助记符表示。 ;三、操作数
操作数用于给指令的操作提供数据或地址。在一条汇编语句中操作数可能是空缺的,也可能包括一项,还可能包括两项或三项。各操作数间以逗号分隔。操作数字段的内容可能包括以下几种情况:
(1)工作寄存器名;
(2)特殊功能寄存器名;
(3)标号名;
(4)常数;
(5)符号“$”,表示程序计数器PC的当前值;
(6)表达式。;四、注释
注释不属于汇编语句的功能部分,它只是对语句的说明。注释字段可以增加程序的可读性,有助于编程人员的阅读和维护。注释字段必须以分号“;”开头,长度不限,当一行书写不下时,可以换行接着书写,但换行时应注意在开头使用分号“;”。; 3. 宏指令:
宏汇编功能:将需要多次反复执行的程序段定义成一个宏指令
名(宏定义),编程时,可在程序中使用宏指令
名来替代一段程序(宏调用)。;二、汇编控制指令(伪指令):;1.ORG—起始地址指令:指明程序和数据块起始地址。
该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址。表达式通常为16进制地址,也可以是已定义的标号地址。;2.DB伪指令
格式:[标号:] DB 项或项表
DB伪指令用于定义字节数据,可以定义一个字节,也可定义多个字节,字义多个字节时,两两之间用逗号间隔,定义的多个字节在存储器中是连续存放的。定义的字节可以是一般常数,也可以为字符,还可以是字符串,字符和字符串以引号括起来,字符数据在存储器中以ASCII码形式存放。
在定义时前面可以带标号,定义的标号在程序中是起始单元的地址。
【例3-19】 ORG 3000H
TAB1: DB 12H,34H
DB 5,A,abc
汇编后,各个数据在存储单元中的存放情况如下:;3.DW伪指令
格式:[标号:] DW 项或项表
这条指令与DB相似,但用于定义字数据。项或项表指所定义的一个字在存储器中占两个字节。汇编时,机器自动按低字节在前,高字节在后,即低字节存放在低地址单元,高字节存放在高地址单元。
【例3-20】 ORG 3000H
TAB2:DW 1234H,5678H
汇编后,各个数据在存储单元中的存放情况如下:;4.DS伪指令
格式:[标号:] DS 数值表达式
该伪指令用在存储器中保留一定数量的字节单元。保留存贮空间主要为以后存放数据。保留的字节单元数由表达式的值决定。
【例3-21】 ORG 2000H
TAB1: DB 12H,34H
DS 4H
DB 5
汇编后,存储单元中的分配情况如下:;5.EQU伪指令
格式:符号 EQU 项
该伪指令的功能是将指令中的项的值赋予EQU前面的符号。项可以是常数、地址标号或表达式。以后可以通过使用该符号使用相应的项。
【例3-22】 TAB1 EQU 1000H
TAB2 EQU 2000H
汇编后TAB1、TAB2分别等于1000H、2000H。程序后面使用1000H、2000H的地方就可以用符号TAB1、TAB2替换。
用EQU伪指令对某标号赋值后,该符号的值在整个程序中不能再改变。;7.END伪指令
格式:END
该指令放于程序最后位置,用于指明汇编语言源程序的结束位置,当汇编程序汇编到END伪指令时,汇编结束。END后面的指令,汇编程序都不予处理。一个源程序只能有一个END命令,否则就有一部分指令不能被汇编。;4-2 汇编语言程序设计步骤;常用程序结构:;例题(顺序);MOV R0,#52H
MOV R1,#55H
MOV A,@R0
ADD A,@R1
MOV @R0,A
DEC R0
DEC R1
MOV A,@R0
ADDC A,@R1
MOV @R0,A
DEC R0
DEC R1
MOV A,@R0
ADDC A,@R1
MOV @R0,A
CLR A
ADDC A,#00H
MOV R0,#00H
MOV @R0,A;例: 压缩式BCD码分解成为单字节BCD码。;4-4
文档评论(0)