第四章汇编语言程序设计 4-1汇编程序的约定 4-2程序设计步骤 43直线程序 4-4分支程序 45循环程序 4-6子程序
第四章 汇编语言程序设计 4-1 汇编程序的约定 4-2 程序设计步骤 4-3 直线程序 4-4 分支程序 4-5 循环程序 4-6 子程序
4-1汇编程序约定 汇编语言程序: 用汇编语言编写的、完成特定功能的指令序列。 汇编程序: 能将汇编语言源程序转换成机器语言目标程序的 系统软件。 汇编语言程序到机器语言程序的转换过程称为汇编 1.手工汇编:人工查指令表汇编。用于设计短小程序 或调试程序的场合。 2.机器汇编:用汇编程序进行汇编
4-1 汇编程序约定 汇编语言程序: 用汇编语言编写的、完成特定功能的指令序列。 汇编程序: 能将汇编语言源程序转换成机器语言目标程序的 系统软件。 汇编语言程序到机器语言程序的转换过程称为汇编。 1.手工汇编:人工查指令表汇编。用于设计短小程序 或调试程序的场合。 2.机器汇编:用汇编程序进行汇编
源程序使用机器汇编要考虑汇编程序的约定 1)按指令格式和语法规则编写程序。 常数的表示: 十进制数:20 十六进制数:87H,0FOH 二进制数:01011001B 字符: H 字符串:“He110” 2)使用伪指令提供汇编信息
源程序使用机器汇编要考虑汇编程序的约定 1)按指令格式和语法规则编写程序。 常数的表示: 十进制数:20 十六进制数:87H,0F0H 二进制数:01011001B 字符: ‘H’ 字符串: “Hello”。 2)使用伪指令提供汇编信息
汇编的主要任务 1)确定程序中每条汇编语言指令的指令机器码 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件(*.OBJ/米,HEX)和列表文件 (米,LST) 汇编语言指令类型 1.机器指令: 指令系统中的全部指令,每条指令有对应的机器代码 2.伪指令 汇编控制指令,仅提供汇编信息,没有指令代码
汇编的主要任务: 1)确定程序中每条汇编语言指令的指令机器码。 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件 (* .OBJ/ *. HEX)和列表文件 (*.LST)。 一. 汇编语言指令类型 1.机器指令: 指令系统中的全部指令,每条指令有对应的机器代码。 2. 伪指令: 汇编控制指令,仅提供汇编信息,没有指令代码
汇编语言指令类型 3.宏指令 宏汇编功能:将需要多次反复执行的程序段定义成 个宏指令名(宏定义),编程时,可在程序中使用 宏指令名来替代一段程序(宏调用)。 宏定义过程: 宏指令名 MACRO形式参数 ;定义程序段 ENDM 宏调用过程: 宏指令名实际参数 宏指令名实际参数
一. 汇编语言指令类型 3. 宏指令: 宏汇编功能:将需要多次反复执行的程序段定义成一 个宏指令名(宏定义),编程时,可在程序中使用 宏指令名来替代一段程序(宏调用)。 宏定义过程: 宏指令名 MACRO 形式参数 … ;定义程序段 ENDM 宏调用过程: … 宏指令名 实际参数 … 宏指令名 实际参数
汇编控制指令(伪指令) 常用伪指令及其功能: 1.ORG起始地址指令:指明程序和数据块起始地址。 指令地址机器码 源程序 ORG 2000H 2000h 78 30 MAIN: MOV RO, #30H 2002HE6 MOv A, @RO ORG 3000H 3000H23 DB23H,100,“A 3001H64 3002H41 2 B—定义字节型常数指令。 列:DB12H,100,‘A
二.汇编控制指令(伪指令) 常用伪指令及其功能: 1. ORG—起始地址指令:指明程序和数据块起始地址。 指令地址 机器码 源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,@R0 … ORG 3000H 3000H 23 DB 23H,100, ‘A’ 3001H 64 3002H 41 2 . DB — 定 义 字 节 型 常 数 指 令 。 例: DB 12H,100,‘A’
3.DW一定义字型常数指令 例:DW1234H,5678H 4.EoU—等值。为标号或标识符赋值 X1 EQU 2000H X2 EQU OFH MAIN: MOV DPTR, #X1 ADD A,#X2 5.END一结束汇编指令。 例: START: END START
4. EQU —等值。为标号或标识符赋值。 X1 EQU 2000H X2 EQU 0FH … MAIN:MOV DPTR,#X1 ADD A,#X2 5. END —结束汇编指令。 例:START: … … END START 3. DW —定义字型常数指令。 例: DW 1234H,5678H
4-2汇编语言程序设计步骤 确定方案和计算方法 二.了解应用系统的硬件配置、性能指标。 建立系统数学模型,确定控制算法和操作步骤 四.画程序流程图 (开始 表示程序结构和程序功能 五.编制源程序 1.合理分配存储器单元和了解I0接口地址。 2按功能设计程序,明确各程序之间的相互关系。 3用注释行说明程序,便于阅读和修改调试和修改
4-2 汇编语言程序设计步骤 一.确定方案和计算方法 二.了解应用系统的硬件配置、性能指标。 三.建立系统数学模型,确定控制算法和操作步骤。 四.画程序流程图 表示程序结构和程序功能 五. 编制源程序 1.合理分配存储器单元和了解I/O接口地址。 2.按功能设计程序,明确各程序之间的相互关系。 3.用注释行说明程序,便于阅读和修改调试和修改。 开始 1 Y N ?
常用程序结构: 直线程序、分支程序、循环程序、子程序 4-3直线程序 直线程序又称简单程序,程序走向只有一条路径。 双字节变补程序(设数据在R4R5中): MOVA,R5;取低字节 CPL A ADDA,#1;低字节变补 MOV R5, A MOA,R4;取高字节 CPL A ADDC A,#0;高字节变补 MOV R4, A
常用程序结构: 直线程序、分支程序、循环程序、子程序 4-3 直线程序 直线程序又称简单程序,程序走向只有一条路径。 双字节变补程序(设数据在R4R5中): MOV A,R5 ;取低字节 CPL A ADD A,#1 ;低字节变补 MOV R5,A MOV A,R4 ;取高字节 CPL A ADDC A,#0 ;高字节变补 MOV R4,A
例4-3-4压缩式BCD码分解成为单字节BCD码。 MOV RO,#4OH;设指针 匚片内RAM MOVA,@RO;取一个字节42H|0 MOVR2,A;暂存 41H0个 ANLA,#0FH;清0高半字节[4H十个 INC RO MOV@R0,A;保存数据个位 MOV A, R2 SWAP A 十位换到低半字节 ANL A, #OFH INC RO MOV@R0,A;保存数据十位
例4-3-4 压缩式BCD码分解成为单字节BCD码。 MOV R0,#40H ;设指针 MOV A,@R0 ;取一个字节 MOV R2,A ;暂存 ANL A,#0FH ;清0高半字节 INC R0 MOV @R0,A ;保存数据个位 MOV A,R2 SWAP A ;十位换到低半字节 ANL A,#0FH INC R0 MOV @R0,A ;保存数据十位 片内 RAM 42H 0 十 41H 0 个 40H 十 个