第三章汇编语言程序设计 第一节汇编语言程序的格式 第二节伪指令 第三节汇编语言程序的编写步骤及基本 结构 第四节程序设计举例 Micro Controller unit
第三章 汇编语言程序设计 第一节 汇编语言程序的格式 第二节 伪指令 第三节 汇编语言程序的编写步骤及基本 结构 第四节 程序设计举例
本章要点 本章介绍汇编语言程序的书写格式 编写步骤以及程序的基本结构。通过 些具体范例,了解与掌握编程方法并从 中掌握程序设计的基本技巧
本章要点 • 本章介绍 汇编语言程序的书写格式、 编写步骤以及程序的基本结构。通过一 些具体范例,了解与掌握编程方法并从 中掌握程序设计的基本技巧
第一节汇编语言程序的格式 汇编语言编写的程序由语句组成,每一语句占一行填写 条指令。每行分4段,分别为标号、操作码、操作数和注释 ORG 2000H ADDR: MOV A.OOH 累加器清零 MOV 4IHA 41H、42H清零 标号:代表该行指 MOV 42H.A 令所在的地址,结 尾应加一冒号 MOV R2 OAH 设定累加次数 MOV R1.30H 设定数据首地址 LOOP: MOV AaRI 取数 ADD A41H 累加到41H JNC NEXT 是否有进位 INC 42H 有进位42H加1 NEXT:,MOV 41HA 将和存入41H 操作码:助记符或 INC R1 注释:对语句 伪指令的符号。 DNZR2LOOP操作数:操作所需的说明,也可 要的数据或数据的 不加注释 返回本章首页 LJMP S 存储位置来源 END
第一节 汇编语言程序的格式 汇编语言编写的程序由语句组成,每一语句占一行填写一 条指令。每行分4段,分别为标号、操作码、操作数和注释。 ORG 2000H ADDR: MOV A,00H ;累加器清零 MOV 41H,A ;41H、42H清零 MOV 42H,A MOV R2,0AH ;设定累加次数 MOV R1,30H ;设定数据首地址 LOOP:MOV A,@R1 ;取数 ADD A,41H ;累加到41H JNC NEXT ;是否有进位 INC 42H ;有进位42H加1 NEXT: MOV 41H,A ;将和存入41H INC R1 DJNZ R2,LOOP LJMP $ END 标号:代表该行指 令所在的地址,结 尾应加一冒号 操作码:助记符或 伪指令的符号。 操作数:操作所需 要的数据或数据的 存储位置来源 注释:对语句 的说明,也可 不加注释 返回本章首页
第二节伪指令 伪指令不执行任何操作,汇编时也不生成目标程序。它仅 仅提供对汇编的要求。汇编成机器语言后,伪指令就不存在 。以下为常用的伪指令 1.ORG( Origin)::指明汇编起始点地址 2END:指明源程序至此结束。 3EQU(Epua):赋值伪指令,可对地址标号进行赋值。 4DB( Define byte):定义从指定标号地址开始所存放的字节 数据,多字节时各字节间用逗号隔开。 5Dw( Define word):定义从指定的标号地址开始,所存放 的字数据。跟DB一样,输入几个字时各字间要用逗号隔开 6DS( Define storage):定义存储区,表示从标号所指的存 储单元开始,保留的内存单元数量,以供程序使用 返回本章首页
第二节 伪指令 伪指令不执行任何操作,汇编时也不生成目标程序。它仅 仅提供对汇编的要求。汇编成机器语言后,伪指令就不存在 了。以下为常用的伪指令: 1.ORG(Origin)::指明汇编起始点地址。 2.END:指明源程序至此结束。 3.EQU(Epual):赋值伪指令,可对地址标号进行赋值。 4.DB(Define Byte):定义从指定标号地址开始所存放的字节 数据,多字节时各字节间用逗号隔开。 5.DW(Define Word):定义从指定的标号地址开始,所存放 的字数据。跟DB一样,输入几个字时各字间要用逗号隔开。 6.DS(Define Storage) :定义存储区,表示从标号所指的存 储单元开始,保留的内存单元数量,以供程序使用。 返回本章首页
第三节汇编语言程序的编写步骤 及基本结构 顺序结构:「指令1 顺序结构是指程 序按指令顺序逐条 指令2 执行的一种结构。 也是程序结构中最 指令3 简单的一种结构
第三节 汇编语言程序的编写步骤 及基本结构 一、顺序结构: 顺序结构是指程 序按指令顺序逐条 执行的一种结构。 也是程序结构中最 简单的一种结构
二、分支结构 指程序中具有转移指令,可根据转移 条件决定是转移还是继续执行下一条指 令 Z=1? Z=0 转分支 Z=1? PV=1? C=0? 转分支2 转分支1 C=0? 转分支2 转分支4 转分支3转分支2 转分支1 转分支3 转分支4 几种分支结构程序的框图
二、分支结构: 指程序中具有转移指令,可根据转移 条件决定是转移还是继续执行下一条指 令。 几种分支结构程序的框图
三、循环结构 循环结构由四个环节组成 1.初始化部分:对循环体中参加操作的有关 参数、地址等赋以初始值,并指定循环结束条 件 2循环体部分:指每次循环都需要重复执行 的程序段 3修改初始值:每次循环结束都要对初始值 进行修改,特别是判断结束条件的参数,每经 次循环后都要作相应的修改,以便决定是否 结束循环 4结束判断部分:检查结束条件是否满足 若条件满足停止循环,否则返回继续执行循环 体
三、循环结构 循环结构由四个环节组成。 1.初始化部分:对循环体中参加操作的有关 参数、地址等赋以初始值,并指定循环结束条 件。 2.循环体部分:指每次循环都需要重复执行 的程序段。 3.修改初始值:每次循环结束都要对初始值 进行修改,特别是判断结束条件的参数,每经 一次循环后都要作相应的修改,以便决定是否 结束循环。 4.结束判断部分:检查结束条件是否满足, 若条件满足停止循环,否则返回继续执行循环 体
循环结构框性图 入口 入口 图中每执行一次循环 初始化 体后,都要检查结束条 初始化 件是否满足,若条件满 循环体 修改初值 足停止循环,否则返回 修改初值 继续执行循环体 循环体 右边两图区别是先检 循环 结束否? 循环 查循环是否结束后修改 结束否? 初值,还是先修改初值 Y 后检查循环是否结束 出口) 出口
循环结构框图 图中每执行一次循环 体后,都要检查结束条 件是否满足,若条件满 足停止循环,否则返回 继续执行循环体。 右边两图区别是先检 查循环是否结束后修改 初值,还是先修改初值 后检查循环是否结束
顺灰序结构的程序举例 例3-1将地址为2000H、2001H、2002H的片外数据存储单元的内容, 分别传送到2002H、203H、2004H存储单元中去 ORG O000H JMP 1000H ORG 1000H Mov DPTR #2002H MOVX A,@DPTR MOV DPTR, #2004H MOVX @DPTR. A MOVX ODPTRA MOV DPTR, #2001H MoV DPTR #2000 MOVX A@DPTR MOVX A, @DPTR MOv DPTR #2003H MOV DPTR.#2002H MOVX ODPTR A SJMP S
顺序结构的程序举例 例3-1 将地址为2000H 、2001H、2002H的片外数据存储单元的内容, 分别传送到2002H、2003H、2004H存储单元中去。 ORG 0000H LJMP 1000H ORG 1000H MOV DPTR,#2002H MOVX A,@DPTR MOV DPTR,#2004H MOVX @DPTR,A MOV DPTR,#2001H MOVX A,@DPTR MOV DPTR,#2003H MOVX @DPTR,A MOV DPTR,#2000H MOVX A,@DPTR MOV DPTR,#2002H MOVX @DPTR,A SJMP $
分支结构的程序举例 例3-2有甲乙两数存于41H和42H存储单元,运算符号的 ASCI码存于40H单元,编写一根据40H的符号,对甲乙两数 进行相应运算的程序;井将运算结果存于43H单元。 ORG 0000H LJMP 0100H ORG 0100 Mov A 40H CJNE A,#2BH, MINUS MINUS: CJNE A,#2DH, ERR PLUS: MOV A 41H CLR C ADd A 42H MOV A 41H MOV 43H. A SUBB A 42H SJMP CLOSE MOV 43H. A SJMP CLOSE ER: Mov 43H #OFFH CLOSE: SMP S
分支结构的程序举例 例3-2 有甲乙两数存于41H和42H存储单元,运算符号的 ASCII码存于40H单元,编写一根据40H的符号,对甲乙两数 进行相应运算的程序;井将运算结果存于43H单元。 ORG 0000H LJMP 0100H ORG 0100 MOV A,40H CJNE A,#2BH,MINUS PLUS: MOV A,41H ADD A,42H MOV 43H,A SJMP CLOSE MINUS:CJNE A,#2DH,ERR CLR C MOV A,41H SUBB A,42H MOV 43H,A SJMP CLOSE ERR: MOV 43H,#0FFH CLOSE:SJMP $