文档介绍:授课人:曾孟佳
单片机原理及应用
第6章单片机程序设计
机器语言、汇编语言与高级程序设计语言
汇编语言基本程序设计
汇编语言高级程序设计
机器语言、汇编语言与高级程序设计语言
程序设计概述—设计语言
最早,人们只能用机器语言(二进制)编写程序;
为了方便记忆,人们开始用助记符形式的汇编语言编写程序,称为低级语言。然后再用汇编系统将其翻译成机器语言,该过程称为汇编;
为了用更接近人的语言编写程序,程序设计师们发明了高级语言,如: BASIC、FORTRAN、PASCAL、C、JAVA等, 然后再用编译系统将其翻译成机器语言,该过程称为编译;
由低级或高级语言构成的程序称为源程序;
由机器语言构成的程序称作目标程序。
源程序目标程序
低级语言
机器语言
汇编
高级语言
机器语言
编译
程序设计概述—设计语言
机器语言、汇编语言与高级程序设计语言
汇编语言基本程序设计
顺序程序设计
分支程序设计
循环程序设计
子程序及其调用
查表程序设计
散转程序设计
汇编语言基本程序设计
顺序程序设计
顺序程序是指程序中的指令执行按照指令的位置的顺序来执行的程序。机器执行这类程序时,只需按照指令的先后顺序依次执行,中间不会有任何分支。故顺序程序又被称为无分支程序。顺序程序是构成复杂程序的基础。
顺序程序——
结构特点——按指令的先后顺序依次执行。
汇编语言基本程序设计
顺序程序设计
例 1 两个无符号双字节数相加。
设被加数存放于内部RAM的40H(高位字节), 41H(低位字节), 加数存放于50H(高位字节), 51H(低位字节), 和数存入 40H和41H单元中。
START: CLR C
MOV R0, #41H
MOV R1, #51H
AD1: MOV A, ***@R0
ADD A,***@R1
MOV ***@R0, A
DEC R0
DEC R1
MOV A, ***@R0
ADDC A, ***@R1
MOV ***@R0, A
RET
; 将Cy清零
; 将被加数地址送数据指针R0
; 将加数地址送数据指针R1
; 被加数低字节的内容送入A
; 两个低字节相加
; 低字节的和存入被加数低字节中
; 指向被加数高位字节
; 指向加数高位字节
; 被加数高位字节送入A
; 两个高位字节带Cy相加
; 高位字节的和送被加数高位字节
; 子程序调用返回
汇编语言基本程序设计
顺序程序设计
例2 拼字程序(将不同单元的内容切取有用部分,压缩拼装到一个单元):设外部RAM中的1100H和1101H单元中存放着8位二进制数,取出两个单元中的低半字节合并成一个字节后,存到外部RAM中的1102H单元中去。
ORG 0000H
MOV DPTR, #1100H
MOVX A, ***@DPTR
ANL A, #0FH
SWAP A
MOV R1, A
INC DPTR
MOVX A, ***@DPTR
ANL A, #0FH
ORL A, R1
INC DPTR
MOVX ***@DPTR, A
SJMP $
;取第1个半字节
;移至高4位
;取第2个字节
;取第2个半字节
;拼字
;存放结果
例3 将内部RAM的20H单元中的8位无符号二进制数转换为三位BCD码,并将结果存放在FIRST(百位)和SECOND(十位、个位)两单元中。
汇编语言基本程序设计
顺序程序设计
分析可将被转换数除以100,得百位数;余数再除以10得十位数;最后余数即为个位数。
;取数
;除数100→B
;除100
;百位BCD
;除数10→B
;除10
;十位数送高位
;A为(十位、个位)BCD
;存十位、个位数
FIRST
DATA
22H
SECOND
DATA
21H
ORG
1000H
HBCD:
MOV
A,20H
MOV
B,#64H
DIV
AB
MOV
FIRST, A
MOV
A,B
MOV
B,#0AH
DIV
AB
SWAP
A
ORL
A, B
MOV
SECOND, A
SJMP
$
END
汇编语言基本程序设计
分支程序设计
分支程序是指程序的执行在某些地方没有按照指令的位置的顺序,而是跳过一些指令去执行其他的指令的程序。
分支程序——
特点——
程序中含有转移指令
分为无条件分支程序和条件分支程序
结构形式有两种:单分支结构和多分支结构