第四章汇编语言程序设计 §4-1汇编语言程序设计基本概念 §4-2汇编语言程序的基本结构形式
第四章 汇编语言程序设计 §4-1 汇编语言程序设计基本概念 §4-2 汇编语言程序的基本结构形式
§4-1汇编语言程序设计基本概念 MCS-51指令操作数说明 1、语句格式 标号:J操作码[操作数(目的操作数,源操作数)];注释 2、操作数 对于立即数#data (1)立即数188,可表示为#1011110B、#OBCH、#188 (2)MOVR0,# BLOCK; BLOCK为定义过的标号地址 对于直接地址 direct (1)二进制、十进制、十六进制数,MOVA,30H (2)定义过的标号地址,AGAN: SJMP AGAIN (3)表达式,如SUM+2,其中SUM为定义过的标号地址 (4)SFR寄存器名,如SP、DPH、DPL等
§4-1 汇编语言程序设计基本概念 一、MCS-51指令操作数说明 1、语句格式 [标号:] 操作码 [操作数(目的操作数,源操作数)] [;注释] 2、操作数 对于立即数 #data (1)立即数188,可表示为 #10111100B、#0BCH、#188 (2)MOV R0,# BLOCK;BLOCK为定义过的标号地址 对于直接地址 direct (1)二进制、十进制、十六进制数,MOV A,30H (2)定义过的标号地址,AGAIN:SJMP AGAIN (3)表达式,如SUM+2,其中SUM为定义过的标号地址 (4) SFR寄存器名,如SP、DPH、DPL等
对于偏移量rel (1)可以是数值、标号地址、表达式 (2)使用特殊符号“$”,它代表本条转移指令所在的地址, 如LJMP$(死循环) (3)实际编程时,凡指令中用到地址(rel、 addr11、 addr 16 等)都可用标号地址代替实际地址,而地址的运算有汇编程序 完成。 、常用伪指令 汇编:将计算机不可直接识别的汇编语言源程序翻译成机器语 言的过程。分为计算机汇编和人工汇编两种。 汇编程序:具有完成汇编功能的程序。 目标程序:汇编语言源程序经过汇编得到的机器语言程序 伪指令:提供汇编用控制信息的指令,只能被汇编程序所识别, 不是单片机的CPU呵执行的指令
对于偏移量 rel (1)可以是数值、标号地址、表达式 (2)使用特殊符号“$” ,它代表本条转移指令所在的地址, 如LJMP $(死循环) (3)实际编程时,凡指令中用到地址(rel、 addr11 、addr16 等)都可用标号地址代替实际地址,而地址的运算有汇编程序 完成。 二、常用伪指令 汇编:将计算机不可直接识别的汇编语言源程序翻译成机器语 言的过程。分为计算机汇编和人工汇编两种。 汇编程序:具有完成汇编功能的程序。 目标程序:汇编语言源程序经过汇编得到的机器语言程序。 伪指令:提供汇编用控制信息的指令,只能被汇编程序所识别, 不是单片机的CPU可执行的指令
1、定位伪指令ORG( Origin) 格式:[标号:]ORGm m:16位二进制数,代表地址 功能:指出汇编语言程序通过编译,得到的机器语言程序的起 始地址。 2、定义字节伪指令DB( Define byte) 格式:[标号:]DBX1,X2,~Xn Xn:单字节二进制、十进制、十六进制数,或以‘’括起 来的 字符串,数据符号。 功能:定义程序存储器从标号开始的连续单元,用来存放常 数、字符和表格 3、定义字伪指令DW( Define word) 格式:[标号:]DWY1,Y2,~Yn Yn:双字节二进制、十进制、十六进制数,或以‘’括起来 的 字符串,数据符号
1、定位伪指令ORG(Origin) 格式: [标号:] ORG m m:16位二进制数,代表地址。 功能:指出汇编语言程序通过编译,得到的机器语言程序的起 始地址。 2、定义字节伪指令DB(DefineByte) 格式:[标号:] DB X1,X2, ~Xn Xn:单字节二进制、十进制、十六进制数,或以‘ ’括起 来的 字符串,数据符号。 功能:定义程序存储器从标号开始的连续单元,用来存放常 数、字符和表格。 3、定义字伪指令DW(DefineWord) 格式:[标号:] DW Y1,Y2, ~Yn Yn:双字节二进制、十进制、十六进制数,或以‘ ’括起来 的 字符串,数据符号。 功能:同DB,不同的是为16位数据
4、汇编结束命令END 格式:[标号:]END 功能:END是汇编语言源程序的汇编结束标志,在它后面所 写的指令均不予处理。 5、等值命令EQU 格式:字符名称FQU数或汇编符号 功能:将一个数或特定的汇编符号赋予规定的字符名称。先 定义后使用 6、数据地址赋值命令DATA 格式:字符名称DATA表达式 功能:将数据地址或代码地址赋予规定的字符名称
4、汇编结束命令END 格式:[标号:] END 功能:END是汇编语言源程序的汇编结束标志,在它后面所 写的指令均不予处理。 5、等值命令EQU 格式:字符名称 EQU 数或汇编符号 功能:将一个数或特定的汇编符号赋予规定的字符名称。先 定义后使用。 6、数据地址赋值命令DATA 格式:字符名称 DATA 表达式 功能:将数据地址或代码地址赋予规定的字符名称
汇编语言程序的结构 1、程序设计的基本步骤 般步骤为: (1)分析题意,明确要求; (2)建立思路,确定算法; (3)编制框图,绘出流程; (4)编写程序,上机调试; 显然,算法和流程是至关重要的。程序结构有简单顺序、 分支、循环和子程序等几种基本形式。 2、画流程图 画流程图是指用各种图形、符号、指向线等来说明程序 设计的过程。国际通用的图形和符号说明如下
三、汇编语言程序的结构 1、程序设计的基本步骤 一般步骤为: (1)分析题意,明确要求; (2)建立思路,确定算法; (3)编制框图,绘出流程; (4)编写程序,上机调试; 显然,算法和流程是至关重要的。程序结构有简单顺序、 分支、循环和子程序等几种基本形式。 2、画流程图 画流程图是指用各种图形、符号、指向线等来说明程序 设计的过程。国际通用的图形和符号说明如下:
椭圆框:起止框,在程序的开始和结束时使用 矩形框:处理框,表示要进行的各种操作 菱形框:判断框,表示条件判断,以决定程序的流向。 指向线:流程线,表示程序执行的流向 圆圈:连接符,表示不同页之间的流程连接。 各种几何图形符号如下图所示。 起框 处理 判断斩框 指向线↓ 接符C
椭圆框:起止框,在程序的开始和结束时使用。 矩形框:处理框,表示要进行的各种操作。 菱形框:判断框,表示条件判断,以决定程序的流向。 指向线:流程线,表示程序执行的流向。 圆 圈:连接符,表示不同页之间的流程连接。 各种几何图形符号如下图所示
开始 §4-2汇编语言程序的基本结构形式 A←G3H A+A〔32 简单程序的设计 DA A 例4-1已知两个压缩BCD码分别 R2 点 放在内部RAM的31H30H和33H32H A +(31H) 等4个单元中,试编程求和,结果存 入R4R3R2中。 A+(33H)+CY 分析:流程如图: DA丸 程序如下: R3 ORG 0000H 清A LMP MAIN ACC0+C ORG 0040H R4 (结束)
§4-2 汇编语言程序的基本结构形式 一、简单程序的设计 例4-1 已知两个压缩BCD码分别 放在内部RAM的31H30H和33H 32H 等4个单元中,试编程求和,结果存 入R4R3R2中。 分析:流程如图: 程序如下: ORG 0000H LJMP MAIN ORG 0040H
开始 MAIN:MOⅤA,30H A←G3H ADdA, 32H DA A A+A〔32 MOVR2, A DA A MOVA, 31H R2 点 ADDC A,33H A +(31H) DA A A+(33H)+CY MOVR3, A DA丸 CLR A R3 MOV ACC 0, C 清A MOVR4, A HERE: SJMP HERE ACC0+C END R4 (结束)
MAIN: MOV A, 30H ADD A, 32H DA A MOV R2,A MOV A,31H ADDC A,33H DA A MOV R3,A CLR A MOV ACC.0,C MOV R4, A HERE: SJMP HERE END
例4-2利用查表指令将内部RAM中20H单元的压缩BCD码拆开, 转换成相应的ASCI码,存入21H、22H中,高位存在22H 分析:控制流程图(略),程序如下: START: MOV DPTR, #TABLE MOV A 20H ANL A #OFH MOVC A, @A+DPTR MOV 21H,A MOV 20H ANL SWAP AAAA #FOH MOVC A+DPTR MOV 22H,A SJMP TABLE db 30h, 31H, 32H, 33H, 34H DB35H,36H,37H,38H,39H
例4-2 利用查表指令将内部RAM中20H单元的压缩BCD码拆开, 转换成相应的ASCII码,存入21H、22H中,高位存在22H。 分析:控制流程图(略),程序如下: START: MOV DPTR,#TABLE MOV A, 20H ANL A, #0FH MOVC A, @A+DPTR MOV 21H, A MOV A, 20H ANL A, #0F0H SWAP A MOVC A, @A+DPTR MOV 22H, A SJMP $ TABLE: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H