资源描述:
《chapter05汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章汇编语言程序设计5.1概述5.2简单顺序程序5.3分支程序5.4循环程序5.6子程序的设计及调用5.5查表程序5.1.1伪指令伪指令仅在汇编过程中起控制作用,不产生可执行的目标代码,又称为软指令。1、起点指令ORG格式:ORG××××H功能:给程序起始地址或数据块的起始地址赋值。例:用法:一般出现在每段源程序或数据块的开始。一个源程序可多次出现ORG指令。ORG8000HSTART:MOVA,#74H┇;源程序的起始地址为8000H5.1概述2、结束命令END格式:END功能:汇编程序结束标志附在一个源程序的结尾。一个源程序只能
2、出现一次END指令。3、定义字节命令DB格式:功能:标号:DB字节常数或字符串(8位)定义字节的内容,汇编程序把DB定义的字节依次存入标号开始的存储单元。用法:有定义的内存单元地址项或项表5.1.1伪指令例:ORG8000HTAB:DB45H,73,‘5’,‘A’TAB1:DB101B伪指令ORG定义了数据块TAB的起始地址为8000H伪指令DB定义了8000H~8003单元的内容依次为:(8000H)=45H(8001H)=49H(8002H)=35H(8003H)=41H(8004H)=05HTABTAB1(1)由ORG定义(2)
3、跟在其他源程序之后5.1.1伪指令4、定义字命令DW格式:功能:标号:DW字或字表定义若干个字(双字节)(注:51为大端模式)例:ORG8000HTAB:DW7234H,8AH,10(8000H)=72H(高字节在低端地址)(8001H)=34H(低字节在高端地址)(8002H)=00H(8003H)=8AH(8005H)=0AH汇编后:(8004H)=00H5.1.1伪指令5、定义空间命令DS格式:功能:标号:DS数据或字符及表达式例:(8008H)=30H(8009H)=8AH从指定单元地址开始,由数据或字符及表达式的值来定义应保
4、留的单元数,备用。ORG8000HDS08HDB30H,8AH即:8000H~8007H单元保留备用5.1.1伪指令6、等值命令EQU格式:字符名称EQU数据或汇编符号功能:将一个数据或汇编符号赋予标号段规定的字符名称。例:ORG8000HAAEQUR6MOVA,AA;AA与R6等值;A(R6)5.1.1伪指令例:A10EQU10DELYEQU07EBHMOVA,A10LCALLDELY;A10=10;DELY=07EBH;转向入口地址07EBH使用EQU指令,须先赋值后使用,不能反之。5.1.1伪指令7、数据地址赋值等值命令DATA
5、格式:字符名称DATA数据或表达式功能:此命令把数据/代码地址赋予标号段所规定的字符名称。定义的字符名称可先使用后定义。INDEXJDATA8389HORG8000HINDEXJDATA8096HLJMPINDEXJENDORG8000HLJMP8096HEND;INDEXJ这个字符名称的地址为8389H例:等价于5.1.1伪指令EQU与DATA的区别(1)DATA与EQU相似,但DATA定义的字符名称,可先使用后定义,EQU则不能。(2)EQU指令可把汇编符号赋给字符名称,DATA则不能。(3)DATA可把表达式的值赋给字符名称,E
6、QU则不能。DATA常在程序中定义数据地址。EQU常在程序中定义字符数据。5.1.1伪指令8、位地址符号命令BIT格式:字符名称BIT位地址功能:把位地址赋予标号段的字符名称A1BITP1.0A2BITP2.0例:;P1.0、P2.0赋予位地址字符名称A1、A2,;在编程时可以直接把A1、A2当成位地址使用。5.1.1伪指令5.1.2汇编程序的操作分两次扫描(汇编)第一次扫描(汇编)检查语法结构,对源程序中的符号、表达式、标号进行定义,处理伪指令,建立符号表。显示ERROR,并提示行号显示ERROR,并提示行号修改!修改!第二次扫描(
7、汇编)汇编成目标代码和汇编程序清单可执行的代码(机器码)5.1概述①建立数学模型②确定算法③制定流程图④确定数据结构⑤写出源程序⑥上机调试5.1.4汇编语言程序的结构①定义有关字符名②定义程序的起始地址③程序主体④汇编结束标志5.1概述5.1.3汇编语言程序设计的步骤例1:内部RAM从DATA1单元开始有一数据块,存放若干无符号数,第一单元为数据块长度,求这些无符号数之和。;首址送R0;长度送R1;检查长度是否为零;为零则结束;不为零则开始运算;加一个数;长度减1,不为零则转移;存和起始地址程序主体汇编结束标志标号注释MOVR1,DA
8、TA1CJNER1,#0,NEXTORG2000HSTART:MOVR0,#DATA1HERE:SJMP$NEXT:CLRALOOP:INCR0ADDA,@R0DJNZR1,LOOPMOVSUM,ASJMPHEREDAT