汇编语言程序设计基础.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:35 大小:1.2MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

汇编语言程序设计基础.ppt

汇编语言程序设计基础.ppt

预览

免费试读已结束,剩余 25 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

3.4.1程序设计语言概述3.4.1.1汇编语言的优点3.4.1.2汇编语言程序设计的过程3.4.1.3程序质量3.4.2汇编语言程序设计的特点及伪指令3.4.2.2伪指令汇编语言源程序是由汇编语句组成的,一般情况下,汇编语言语句可分为指令性语句和指示性语句。指令性语句(即汇编指令)指令性语句是进行汇编语言程序设计的可执行语句,每条指令都产生相应的机器语言的目标代码。源程序的主要功能是由指令性语句去完成的。指示性语句(即伪指令)伪指令伪指令是控制汇编过程的一些命令,是程序员通知汇编程序在进行汇编时的一些指示。没有对应的机器码,不产生目标代码程序,不影响程序的执行。1).伪指令主要用来指定程序或数据的起始位置,给出一些连续存放数据的地址或为中间运算结果保留一部分存储空间以及表示源程序结束等等。2).伪指令还可用来对符号﹑标号赋值。不同版本汇编语言,伪指令可能有所不同,但基本用法是相似的。1)设置目标程序起始地址伪指令ORG格式:[标号:]ORG地址功能:规定其后面的目标程序或数据块的起始地址。伪指令ORG放在一段源程序(主程序、子程序)或数据块的前面,说明紧跟在其后的程序段或数据块的起始地址就是ORG后面给出的地址。例如:ORG1000HSTART:MOVA,#34H…2)结束汇编伪指令END格式:[标号:]END功能:END是汇编语言源程序的结束标志,用于终止源程序的汇编工作。在END以后所写的指令,汇编程序都不予处理。一个源程序只能有一个END命令。3)定义字节伪指令DB格式:[标号:]DB字节常数或字符功能:从指定地址单元开始存放若干个字节的数据或字符。字符若用引号括起来则表示ASCII码。例如:ORG2000HTAB1:DB30H,8AH,7FH,73DB'5','A',‘YES'4)定义字伪指令DW格式:[标号:]DW16位数据表功能:DW伪指令告诉汇编程序从指定的地址单元开始定义若干个16位数据。对于MCS-51单片机系统,16位数据的高8位存入低地址单元,低8位存入高地址单元。例如:ORG1500HTAB2:DW1234H,80H,'AB'汇编以后,(1500H)=12H,(1501H)=34H,(1502H)=00H,(1503H)=80H,(1504H)=41H,(1505H)=42H5)赋值伪指令EQU格式:字符名称EQU赋值项功能:将EQU右边的值赋予EQU左面用户定义的符号。赋值项可以是常数、地址、标号或表达式。例如:TEMPEQUR2PA8155EQU8001H汇编后TEMP对应寄存器R2,PA8155值为8001HEQU定义的符号必须先定义后使用,且在同一个源程序中,同一个标号只能赋值一次,该语句通常放在程序开头。6)位地址定义伪指令BIT格式:字符名称BIT位地址功能:将位地址赋予字符名称。经赋值后可用字符名称代替位地址。其中,位地址可以是绝对地址,也可以是符号地址(即位符号名称)。例如:PLGBITF0AIBITP1.0经以上伪指令定义后,在程序中就可以把FLG和AI作为位地址来使用。补充:7)定义标号值伪指令DL格式:字符名称DL表达式功能:DL命令将数据地址或代码地址赋予规定的字符名称。例如:COUNTDL1000HCOUNTDLCOUNT+1DL伪指令常用来定义数据地址。补充:8)定义存储空间伪指令DS格式:[标号:]DS表达式功能:从指定地址开始,保留若干个字节的内存空间,供程序运行使用。保留的字节单元数由表达式的值决定。例如:ORG2000HDS05HDB10H,20H汇编后从2000H开始,预留5个字节的内存单元,然后从2005H开始,按照下一条DB指令赋值,即(2005H)=10H,(2006H)=20H。对MCS-51来说,DB、DW、DS只能对程序存储器使用。补充:9)数据地址赋值伪指令DATA格式:字符名称DATA表达式功能:将表达式指定的数据地址赋予规定的字符名称。DATA与EQU伪指令的功能类似,但也有区别:DATA定义的字符名称可以先使用后定义,EQU定义的字符名称必须先定义后使用。DATA伪指令可以放在源程序的开头或结尾,也可以放在程序的其他位置,EQU伪指令通常放在程序开头。3.4.3单片机汇编语言程序设计【例1】:设有16位二进制数存放在R0,R1中(R0存放高位,R1存放低位),试编写实现16位二进制数的:“取反加1”操作的程序。程序如下:ORG1000HMOVA,R1CPLAADDA,#01HMOVR1,AMOVA,R0CPLAADDCA,#00HMOVR0,AEND3.4.3.2分支程序