51-汇编语言源程序的格式.ppt
5.1汇编语言源程序的格式汇编语言源程序的一般形式:[标号:] 操作码 [操作数] [;注释]1.标号:标号由8个或8个以下的字母、数字、下划线组成,标号的第一个字符必须是字母;此外,系统中保留使用的字符或字符串不能用作标号。以下标号非法:2A;S+N;EQU….2.操作数A.对于#data:;#10;#9BH;#0ABH→注意不能丢掉前面的0;否则按符号地址ABH处理。eg.MOVA,#0ABH=MOVA,#ABHB.对于直接地址dirdct可以用:;98;0F9H;eg.MOV A,98②标号地址:eg. MOV A,SUM③带+、-号的表达式=直接地址:eg.MOV A,SUM+3④SFR名:eg.MOV A,P2C.对于相对寻址的rel:除可以采用上面提到的①②③外,还允许采用一个专门的符号“$”,它表示相对转移指令所在的地址。eg.JNBTF0,$*源程序中除“注释”外,不能出现全角符号;即必须全为西文字符。5.2伪指令每种汇编语言都会定义若干条伪指令,用来对汇编过程进行某种控制,或者对符号、标号赋值。1.ORG(汇编起始命令)——用于规定下面的目标程序的起始地址,在源程序中可以多次使用,但所规定的地址必须从小到大,且不能造成地址重叠。格式: OGR 16位地址 eg. ORG 2000H START: MOV A,#64H2.END(汇编结束)——在END以后所写的指令,汇编程序都不予处理。源程序中只能有一条END,放在所有指令的最后。 格式:END3.EQU(等值命令)——将一个数或特定的汇编符号赋予规定的字符名称。用EQU定义的字符名称,必须先定义后使用,且通常不能用于表达式中。格式:字符名称 EQU 数或汇编符号4.DATA(数据地址赋值命令)——将数据地址或代码地址赋予规定的字符名称;用DATA定义的字符名称,允许先使用后定义,且可用在表达式中。格式:字符名称 DATA 表达式5.2伪指令5.BIT(位地址符号命令)——将位地址赋予所规定的字符名称。格式:字符名称 BIT位地址;eg.A1BITP1.0;A2BIT20H6.DB/DW(定义字节/字命令)——从指定地址单元开始,定义若干个8/16位内存单元内容格式: [标号:] DB 8位二进制数表 ; [标号:] DW 16位二进制数表 ;(*高8位在前,低8位在后)eg.lab: DB45H,73,“5”,“A” DW45H,73,“5”,“A”*注意2者的区别7.DS(定义空间命令)——从指定地址单元开始,保留若干字节内存空间备用。格式: [标号:] DS 表达式 ;**以上6、7两条伪指令均只能作用于ROM5.4MCS-51程序设计举例1.分支程序设计例5.6_设变量X存放在VAR单元,函数值Y存放在FUNC单元。按下式给Y赋值: -1 X10Y= 0 10≤X≤20 1 20XVAR DATA30HFUNC DATA 31H MOV A, VAR CJNE A, #10,NEXT1NEXT1: JC NEXT2 MOV R0, #1 CJNE A, #21,NEXT3NEXT3: JNCNEXT4 MOV R0, #0 SJMP NEXT4NEXT2: MOVR0, #0FFHNEXT4: MOVFUNC, R0 5.4MCS-51程序设计举例1.分支程序设计例5.8设有4分支,对应R3的值为0~3;每分支用于分别从内部RAM,外部RAM256B,外部64kB,或外部RAM4kB缓冲区读取数据,设低8位地址=R0,高8位地址=R1。 MOV A,R3 MOV DPTR, #BRTAB MOVC A,@A+DPTR JMP @A+DPTRBRTAB:DB BR0-BRTAB DB BR1-BRTAB DB BR2-BRTAB DB BR3-BRTAB BR0: MOV A, @R0 SJMP BREBR1: MOVX A, @R0 SJMP BREBR2: MOV DPL, R0