第5章 80C51汇编语言程序设计-宋110810
第5章 80C51的汇编语言程序设计;5.1 程序编制的方法和技巧;目前,80C51程序设计主要采用以下两种语言:;5.1 程序编制的方法和技巧 5.1.1 程序编制的步骤;三、程序总体设计及流程图绘制; 常用的流程图符号有:开始和结束符号、工作任务符号、判断分支符号、程序连接符号、程序流向符号等。 ;5.1.2 编制程序的方法和技巧;二、尽量采用循环结构和子程序;5.1.3 汇编语言的语句种类及指令格式;二、汇编语言的语句格式;一、标号;三、操作数;四、注释 注释只是对语句的说明,必须以分号“;”开头,长度不限,换行时在开头使用分号“;”。五、数据的表示形式二进制数,末尾以字母 B 标识。如:1000 1111B;十进制数,末尾以字母 D 标识或将字母D省略。如:88D,66;十六进制数,末尾以字母 H 标识。如:78H,0A8H(但应注意的是,以字母A~F开头时应在其前面加上数字“0”。);ASCII码,以单引号括起来标识。如:‘AB’,‘1245’ ;三、常用伪指令 伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。它不是单片机执行的指令,所以没有对应的可执行目标码,汇编后产生的目标程序中不会再出现伪指令。
1、起始地址设定伪指令 格式:ORG 表达式功能:向汇编程序说明下面紧接的程序段或数据段存放的起始地址。表达式通常为16进制地址,也可以是已定义的标号地址。;例如: ORG 1000HMAIN:MOV DPTR,#3000H … …
在每一个汇编语言源程序的开始,都要设置一条ORG伪指令来指定该程序在存储器中存放的起始位置。 若省略ORG伪指令,则该程序段从0000H单元开始存放。 在一个源程序中,可以多次使用ORG伪指令规定不同程序段或数据段存放的起始地址,但要求地址值由小到大依序排列,不允许空间重叠。;2、汇编结束伪指令 END格式:END功能:结束汇编,在整个程序中只能出现一次。
3、字节数据定义伪指令 DB(Define Byte)格式:[标号:] DB 字节数据表功能:从标号指定的地址开始,在ROM中定义字节数据。将字节数据表中的数据根据从左到右的顺序依次存放在指定的存储单元中。一个数据占一个存储单元。;例:ORG 1000HMAIN:MOV DPTR,#TABMOV A,#01H MOVC A,@A+DPTRTAB: DB 01H,02H,03H,04H,05H END;4、字数据定义伪指令 格式:[标号:] DW 字常数表DW定义一个字。将字或字表中的数据根据从左到右的顺序依次存放在指定的存储单元中。例如:ORG 1000HTAB:DW 1234H,19,FFH汇编结果为: (1000H)=12H,(1001H)= 34H(1002H)=00H,(1003H)= 13H(1004H)=00H,(1005H)= FFH
;5、空间定义伪指令 DS格式:[标号:] DS 表达式功能是从标号指定的地址单元开始,在程序存储器中保留由表达式所指定的个数的存储单元作为备用的空间,并都填以零值。例如: ORG 1000H BUF:DS 10汇编结果:从地址1000H开始保留10个存储单元作为备用单元。 ;6、定义常值为符号名伪指令 EQU格式:符号名 EQU 常值表达式将表达式的常值或特定的某个汇编符号定义为一个指定的符号名。汇编器在汇编过程中会把源程序中每个出现该符号的位置均用同EQU定义的数据或汇编符号来取代。注意,这里的标号后不能加“:”,EQU伪指令中的字符名必须先赋值后才能使用,故该语句通常放在源程序的开头。例如: ORG 1000HCH1 EQU #50HMOV A,CH1 ;A←(50H),相当于MOV A,50HEND;7、位地址符号定义伪指令 BIT格式:符号名 BIT 位地址表达式 功能:将位地址赋给指定的符号名。其中,位地址表达式可以是绝对地址,也可以是符号地址。
例如:X1 BIT P1.0将P1.0的位地址赋给符号名X1,在其后的编程中就可以用X1来代替P1.0。;5.2 源程序的编辑和汇编;; 5.3 汇编语言程序设计和基本程序结构;ORG 0000HLJMP MAINORG 0050HMAIN: MOV DPTR,#1000H MOVX A,@DPTRMOV R0, AINC DPTR