微机原理及应用 第四章 汇编语言程序设计基础
微机原理及应用2版 第4章汇编语言程序设计
![微机原理及应用2版 第4章汇编语言程序设计](https://img.taocdn.com/s3/m/cbf06f3131126edb6f1a10fe.png)
第4章 汇编语言程序设计
3.段定义伪指令
段名 SEGMENT [定位类型] [组合类型] [‘类别’] …
段名 ENDS
第4章 汇编语言程序设计
定位类型:说明段的起始地址应有怎样的边界值
BYTE:×××× ×××× ×××× ××××B, 即段可以从任何地址开始;
WORD:×××× ×××× ×××× ×××0B, 即段的起始地址必须为偶地址;
概述
汇编语言(Assembly Language)是一种采用指令助 记符、符号地址、标号、伪指令等符号编写程序的程 序设计语言。 用汇编语言编写的程序称为汇编语言源程序 (Source Program)。 一般情况下,一个助记符对应一条机器指令,所以 汇编语言也是面向机器的语言。
第4章 汇编语言程序设计
第4章 汇编语言程序设计
⑵ END
格式:END [标号] 功能:表示源程序的结束。
标号指示程序开始执行的起始地址。 如果多个程序模块相连接,则只有主程序要使用 标号,其它子模块只用END而不必指定标号。
第4章 汇编语言程序设计
ASSUME:用于明确段与段寄存器的关系
ASSUME 段寄存器名:段名[,段寄存器名:段名…]
例:ASSUME DS:DSEG,CS:CSEG,ES:ESEG,SS:SESG 例:ASSUME CS:CODE,DS:DATA,ES:DATA
说明:
1. 该伪指令出现在码段中; 2. 该伪指令只是指示各逻辑段使用段寄存器的情况,并
(3)字符被存放时为它的ASCII码, 例 ‘A’的ASCII码为41H;
(4)符号地址具有以下关系: D_B = D_A+3 D_D = D_B+2 = D_A+6
微机原理及应用(第五版)PPT课件
![微机原理及应用(第五版)PPT课件](https://img.taocdn.com/s3/m/79d4e39b767f5acfa0c7cd9d.png)
• 第一章 微型计算机基础知识 • 第二章 微型计算机组成及微处理器功能结构 • 第三章 80X86寻址方式和指令系统 • 第四章 汇编语言程序设计 • 第六章 半导体存储器及接口 • 第八章 中断和异常 • 第九章 输入/输出方法及常用的接口电路
2021
1
第一章 微型计算机基础知识
X为负时:求[X]补是将[X]原的符号位不变,其余各位
变反加1.
求[X]反是将[X]原的符号位不变,其余各位
变反.
2021
微机原理及应8用
补码没有+0和-0之分;反码有+0和-0之分
[+0]补=00…..00=0 [-0]补=00…..00=0 [+0]反=00…..00=0 [-0]反=00…..00=111…..11
解: ①.设x=129,y=79则
[x]补=10000001B,[y]补=01001111B [-y]补=[y]变补=10110001B [x-y]补=[x]补+[-y]补=00110010B 最高位有进位,
结果为正[x-y]补= [x-y]原=00110010B x-y=50
②.设x=79,y=129则
• 二进制:数的后面加后缀B. • 十进制:数的后面加后缀D或不加. • 十六进制:数的后面加后缀H.
2021
微机原理及应5用
1.1.3 整数
1.无符号数
8、16、32位全部用来表示数值本身。
最低位LSB是0位,最高位MSB是7、15、31。
2.带符号整数
1).原码: 设X=+1011100B,Y=-1011100B
• 补码:优点:符号位和数值一起运算; 减法可以变成加法运算.
(微机原理)第4章8086汇编语言程序设计
![(微机原理)第4章8086汇编语言程序设计](https://img.taocdn.com/s3/m/8b852c7411661ed9ad51f01dc281e53a580251bc.png)
逻辑运算指令的编写与使用
逻辑操作
包括与、或、异或、非等运算。
测试指令
对某一位或某一组存储单元进行 运算和测试。
字符串操作
适合处理字符串拼接、截取等操 作。位操作指令的编写与使用 Nhomakorabea1
设置指令
包括STC、STD等,可设置标志寄存器中
输入输出
2
相应的位。
指令IN、OUT等,可实现从外部设备的输
入和输出。
堆栈是一种重要的存储结构,在程序中 起到了重要的作用。
寄存器的种类及其功能
通用寄存器
8个通用寄存器,用于存储数据 或内存地址。
计数器与时序寄存器
用于计数和处理时间信息。
状态标志寄存器
记录程序的运行状态,如进位标 志、零标志、符号标志等。
数据传输指令的编写与使用
MOV
用于数据传输,是汇编程序常用的一种指令。
3
控制指令
HLT、WAIT等控制指令,可控制程序的执 行。
转移指令的编写与使用
JMP
无条件转移指令,直接跳转到指定的地址。
JE
条件转移指令,按指定条件进行转移操作。
CALL
过程调用指令,可将参数传递给被调用的程序。
RET
过程返回指令,将跳转到调用指令后面的位置。
输入输出指令的编写与使用
IN 指令
从设备或端口读入数据到指定的 操作数中。
O U T指令
将指定的操作数中的数据送到设 备或端口中。
PUS H /PO P指令
将寄存器的值压入堆栈或从堆栈 中取出数据。
堆栈操作的编写与使用
1
PUSHA/POPA
将16个通用寄存器的值一次性入栈或出栈。
2
微机原理及应用第四章汇编语言程序设计基础
![微机原理及应用第四章汇编语言程序设计基础](https://img.taocdn.com/s3/m/b3887c2d4693daef5ff73d05.png)
画流程图:以图示形式表示解决具体问题的思路和方法
编制源程序:精心挑选合适的指令和操作数的寻址方式
用注释行说明程序,便于阅读、调试和修改。
调试程序:
汇编
执行
Y
源程序--→机器程序--→分析结果正确--→调试程序完成
N
修改
4
• 起止框 • 处理框 • 判断框
• 连线
流程图图例
开始
结束
XX+1 Y Y-1
31H
取Data1和Data2
0000H
A, Data1 A, Data2
Y
不相等?
STEP1 ;两数不等,转STEP1
N
F0
;两数相等,F0置位
设置标志F0
Y
异号?
ACC.7, TEST;两数异号,转TEST A, Data2 ;两数同号,恢复Data1 结束
N
Y
Data1小?
Y
Data1正?
A, Data2 ;比较 STEP3 ; Data1小,转STEP3 BIG, Data1 ; Data1大
CJNE A, #0AH, $+3
clr c subb A,#30h
JNC ADD_37;若大于等于0AH,则加37Hcjne A,#10,$+3
ADD_30:ADD A, #30H;若小于0AH,则加30H
jc A, HEXASC1 ;A<10转移
MOV R2, A ;保存结果
RET
;子程序返回
subb A,#07h ASCHEX1: ret
3
2、 程序设计步骤
分析课题→确定算法和数据结构→确定操作步骤→画流程 图→编制源程序→调试程序
408《微机原理及应用》复习大纲
![408《微机原理及应用》复习大纲](https://img.taocdn.com/s3/m/80fef51e14791711cc7917f1.png)
412《微机原理及应用》复习大纲课程名称微机原理及应用英文名称Micro Computer Principle and Application教学要求熟悉并掌握微型计算机系统的整体概念,理解硬软件间的辩证关系。
具体要掌握:CPU和基本接口的结构和工作原理;学会用汇编语言编程,重点放在如何根据具体要求来确定系统硬软件结构;合理选用存贮器和接口芯片;了解如何设计监控(管理)程序来统一管理系统硬软件资源的方法和技巧。
考试内容第一章:计算机中的数制和码制1数和数制数的位置表示法及各种进位制数;各种进位制数的换算方法;二进制数的运算方法2原码、补码、反码及其相应的运算法则原码;反码和补码;补码的求法;补码的运算;溢出判别;算术移位;移码3小数点问题定点法;浮点法4十进制数的二进制编码及ASCII码组合BCD码;非组合BCD码;ASCII码;奇偶校验码第二章;计算机基本软硬件知识与80486微处理器1计算机系统组成2存储器38086/8088微处理器内部结构*8086CPU内部结构、寄存器4工作模式简介:实地址模式和保护虚拟地址模式58086/8088的外部引脚介绍:数据总线、地址总线和控制总线第三章寻址方式及指令系统1寻址方式操作数寻址方式;程序转移地址的寻址方式2指令系统1)数据传送指令;累加器专用传送指令;地址传送指令;标志传送指令2)算术运算指令二进制加/减法指令;二进制乘/除法运算指令;符号位扩展指令;十进制(BCD)运算指令3)逻辑运算和移位指令逻辑运算指令;移位与循环移位指令4)串操作指令字符串操作指令;重复前缀指令5)控制转移类指令无条件与条件转移指令;循环转移指令;子程序调用与返回;中断和中断返回6)处理器控制类指令标志操作指令;外部同步指令;空操作指令3DEBUG命令简介第四章汇编语言程序设计1汇编语盲的基本概念计算机程序设计语言(机器语言、汇编语言、高级语言);汇编语言的语句格式(指令语句、伪指令语句);常数、标号、变量及表达式、伪指令2汇编程序的功能和汇编语言程序的运行汇编语言源程序的汇编、连接和装入运行;汇编过程;汇编语言与PC-DOS 的接口3汇编语言程序设计的基本方法汇编语言程序设计步骤;分支程序设计;循环程序设计;子程序设计;4宏汇编宏指令、宏定义和宏调用;宏嵌套;宏定义中的标号与变量;宏指令与子程序5多模块程序设计多模块的连接;模块间标识符的交叉访问6DOS功能调用7BIOS功能调用第五章半导体存贮器与存贮系统1概述存储器的分类;半导体存储器的结构与组成;`内存储器的性能指标2RAM、ROM典型芯片Intel 2114(1K×4)、HM6116(2K×8)、HM6264(8K×8);DRAM 2118(16K×1);UVEPROM 2764(8K×8);EEPROM Intel2864(8K×8)38086/8088CPU存储器的硬件组织地址/数据总线分离;地址空间组织4存储器的扩充5存储器扩充实例存储器扩充的步骤;存储器位的扩展;地址译码;存储器扩展举例第六章中断处理1概述中断的概念;中断处理过程;中断系统要解决的问题28086/8088的中断系统中断结构;内部中断;外部中断3中断优先级管理器 8259A PIC8259A内部结构与外部引脚;8259APIC编程;8259A在PC系统中的应用第七章输入/输出方法及常用的接口电路1概述时序配合;信号转换;数据缓冲;I/O电路代替CPU对外设的控制功能。
微机原理及应用习题库与答案
![微机原理及应用习题库与答案](https://img.taocdn.com/s3/m/f1beec49814d2b160b4e767f5acfa1c7aa0082fc.png)
微机原理及应⽤习题库与答案微机原理及应⽤习题库与答案习题与练习题1第1章绪论1.计算机分那⼏类?各有什么特点?答:传统上分为三类:⼤型主机、⼩型机、微型机。
⼤型主机⼀般为⾼性能的并⾏处理系统,存储容量⼤,事物处理能⼒强,可为众多⽤户提供服务。
⼩型机具有⼀定的数据处理能⼒,提供⼀定⽤户规模的信息服务,作为部门的信息服务中⼼。
微型机⼀般指在办公室或家庭的桌⾯或可移动的计算系统,体积⼩、价格低、具有⼯业化标准体系结构,兼容性好。
2.简述微处理器、微计算机及微计算机系统三个术语的内涵。
答:微处理器是微计算机系统的核⼼硬件部件,对系统的性能起决定性的影响。
微计算机包括微处理器、存储器、I/O接⼝电路及系统总线。
微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成⼀个完整的、独⽴的信息处理系统。
3.80X86微处理器有⼏代?各代的名称是什么?答:从体系结构上可分为3代:← 8080/8085:8位机。
↑ 8086/8088/80286:16位机。
→ 80386/80486:32位机。
第2章微处理器结构及微计算机的组成1.8086是多少位的微处理器?为什么?答:8086是16位的微处理器,其内部数据通路为16位,对外的数据总线也是16位。
2.EU与BIU各⾃的功能是什么?如何协同⼯作?答:EU是执⾏部件,主要的功能是执⾏指令。
BIU是总线接⼝部件,与⽚外存储器及I/O接⼝电路传输数据。
EU经过BIU进⾏⽚外操作数的访问,BIU为EU提供将要执⾏的指令。
EU与BIU可分别独⽴⼯作,当EU不需BIU提供服务时,BIU可进⾏填充指令队列的操作。
3.8086/8088与其前⼀代微处理器8085相⽐,内部操作有什么改进?答:8085为8位机,在执⾏指令过程中,取指令与执⾏执令都是串⾏的。
8086/8088由于内部有EU和BIU两个功能部件,可重叠操作,提⾼了处理器的性能。
4.8086/8088微处理器内部有那些寄存器,它们的主要作⽤是什么?答:执⾏部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。
微型计算机原理与应用第4章汇编语言程序设计基本方法
![微型计算机原理与应用第4章汇编语言程序设计基本方法](https://img.taocdn.com/s3/m/c73dac1dda38376bae1fae2a.png)
算术运算都是双操作数运算,操作数必须为数字操作数。 取模运算(MOD)是取两数相除的余数,两操作数的值必须为 正整数。
逻辑操作符有:AND(逻辑与)、OR(逻辑或)、NOT(逻辑 非)、XOR(逻辑异或)。
逻辑运算的两个操作数的值也应为数字。两数进行逻辑 运算是两数的对应位分别进行相应运算。
微型计算机原理与应用第4章汇编语 言程序设计基本方法
第 4 章汇编语言程序设计基本方法
4.1
4.1.1汇编语言与机器语言
我们已经学过高级语言,例如BASIC语言或FORTRAN 语言,无论哪种语言,它都规定了一系列用于编写程序的语 句和应该遵循的语法规则。人们根据一种语言给定的语句及 其语法规则就可以写出程序,计算机则通过执行已编好的程 序来完成人们要求它完成的各种复杂功能。汇编语言也一样, 根据汇编语言的语句及其语法规则可以写出汇编语言程序。 但汇编语言与高级语言有较大的区别,汇编语言中的语句与 机器的种类和型号密切相关。
2.
汇编语言与高级语言一样也可以有变量, 变量的值在程 序运行期间是可以改变的。
1)
汇编语言中的变量是通过伪指令定义的, 伪指令的格式 如下:
变量名DB 表达式;
变量名DW 表达式;
变量名DD 表达式;
变量名DQ 表达式;
变量名DT 表达式; 标识符, 其定义方法与上面指出的语句中的名称一样,但变 量名后面不能加冒号,只能用空格。变量名不是必要的,在语 句中可以有,也可以没有。变量的类型与变量名后的关键字 DB、 DW、 DD、 DQ、 DT有关, 它们分别定义了单字节变 量(或称字节变量)、 双字节变量(或称字变量)、 四字节变量 (或称双字变量)、八字节变量(或称长字变量)和十字节变量。
单片微机原理及应用课件 第4章 汇编语言程序设计
![单片微机原理及应用课件 第4章 汇编语言程序设计](https://img.taocdn.com/s3/m/c1cc298884868762caaed5b3.png)
N B
图4-3 分支程序结构流程图
2.双向分支程序设计举例
【例4.2】 设X存在30H单元中,根据下式
X+2 Y= 100 X>0 X=0 求出Y值,将Y值存入31H单元。
∣X∣ X<0
解:根据数据的符号位判别该数的正负,若最 高位为0,再判别该数是否为0。程序流程如 图所示。 参考程序如下:
开始
汇编语言源程序是由汇编语句(即指令)
组成的。汇编语言一般由四部分组成。 其典型的汇编语句格式如下: 标号: 操作码 操作数 A,30H ;注释 ;A←(30H)
START: MOV
各段之间必须用定界符隔开。
返回本节
1、标号段
标号是用户给指令语句设定的一个符号, 在汇编产生目标程序时,汇编程序将把标号 所指的指令语句目标码首地址值赋给该标号。 于是,标号便可作为地址或数据在其它语句 的操作数段中引用。 标号是以字母开头的1~8个字母或数字串组 成,注意,不能使用指令助记符、伪指令或 寄存器名来作标号,标号不能重复定义。
特点:程序按编写的顺序依次往下执行每一条 指令,直到最后一条。 【例4.1】 将30H单元内的两位BCD码拆开并 转换成ASCII码,存入RAM两个单元中。程 序流程如图4-1所示。参考程序如下:p71
开始
取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 结束
8.END:汇编结束
源程序结束指令。在END以后所写的指令, 汇编程序都不予处理。一个源程序只能有一 个END指令,放在程序结尾。
小结:1、为什么要对汇编程序进行汇编?
2、机器汇编的过程是怎样的? 3、常用伪指令的功能各是什么?
4.2 汇编语言程序设计
微型计算机原理及应用 第四章 汇编语言程序设计
![微型计算机原理及应用 第四章 汇编语言程序设计](https://img.taocdn.com/s3/m/d64dec2dc4da50e2524de518964bcf84b9d52d1e.png)
第 四 章 汇编语言程序设计
2)助记符(Memonic) 指令语句中助记符有90多种,伪指令语句中稍后介绍! 3)操作数 指令语句:单操作数、双操作数、无操作数
伪指令语句:操作数不定,有多个操作数时需使用逗号隔开
(1)常数:指令中出现的那些固定值。 (2)寄存器 例如: A1 EQU BX (3)标号:代表一条指令的符号地址
第 四 章 汇编语言程序设计
用于数值表达式,运算结果是一个数值!
表达式中常用的运算符
在地址表达式中只用加和减两种运算符!
① 算术运算符:+(加),−(减),*(乘),/(除)和MOD(模除,即两个整数相除后取余数)
② 逻辑运算符:AND(逻辑“与”),OR(逻辑“或”),XOR(逻辑“异或”)和NOT(逻辑 “非”)P129
BYTE WORD DWORD FWORD QWORD TWORD NEAR
FAR
VAR DW ?
;变量VAR的类型为字
ARRAY DD 10 DUP(?) ;变量ARRAY的类型 为双字
STR DB ‘THIS IS TEST’ ;变量STR的类型 为字节
MOV AX,TYPE VAR ;(AX)←2
第 四 章 汇编语言程序设计
第 4章 汇编语言程序设计P124
汇编语言源程序的格式 伪指令 宏指令 汇编语言程序设计的基本方法
顺序结构 分支结构 循环结构
过程调用
第 四 章 汇编语言程序设计
4.1 汇编语言的基本概念 1、机器语言(Machine Language) 不直观、不易理解和记忆! 2、高级语言(High Level Language)
MOV BX,TYPE ARRAY ;(BX)←4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、 程序设计步骤
分析课题→确定算法和数据结构→确定操作步骤→画流程
图→编制源程序→调试程序
分析课题:对具体问题具体分析,并抽象出数学模型
确定算法:解决同一问题有多种方法,从中选择一种最佳的方法
确定数据结构:合理安排数据结构,合理选择和分配内存空间、 工作寄存器以及I/O接口地址
程序模块:把整个问题分成若干个功能模块,画出层次图及通信
end
【例4-5】代码转换程序设计1
一位十六进制数与ASCII码之间的转换
1、一位十六进制数转换为ASCII码 2、ASCII码转换为一位十六进制数
0~9的ASCII码:30~39H,A~F的ASCII码:41~46H。
‘0’~‘9’与0~9之间的差值30h ‘A’~‘F’与A~F之间的差值37h;
第四章 汇编语言程序设计基础
4-1 汇编语言程序设计方法 4-2 汇编语言程序结构 4-3 汇编语言的编辑与汇编
4-1 汇编语言程序设计方法
1 程序及程序设计 2 程序设计步骤
1 程序及程序设计
• 程序是一系列指令的有序集合 • 程序设计则是编制程序的过程
程序设计:就是人们用计算机能接受的语言,把欲解决问题 的算法和步骤描述出来的过程。编程语言
N
F0
;两数相等,F0置位
设置标志F0
Y
异号?
ACC.7, TEST;两数异号,转TEST A, Data2 ;两数同号,恢复Data1 结束
A, Data2 ;比较
STEP3
; Data1小,转STEP3
BIG, Data1 ; Data1大
SMALL, Data2
N
Y
Data1小?
Y
Data1正?
clr c subb A,#30h
JNC ADD_37;若大于等于0AH,则加37Hcjne A,#10,$+3
ADD_30:ADD A, #30H;若小于0AH,则加30H jc A, HEXASC1 ;A<10转移
MOV R2, A ;保存结果
RET
;子程序返回
subb A,#07h ASCHEX1: ret
1、十六进制转换成ASCII码
2、ASCII码转换成十六进制
输入:R2中存放一位十六进制;出口:R2返输回入A:SRC2I中I值存放ASCII码
ORG 0000H
输出:R2中返回十六进制
HEXASC:MOV A, R2 ;将该十六进制数暂A存SC于HAEX中:mov A,R2
CJNE A, #0AH, $+3
N
顺序程序2
顺序程序3 结束
补码绝对值
例 求R2中补码绝对值,正数不变,负数变补。
MOV A,R2
JJNNBB ACC.7,NEXT;为正数?
影响条件
CPL A INC A MOV R2,A
;负数变补
Y
条件满足?
N
处理段
NEXT:SJMP NEXT ;结束
【例4-4】无符号数的比较
比较外部RAM Data1和Datad2a单ta元1的e两qu个无10符0号0h数,并将大数存入
开始
Y
?
N
Y
F>5?
N
1
4-2 汇编语言程序结构
程序设计:就是人们用计算机能接受的语言,把欲解决问题 的算法和步骤描述出来的过程。编程语言
机器语言→汇编语言→高级语言(字符型→图形化)
• 程序设计方法 • 程序开发方法
– 结构化设计
– 自顶向下方法→先顶层开发
➢三种基本控制结构,
• 先写主程序,后写子程序
Data3单元中, Data1、Dactoa2m和1D:amtao3v为d连p续tr,的#单da元ta1
先看数据放在内部RAM的情况movx
a, @DPTR
ORG 0000H
mov b,a
COM1:MOV A, 40H
inc DPTR
CJNE A, 41H, L1;两数比较movx a, @DPTR
画流程图:以图示形式表示解决具体问题的思路和方法
编制源程序:精心挑选合适的指令和操作数的寻址方式
用注释行说明程序,便于阅读、调试和修改。
调试程序:
汇编
执行
Y
源程序--→机器程序--→分析结果正确--→调试程序完成
N
修改
• 起止框 • 处理框 • 判断框
• 连线
流程图图例
开始
结束
XX+1 Y Y-1
– 顺序结构 – 选择结构 – 循环结构
– 自底向上方法→先底层开发
• 先写子程序,后写主程序
➢一个子程序结构
• 子程序
– 混合方法
• 中断服务子程序
4-2 汇编语言程序结构
4-2-1 顺序结构程序设计 4-2-2 分支结构程序设计 4-2-3 循环结构程序设计 4-2-4 子程序结构程序设计
4-2-1 顺序结构程序设计
A=0 A=1
分支程序0 分支程序1
A=n 分支程序n
结束
1、多次使用条件转移指令,形成两个以上判断框。
例 求符号函数Y=SGN(X)
开始
输入X存入40H,输出Y存入41H中 +1 当 X>0
Y= SGN(X)= 0 当 X=0
取X
Y
N
X=0?
-1 当 X<0
A= 0
Y
N
X<0?
SYMB: MOV A,40H ;取X
•
DB 10H, 19H, 24H, 31H
•
DB 40H, 51H
;保存DPTR的原值 ;取平方表首地址 ;查平方表 ;恢复DPTR的原值
;平方表
4-2-2 分支结构程序设计
特点:程序中含有转移类指令 关键:正确选用转移指令
• 无条件分支程序 – 程序设计者事先设计好的流向 – LJMP、AJMP 、SJMP、JMP、LCALL、ACALL、RET(I)
围
一、单重分支程序
一个判断决策框,程序有两条出路,二选一。
由一个条件转移指令实现
有三种典型单分支结构:
开始
开始
顺序程序1
顺序程序1
影响条件
影响条件
Y
条件满足?
N
Y
条件满足?
N
分支处理段1
分支处理1 分支处理2
顺序程序2 结束
顺序程序2
顺序程序3 结束
开始 顺序程序1
分支处理段1
影响条件
Y
条件满足?
N
Data1存入BIG Data2存入SMALL
N
Data1存入SMALL Data2存入BIG
A, Data2 ;恢复Data1
结束
结束
ACC.7, STEP2 ; Data1为正,大,转STEP2
SMALL, Data1
BIG, 41H
带符号数的比较流程图
【例4-7】散转程序:使用JMP 实现多分支程序转移
L1: JC J2 BIG1 MOV 42H, A
;C=1,则cAj小ne转BIaG,2b, l1
;大l1数:送42jcH
big2
;c=1,则a小
RET
big1: inc dptr
BIG2: XCH A, 41H SJMP BIG1 END
;大数送Amovx @dptr, a ret
big2: xch a, b sjmp big1
• 顺序结构是按照指令在存储器中存放的先后顺序, 从某一条指令开始逐条顺序执行,直至某一条指令 为止。
• 特点:
– 程序中无转移、调用、分支、循环指令; – 程序按编写的先后顺序执行,程序流向不变 – PC自动加1
• 在实际编程中应注意
– 如何正确选择指令、寻址方式和合理使用工作寄存器, 包括数据存储器。
【例4-6】带符号数的比较: XRL指令和JNZ、JB、JNC有机配合
比较内部RAM Data1和Data2单元内以补码形式表示的带符号数,并将大 数存入BIG单元,小数存入SMALL单元,若相等,则建立起标志位F0
Data1 Data2 BIG SMALL COM2:
STEP1:
STEP2:
TEST: STEP3:
;拆字,屏蔽高4位
•
SWAP A
;高、低4位互换
•
INC R1
;指向51H单元
•
XCH A,@R1
;51H单元内容与累加器内容互换
•
ANL A,#0FH
;拆字,取原51H单元的低4位
•
ORL A,@R1
;拼字
•
INC R1
•
MOV @R1,A
;存结果
•
RET
•
END
【例4-1】拆字、拼字程序 将片内RAM 50H单元的低4位取出当作高4位,与
•
;与A的低4位内容互换
•
INC R1
;指向52H单元
•
MOV @R1,A
;存结果
•
RET
•
END
【例4-2】数制转换 将片内RAM 30H单元的无符号二进制数转换成BCD码
数,结果按高低顺序依次存放到33H、32H、31H单元。
•
ORG 0000H
• HEX_D: MOV A, 30H
•
MOV B, #10
ADD_37:ADD A, #37H;大于或等于0AH,则加37H
MOV R2, A ;保存结果
RET
;子程序返回
二、 多重分支程序 程序有两条以上的出路,多选一。
1、多次使用条件转移指令,形成 两个以上判断框。 CJNE指令和JC、JNC有机配合 JB、JNB、JBC JZ、JNZ 开始