第4章汇编语言程序设计简介 41伪指令 42汇编语言程序设让 BACK
第4章 汇编语言程序设计简介 4.1 伪指令 4.2 汇编语言程序设计
41伪指令 伪指令是对汇编过程起控制作用,但本 身并没有对应的机器代码的指令。 汇编起始指令ORG 指令格式为: ORG nn 该指令的作用是指明后面的程序或数据块的起始地址, 它总是出现在每段源程序或数据块的开始。式中,m为16 位地址,汇编时m确定了此语句后面第一条指令或第一个数 据的地址,此后的源程序或数据块就依次连续存放在以后的地 址内,直到遇到另一个ORG指令为止
4.1 伪 指 令 伪指令 是 对汇编过程 起控制作用,但本 身并没有对应的机器代码的指令。 一、 汇编起始指令 ORG 指令格式为: ORG nn 该指令的作用是指明后面的程序或数据块的起始地址, 它总是出现在每段源程序或数据块的开始。 式中, nn为 16 位地址, 汇编时nn确定了此语句后面第一条指令或第一个数 据的地址,此后的源程序或数据块就依次连续存放在以后的地 址内, 直到遇到另一个ORG指令为止
例:ORG2000H MOV SP + 60H MOV RO. 2FH MOV R2. OFFH ORG伪指令说明其后面程序的目标代码在存储器中存放的 起始地址是2004,即 存储器地址目标程序 2000H 758160 2003H 782F 2005H ZA FF
例: ORG 2000H MOV SP, #60H MOV R0, #2FH MOV R2, # 0FFH ORG伪指令说明其后面程序的目标代码在存储器中存放的 起始地址是2000H, 存储器地址 2000H 75 81 60 2003H 78 2F 2005H 7A FF
二、等值指令EQU 指令格式: 字符名称EQU数字或汇编符号 例:PA8155EQU8001H;即给标号PA8155赋值为800H 功能:使指令中的字符名称等价于给定的数字或汇编符号。 使用等值指令可给程序的编制、调试、修改带来方便,如果 在程序中要多次使用到某一地址,由EQU指令将其赋值给一个 字符名称,一旦需要对其进行变动,只要改变EQU命令后面的数 字即可,而不需要对程序中涉及到该地址的所有指令逐句进行 修改。但要注意,由EQU等值的字符名称必须先赋值后使用, 且在同一个源程序中,同一个标号只能赋值一次
二、等值指令EQU 指令格式: 字符名称 EQU 例: PA8155 EQU 8001H ;即给标号PA8155赋值为8001H。 功能: 使指令中的字符名称等价于给定的数字或汇编符号。 使用等值指令可给程序的编制、调试、修改带来方便, 如果 在程序中要多次使用到某一地址,由EQU指令将其赋值给一个 字符名称, 一旦需要对其进行变动, 只要改变EQU命令后面的数 字即可, 而不需要对程序中涉及到该地址的所有指令逐句进行 修改。 但要注意, 由 EQU等值的字符名称必须先赋值后使用, 且在同一个源程序中,同一个标号只能赋值一次
三、定义字节指令DB 指令格式 [标号:]DB8位二进制数表 功能:把8位二进制数表依次存入从标号开始的连续的 存储单元中。 格式中,标号区段可有可无,DB指令之后的8位二进制 数表是字节常数或用逗号隔开的字节串,也可以是用引号括 起来的ASCI码字符串(一个ASCI字符相当于一个字节) 例
三、 定义字节指令DB 指令格式: [标号: ] DB 8 功能: 把 8 位二进制数表依次存入从标号开始的连续的 存储单元中。 格式中, 标号区段可有可无, DB指令之后的 8 位二进制 数表是字节常数或用逗号隔开的字节串, 也可以是用引号括 起来的ASCII码字符串 (一个 ASCII字符相当于一个字节)。 例:
ORG 1000H buF1: db 38H. 7FH. 80H BUF2 DB 45H. 66H ORG伪指令指定了标号BUF1的地址为1000H, 而DB伪指令是将其后的二进制数表38H,TFH,80H 依次存放在1000H,1001H,100H3个连续单元之 中,BUF2也是一个标号,其地址与前一条伪指令连 续,即1003H,1004H地址单元中依次存放45H,66H
ORG 1000H BUF1: DB 38H, 7FH, 80H BUF2: DB 45H, 66H ORG伪指令指定了标号BUF1的地址为1000H, 而DB伪指令是将其后的二进制数表38H, 7FH, 80H 依次存放在1000H, 1001H, 1002H 3 个连续单元之 中, BUF2也是一个标号, 其地址与前一条伪指令连 续, 即1003H, 1004H地址单元中依次存放 45H, 66H
四、定义字指令DW 指令格式: [标号:]DW16位数据表 该指令的功能与DB相似,区别仅在于从指定地 址开始存放的是指令中的16位数据,而不是字节串 每个16位数据要占两个存储单元,高8位先存,低8 位后存,这和MCS-51指令中的16位数据存放顺序是 致的
四、 定义字指令DW 指令格式: [标号:] DW 16 该指令的功能与DB相似, 区别仅在于从指定地 址开始存放的是指令中的 16 位数据, 而不是字节串。 每个 16 位数据要占两个存储单元, 高8 位先存, 低 8 位后存, 这和MCS -51指令中的16位数据存放顺序是 一致的
五、汇编结束指令END 指令格式: [标号:]END地址或标号 格式中标号以及END后面的地址或标号可有可无。 功能:提供汇编结束标志。汇编程序遇到END后就 停止汇编,对END以后的语句不予处理,故END应放在 程序的结束处
五、 汇编结束指令END 指令格式: [标号:] END 格式中标号以及END后面的地址或标号可有可无。 功能: 提供汇编结束标志。汇编程序遇到 END后就 停止汇编, 对 END以后的语句不予处理, 故 END应放在 程序的结束处
42汇编语言程序设计 421简单程序设计 例1两个无符号双字节数相加。 设被加数存放于内部RAM的40H(高位字节) 41H(低位字节),加数存放于50H(高位字节 51H(低位字节),和数存入40H和41H单元中
4.2 汇编语言程序设计 4.2.1 简单程序设计 例 1 两个无符号双字节数相加。 设被加数存放于内部RAM的40H(高位字节), 41H(低位字节), 加数存放于50H(高位字节), 51H(低位字节), 和数存入 40H和41H单元中
程序如下 START: CLR C ;将Cy清零 MOⅴR0,#41H;将被加数地址送数据指针R0 MOⅴR1,#5H;将加数地址送数据指针R1 AD1:MOVA,@R0;被加数低字节的内容送入A ADD A, aRI ;两个低字节相加 MOV aR0,A;低字节的和存入被加数低字节中 DEC RO 指向被加数高位字节 DEC RI 指向加数高位字节 MOV A, aRO 被加数高位字节送入A ADDC A,aR1;两个高位字节带Cy相加 MOV @R0,A;高位字节的和送被加数高位字节 RET
程序如下: START: CLR C ; 将Cy MOV R0, #41H ; 将被加数地址送数据指针R0 MOV R1, #51H ; 将加数地址送数据指针R1 AD1: MOV A, @R0 ; 被加数低字节的内容送入A ADD A,@R1 ; MOV @R0, A ; DEC R0 ; DEC R1 ; MOV A, @R0 ; 被加数高位字节送入A ADDC A, @R1 ; 两个高位字节带Cy MOV @R0, A ; RET