第4章汇编语言程序设计 41汇编语言程序设计方法 42汇编语言源程序的基本结构 顺序、循环、分支、子程序 43常用程序设计举例 BACK
第4章 汇编语言程序设计 4.1 汇编语言程序设计方法 4.2 汇编语言源程序的基本结构 顺序、循环、分支、子程序 4.3 常用程序设计举例
4.1汇编语言程序设计方法 41.1MCS51汇编语言伪指令 伪指令不属于指令系统,汇编后不会产生机器 码,只用来对汇编过程进行控制或提供某些汇编信息 如:规定汇编生成的目标代码在内存种的存放区域, 给源程序中的符号和标号赋值以及指示汇编的结束等。 但它不会令计算机做任何操作,没有对应的机器语言 代码,由于它有指令的形式而无指令的实质,所以称 “伪”指令
4.1.1 MCS-51汇编语言伪指令 伪指令不属于指令系统,汇编后不会产生机器 码,只用来对汇编过程进行控制或提供某些汇编信息。 如:规定汇编生成的目标代码在内存种的存放区域, 给源程序中的符号和标号赋值以及指示汇编的结束等。 但它不会令计算机做任何操作,没有对应的机器语言 代码,由于它有指令的形式而无指令的实质,所以称 “伪”指令。 4.1 汇编语言程序设计方法
4.1.3MCS-51汇编语言伪指令 1.ORG( Origin)汇编起始地址命令 功能:用于规定目标程序的起始地址。 格式: 标号:1ORG地址 地址项:16位绝对地址,也可以用标号或表达式表示。 如果不用ORG规定,则汇编得到的目标程序将从0000H开始
4.1.3 MCS-51汇编语言伪指令 1.ORG(Origin) 汇编起始地址命令 功能:用于规定目标程序的起始地址。 格式: [标号:] ORG 地址 地址项:16位绝对地址,也可以用标号或表达式表示。 如果不用ORG规定,则汇编得到的目标程序将从0000H开始
一个源程序中,可多次使用ORG指令以规定不同程序段 的起始位置。地址应从小到大顺序排列,不允许重叠。 例如: ORG 0000H LUMP MAIN ORG 4200H MAIN MOV A, 30H
一个源程序中,可多次使用ORG指令以规定不同程序段 的起始位置。地址应从小到大顺序排列,不允许重叠。 例如: ORG 0000H LJMP MAIN ORG 4200H MAIN: MOV A, 30H
2.DB( Define byte)字节定义伪指令 功能:用于从指定的地址单元开始,在程序存储器中定义 字节数据。 格式:[标号:1DB8位数表 例如:DB“ how are you? 常使用本命令存放数据表格,例如存放数码管显示的十六 进制数的字形码,可使用多条DB命令定义 DB CO, F9H, A4H, BOH DB 99H, 92H, 82H, F8H DB80H,90H,88H,83H DB C6H AlH, 86H, 84H
2.DB(Define Byte)字节定义伪指令 功能:用于从指定的地址单元开始,在程序存储器中定义 字节数据。 格式: [标号:] DB 8位数表 例如: DB “how are you?” 常使用本命令存放数据表格,例如存放数码管显示的十六 进制数的字形码,可使用多条DB命令定义: DB C0H,F9H,A4H,B0H DB 99H,92H, 82H,F8H DB 80H,90H, 88H,83H DB C6H,A1H,86H, 84H
3.DW( Define word)字定义伪指令 功能:用于从指定地址开始,在程序存储器单元中定义16位 的数据字。 格式: 标号:DW16位数表 存放规则:高8位在前(低地址),低8位在后(高地址)。 例 DW100H,1ACH,814;按顺序存01H,00H, OIH. ACHD2H.FCH DW“A ;存入4141H DW ' A ;存入00H41H Dw“ABC” ;不合法,因是两个字节
3.DW(DefineWord) 字定义伪指令 功能:用于从指定地址开始,在程序存储器单元中定义16位 的数据字。 格式: [标号:] DW 16位数表 存放规则:高8位在前(低地址),低8位在后(高地址)。 例: DW 100H,1ACH,-814 ;按顺序存01H, 00H, 01H, ACH,D2H,FCH DW “AA” ;存入41H,41H DW “A” ;存入00H,41H DW “ABC” ;不合法,因是两个字节
查表时,为确定数据区的起始位置,可采用两种方法: (1)根据DB命令前一条指令的地址确定。 例:8100HMOV A,#49H(1字节) TAB: db CoH. F9H. A4H. BOH (2)使用ORG指令专门规定 例 orG 8100H TAB: db CoH. F9H. A4H. BOH 定义的数码管字形码从8100地址开始存放
查表时,为确定数据区的起始位置,可采用两种方法: (1)根据DB命令前一条指令的地址确定。 例: 8100H MOV A, #49H (1字节) TAB: DB C0H, F9H, A4H, B0H (2)使用ORG指令专门规定 例: ORG 8100H TAB: DB C0H, F9H, A4H, B0H 定义的数码管字形码从8100地址开始存放
注意:DB和DW定义的数表,数的个数不得超过80个。 如果数据的数目较多时,可使用多个定义命令。 在MCS51程序设计应用中,常以DB定义数据, 以DW定义地址
注意: DB和DW定义的数表,数的个数不得超过80个。 如果数据的数目较多时,可使用多个定义命令。 在 MCS-51程序设计应用中,常以DB定义数据, 以DW定义地址
4.DS( Define Storage)定义存储区伪指令 功能:用于从指定地址开始,保留指定数目的字节单元为存 储区,供程序运行使用。汇编时对这些单元不赋值。 格式: 标号:DS16位数表 例: ADDRTABL: Ds 20 例: oRG 8100H DS 08H 注意:对MSC51单片机来说,DB、DW、DS命令只能对程序 存储器使用,不能对数据存储器使用
4.DS(Define Storage) 定义存储区伪指令 功能:用于从指定地址开始,保留指定数目的字节单元为存 储区,供程序运行使用。汇编时对这些单元不赋值。 格式: [标号:] DS 16位数表 例: ADDRTABL: DS 20 例: ORG 8100H DS 08H 注意:对MSC-51单片机来说,DB、DW、DS命令只能对程序 存储器使用,不能对数据存储器使用
5.EQU( Equate)赋值伪指令 功能:用于给字符名称赋予一个特定值。赋值以后,其值在 整个过程中有效。 格式: 字符名称EQU赋值项 “赋值项”:可以是常数、地址、标号或表达式。 8位或16位二进制数。赋值以后的字符名称即可 作地址使用,也可作立即数使用。 PA8155 EQU 8001H 给标号PA8155赋值8001H
5.EQU(Equate) 赋值伪指令 功能:用于给字符名称赋予一个特定值。赋值以后,其值在 整个过程中有效。 格式: 字符名称 EQU 赋值项 “赋值项”:可以是常数、地址、标号或表达式。 8位或16位二进制数。赋值以后的字符名称即可 作地址使用,也可作立即数使用。 PA8155 EQU 8001H 给标号PA8155赋值8001H