当前位置:文档之家› 第四章 汇编语言程序设计知识

第四章 汇编语言程序设计知识

50H 51H 52H
高字节 低字节
53H 54H 55H
R1→55H
低字节 中字节 高字节 低字节 中字节

高字节
低字节
00H CY
50H 51H 52H
54H 53H R0→ 52H 51H 50H 20H
加数
被加数 和
高字节
...
00H
CY
24
2013-8-7
南京航空航天大学金城学院
程序:
MOV MOV MOV MOV
2013-8-7 南京航空航天大学金城学院 23
第4章 汇编语言程序设计知识
例: 三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H 单元中;加数在内部RAM的53H、54H和55H单元中;要求把相加 之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H 位中。
内部RAM
2013-8-7
压缩式BCD码分解成为单字节BCD码。 R0,#40H ;设指针 片内 RAM A,@R0 ;取一个字节 42H 0 十 R2,A ;暂存 41H 0 个 A,#0FH ;高半字节清0 40H 十 个 R0 @R0,A ;保存数据个位 A,R2 A ;十位换到低半字节 A,#0FH R0 @R0,A ;保存数据十位
2013-8-7 南京航空航天大学金城学院 5
第4章 汇编语言程序设计知识
4.1
编程的步骤、方法和技巧
编程的步骤 编程的方法和技巧 汇编语言程序的基本结构
4.1.1 4.1.2 4.1.3
2013-8-7
南京航空航天大学金城学院
6
第4章 汇编语言程序设计知识
4.1.1
编程的步骤
• 一、分析问题 • 二、确定算法 • 三、画程序流程图 • 四、编写程序
〔标号:〕〔操作码〕〔操作数〕;〔注释〕 • 每个字段之间要用分隔符分隔,而每个字段内 部不能使用分隔符。可以用作分隔符的符号: 空格“ ”、冒号“:”、逗号“,”、分号 “;”等。 例:LOOP:MOV A,#00H;立即数00H→A
2013-8-7
南京航空航天大学金城学院
12
第4章 汇编语言程序设计知识
;被加数的低字节地址 ;加数的低字节地址
;低字节相加 ;存低字节相加结果
;中间字节带进位相加 ;存中间字节相加结果
;高字节带进位相加 ;存高字节相加结果
;存放进位的单元地址 ;进位送00H位保存
第4章 汇编语言程序设计知识
例: MOV MOV MOV ANL INC MOV MOV SWAP ANL INC MOV
第4章 汇编语言程序设计知识
第四章 汇编语言程序设计及知识
4.1 编程的步骤、方法和技巧 4.2 汇编语言源程序的编辑和汇编
2013-8-7
南京航空航天大学金城学院
1
第4章 汇编语言程序设计知识
计算机语言的发展
机器语言
高级语言
FORTRAN
BASIC COBOL PASCAL
汇编语言
C/C++
JAVA
R0,#20H @R0,A C,ACC.0 00H,C
MOV MOV MOV ADD MOV DEC DEC MOV ADDC MOV DEC DEC MOV ADDC MOV CLR ADDC MOV MOV
R0,#52H R1,#55H A,@R0 A,@R1 @R0,A R0 R1 A,@R0 A,@R1 @R0,A R0 R1 A,@R0 A,@R1 @R0,A A A,#00H R0,#00H @R0,A
明程序设计过程的一种直观的表示。
• 流程图步骤分得越细致,编写程序是也越方便。 • 画流程图是程序结构设计采用的一种重要手段。 • 一个系统软件有总的流程图(主程序框图)和局部的 流程图。 • 流程图常采用的图形和符号。
2013-8-7 南京航空航天大学金城学院 10
第4章 汇编语言程序设计知识
椭圆框
2013-8-7 南京航空航天大学金城学院 21
第4章 汇编语言程序设计知识
4.1.3
汇编语言程序的基本结构
一、顺序程序 二、分支程序 三、循环程序
2013-8-7
南京航空航天大学金城学院
22
第4章 汇编语言程序设计知识
一、顺序程序
• 顺序程序是最简单的程序结构,即顺序结构。 • 程序按顺序一条一条地执行指令。
或桶形框
:表示程序的开始或结束。
矩形框
菱形框
:表示要进行的工作。
:表示要判断的事情,菱形框内 的表达式表示要判断的内容。
圆圈 指向线
2013-8-7
:表示连接点 :表示程序的流向
南京航空航天大学金城学院 11
第4章 汇编语言程序设计知识
四、编写程序
• 用89C51汇编语言编写的源程序行(一条 语句)包括四个部分,也叫四个字段:
一、模块化的程序设计方法 二、编程技巧
2013-8-7
南京航空航天大学金城学院
17
第4章 汇编语言程序设计知识
一、模块化的程序设计方法
1、程序功能模块化的优点 2、划分模块的原则
2013-8-7
南京航空航天大学金城学院
18
第4章 汇编语言程序设计知识
1、程序功能模块化的优点
• 单个模块结构的程序功能单一,易于编写、调 试和修改。 • 便于分工,从而可使多个程序员同时进行程序 的编写和调试工作,加快软件研制进度。 • 程序可读性好,便于功能扩充和版本升级。 • 对程序的修改可局部进行,其它部分可以保持 不变。 • 对于使用频繁的子程序可以建立子程序库,便 于多个模块调用。
2013-8-7 南京航空航天大学金城学院 4
第4章 汇编语言程序设计知识
为什么书写源程序时必须在某些数 据或地址前面多添一个“前导”0, 否则汇编就通不过?
• 由于部分十六进制数是用数字和字母来表示的, 而程序内的标号也常用字母表示。为了将文字和 数字区分开,几乎所有的汇编语言都规定,凡是 以字母打头的数据量,应当在前面添加一个数字 “0”。至于直接地址量,它也是数据量的一种, 前面也应该添加数字“0”。例如: • MOV A,#0FFH ;字母开头的数据量 • MOV A,0D0H ;字母开头的地址量
2013-8-7 南京航空航天大学金城学院 7
第4章 汇编语言程序设计知识
一、分析问题
• 对需要解决的问题进行分析,以求对问 题有正确的理解。如:
– 解决问题的任务是什么? – 工作过程? – 现有的条件,已知数据,对运算的精度和速 度方面的要求? – 设计的硬件结构是否方便编程?
2013-8-7
2013-8-7 南京航空航天大学金城学院 13
第4章 汇编语言程序设计知识
操作码
• 操作码是必不可少的。 • 它用一组字母符号表示指令的操作码。 在89C51中,由89C51的指令助记符组 成。
2013-8-7
南京航空航天大学金城学院
14
第4章 汇编语言程序设计知识
操作数
• • • • • • 汇编语言指令可能要求或不要求操作数 若有两个操作数,操作数之间用逗号“,”分开。 操作数包括的内容有: (1)工作寄存器:由PSW.3和PSW.4规定的当前工作寄存 器区中的R0~R7。 (2)特殊功能寄存器:21个SFR的名字。 (3)标号名:赋值标号—由汇编指令EQU等赋值的标号; 指令标号—指令标号指示的指令的第一字节地址是该标号的 值。 (4)常数:可用二进制(B)、十进制、十六进制(H), 若常数以字符开头,前面加0。 (5)$:用来表示程序计数器的当前值。 (6)表达式:汇编时,计算出表达式的值填入目标码。
转向n-1分支
转向n分支
2013-8-7
南京航空航天大学金城学院
29
第4章 汇编语言程序设计知识 例: 128种分支转移程序。 功能:根据入口条件转移到128个目的地址。 入口:(R3)=转移目的地址的序号00H~7FH。 出口:转移到相应子程序入口。
JMP_128:MOV RL MOV JMP JMPTAB:AJMP AJMP ┇ AJMP A,R3 A DPTR,#JMPTAB @A+DPTR ROUT00 ROUT01 ┇ ROUT7F
• 模块长度适中。20条~100条的范围较合适。
2013-8-7 南京航空航天大学金城学院 20
第4章 汇编语言程序设计知识
二、编程技巧
1、尽量采用循环结构和子程序。
2、尽量少用无条件转移指令。 3、对于通用的子程序,考虑到其通用性,除了用于 存放子程序入口参数的寄存器外,子程序中用到 的其他寄存器的内容应压入堆栈(返回前再弹 出),即保护现场。 4、在中断处理程序中,除了要保护处理程序中用到 的寄存器外,还要保护标志寄存器。 5、用累加器传递入口参数或返回参数比较方便,在 子程序中,一般不必把累加器内容压入堆栈。
南京航空航天大学金城学院 26
第4章 汇编语言程序设计知识
二、分支程序
• 程序分支是通过条件转移指令实现的,即根据 条件对程序的执行进行判断、满足条件则进行 程序转移,不满足条件就顺序执行程序。
• 分支程序又分为单分支和多分支结构。
• 多分支程序是首先把分支程序按序号排列,然
后按序号值进行转移。
2013-8-7
Hale Waihona Puke 标号• 标号是用户定义的符号地址。 • 一条指令的标号是该条指令的符号名字,标号 的值是汇编这条指令时指令的地址。 • 标号由以英文字母开始的1~8个字母或数字组 成,以冒号“:”结尾。 • 标号可以由赋值伪指令赋值,如果没有赋值, 汇编程序把存放该指令目标码第一字节的存储 单元的地址赋给该标号,所以,标号又叫指令 标号。
南京航空航天大学金城学院
27
相关主题