【单片机课程设计】第04章 汇编语言程序设计.ppt
《【单片机课程设计】第04章 汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《【单片机课程设计】第04章 汇编语言程序设计.ppt(66页珍藏版)》请在文库网上搜索。
1、 算术运算程序设计算术运算程序设计汇编语言程序的结构汇编语言程序的结构汇编语言概述汇编语言概述第4章 汇编语言程序设计 非数值操作程序设计非数值操作程序设计第4章 汇编语言程序设计第一节 汇编语言概述4.14.1汇编语言概述汇编语言概述汇编语言是面向机器硬件的语言,要求程序汇编语言是面向机器硬件的语言,要求程序设计者对设计者对MCS-51MCS-51单片机具有很好的单片机具有很好的“软,硬软,硬结合结合”的功底。的功底。第4章 汇编语言程序设计1.汇编语言与汇编的概念汇编语言与汇编的概念1.1.机器语言机器语言 (machine languagemachine language)2.2.汇编语
2、言汇编语言 (assembly languageassembly language)由助记符、保留字和伪指令等组成,容由助记符、保留字和伪指令等组成,容易被人们识别、记忆和读写,也称为符号易被人们识别、记忆和读写,也称为符号语言或汇编语言。将汇编语言程序转换成语言或汇编语言。将汇编语言程序转换成为二进制代码表示的机器语言程序称为汇为二进制代码表示的机器语言程序称为汇编程序。经汇编程序编程序。经汇编程序“汇编汇编(翻译翻译)”)”得到得到的机器语言程序称为目标程序,原来的汇的机器语言程序称为目标程序,原来的汇编语言程序称为源程序。编语言程序称为源程序。3.3.高级语言高级语言 (high-lev
3、el language)(high-level language)第一节 汇编语言概述第4章 汇编语言程序设计2.汇编语言源程序的格式汇编语言源程序的格式 采用汇编语言编写的程序称为汇编语采用汇编语言编写的程序称为汇编语言源程序。程序不能被计算机直接识别和言源程序。程序不能被计算机直接识别和执行,需人工或机器翻译成机器语言才能执行,需人工或机器翻译成机器语言才能被计算机执行。为了使机器能识别和正确被计算机执行。为了使机器能识别和正确汇编,用户在程序设计时必须严格遵循汇汇编,用户在程序设计时必须严格遵循汇编语言格式和语法规则,才能编写符合要编语言格式和语法规则,才能编写符合要求的汇编语言源程序。
4、求的汇编语言源程序。对MCS-51来说,汇编语言源程序有两种基本类型:指令语句和伪指令语句指令语句和伪指令语句。第一节 汇编语言概述第4章 汇编语言程序设计(1)指令语句)指令语句已在第已在第3 3章介绍每一条指令语句在汇编时都产章介绍每一条指令语句在汇编时都产生一个指令代码生一个指令代码机器代码。机器代码。(2)伪指令语句)伪指令语句是为汇编服务的,在汇编时没有机器代码与之是为汇编服务的,在汇编时没有机器代码与之对应。对应。第一节 汇编语言概述第4章 汇编语言程序设计(3 3)MCS-51MCS-51的汇编语言中每条语句典型的四分段格式的汇编语言中每条语句典型的四分段格式 标号字段:标号字段
5、:操作码字段操作码字段 ,操作数字段,操作数字段 ;注释字段;注释字段规则:规则:标号字段和操作字码段之间要有冒号标号字段和操作字码段之间要有冒号“:”相隔;相隔;2)2)操作码字段和操作数字段间的分界符是空格;操作码字段和操作数字段间的分界符是空格;3)3)双操作数之间用逗号相隔;双操作数之间用逗号相隔;4)4)操作数字段和注释字段之间的分界符用分号操作数字段和注释字段之间的分界符用分号“;”相隔。相隔。操作码字段为必选项操作码字段为必选项,其余各段为任选项。其余各段为任选项。第一节 汇编语言概述第4章 汇编语言程序设计(3 3)MCS-51MCS-51的汇编语言中每条语句典型的四分段格式的
6、汇编语言中每条语句典型的四分段格式 例:例:ORG 0080HORG 0080H START START:MOV AMOV A,#00H#00H;0A0A MOV R1 MOV R1,#0AH#0AH;10R110R1 MOV R2 MOV R2,#00000011B#00000011B;3R23R2 LOOP LOOP:ADD AADD A,R2 R2;A+R2AA+R2A DJNZ R1 DJNZ R1,LOOPLOOP;R1R1内容减内容减1 1不为零,则循环不为零,则循环 NOPNOP HERE HERE:SJMP HERESJMP HERE END END程序共由程序共由9 9条语句
7、组成,第条语句组成,第1 1、9 9两条是指示性语句两条是指示性语句(伪指令),其余为指令性语句。第(伪指令),其余为指令性语句。第2 2、5 5两条是四两条是四分段齐全的语句,第分段齐全的语句,第3 3、4 4、6 6、7 7等四条是缺省标号等四条是缺省标号段的语句,第段的语句,第7 7、9 9两条只有操作码字段。两条只有操作码字段。第一节 汇编语言概述第4章 汇编语言程序设计(4 4)基本语法规则)基本语法规则 1)1)标号字段标号字段 位于一条语句的开头,是语句位于一条语句的开头,是语句所在内存单元地址的标志符号。所在内存单元地址的标志符号。(1)(1)标号后边必须跟以冒号标号后边必须跟
8、以冒号“:”;(2)(2)由由1 18 8个个ASCIIASCII字符组成字符组成(3)(3)同一标号在一个程序中只能定义一次同一标号在一个程序中只能定义一次 (4)(4)不能使用汇编语言已经定义的符号作为标不能使用汇编语言已经定义的符号作为标号号第一节 汇编语言概述第4章 汇编语言程序设计(4 4)基本语法规则)基本语法规则 2)2)操作码字段操作码字段 是指令的保留字(如上述程序是指令的保留字(如上述程序中的中的MOVMOV、ADDADD和和NOPNOP等),也可以是伪指令和等),也可以是伪指令和宏指令的助记符宏指令的助记符(如如ORGORG和和END)END)。汇编语言指令。汇编语言指令
9、中唯一不能空缺的部分,汇编程序就是根据这中唯一不能空缺的部分,汇编程序就是根据这一字段来生成机器代码的。一字段来生成机器代码的。第一节 汇编语言概述第4章 汇编语言程序设计(4 4)基本语法规则)基本语法规则 3)3)操作数字段操作数字段 用于存放指令的操作数或操作数用于存放指令的操作数或操作数地址,可以采用字母和数字等形式。通常有单操地址,可以采用字母和数字等形式。通常有单操作数,双操作数和无操作数三种情况。如果是双作数,双操作数和无操作数三种情况。如果是双操作数,则操作数之间,要以逗号隔开。操作数,则操作数之间,要以逗号隔开。(1)(1)十六进制、二进制和十进制形式的操作数表示十六进制、二
10、进制和十进制形式的操作数表示 。(2)(2)工作寄存器和特殊功能寄存器的表示。工作寄存器和特殊功能寄存器的表示。采用工采用工作寄存器和特殊功能寄存器的代号来表示,也可用其作寄存器和特殊功能寄存器的代号来表示,也可用其地址来表示。地址来表示。(3)(3)采用符号采用符号$。美元符号美元符号$常在转移类指令的操作常在转移类指令的操作数字段中使用数字段中使用 用于表示该转移指令操作码所在的存用于表示该转移指令操作码所在的存储单元地址。储单元地址。4 4)注释字段)注释字段 第一节 汇编语言概述第4章 汇编语言程序设计3.伪指令伪指令 指示性语句又称伪指令,简称伪指令。指示性语句又称伪指令,简称伪指令
11、。每种汇编语言都有自己的伪指令,伪每种汇编语言都有自己的伪指令,伪指令和指令是完全不同的,伪指令不是真指令和指令是完全不同的,伪指令不是真正的指令。是用来对汇编语言过程进行某正的指令。是用来对汇编语言过程进行某种控制,或者对符号和标号进行赋值等,种控制,或者对符号和标号进行赋值等,也称为汇编程序控制命令。只有在汇编前也称为汇编程序控制命令。只有在汇编前的源程序中才有伪指令,经过汇编得到目的源程序中才有伪指令,经过汇编得到目标程序标程序(机器代码机器代码),伪指令没有相应的机,伪指令没有相应的机器代码产生。器代码产生。第一节 汇编语言概述第4章 汇编语言程序设计(1 1)汇编起始地址伪指令汇编起
12、始地址伪指令ORG(ORiGin)指令格式:指令格式:ORG 16ORG 16位地址或标号;规定下面的目标程位地址或标号;规定下面的目标程序的起始地址序的起始地址常用于汇编语言源程序或数据块的开头,用一条常用于汇编语言源程序或数据块的开头,用一条ORGORG伪指伪指令来实现规定程序的起始地址。在一个源程序中,可以令来实现规定程序的起始地址。在一个源程序中,可以多次使用多次使用ORGORG指令,用来规定不同程序段的起始地址。但,指令,用来规定不同程序段的起始地址。但,规定的地址必须是从小到大,不容许各程序段之间地址规定的地址必须是从小到大,不容许各程序段之间地址重叠。一个源程序如不用重叠。一个源
13、程序如不用ORGORG规定,则汇编得到的目标程规定,则汇编得到的目标程序将从序将从0000H0000H开始。开始。例:例:ORG 3000HORG 3000HSTARTSTART:MOV AMOV A,#12H#12H;规定标号;规定标号STARTSTART代表地址为代表地址为3000H3000H开始存放。开始存放。第一节 汇编语言概述第4章 汇编语言程序设计(2 2)汇编结束伪指令汇编结束伪指令END(END of assembly)END(END of assembly)指令格式:指令格式:END END ;END END 标号标号 ;ENDEND指令是汇编语言源程序的结束标志,用于指令是
14、汇编语言源程序的结束标志,用于终止源程序的汇编工作。一个源程序只能有一终止源程序的汇编工作。一个源程序只能有一个个ENDEND命令,且位于程序的最后,在命令,且位于程序的最后,在ENDEND以后写以后写的指令,汇编程序都不给予处理。的指令,汇编程序都不给予处理。第一节 汇编语言概述第4章 汇编语言程序设计(3 3)定义字节命令)定义字节命令DB(DefineDB(Define Byte)Byte)指令格式:指令格式:标号:标号:DB DB 八位二进制数表八位二进制数表 ;从标号指定的地址单元开始,定义若干个;从标号指定的地址单元开始,定义若干个8 8位内存单元的内容。位内存单元的内容。例:例:
15、ORG 3000HORG 3000HTABLTABL:DB 30HDB 30H,31H31H,32H32H,33H33H,34H 34H;0 04 4的的ASCIIASCII码码汇编后:汇编后:3000H=30H3000H=30H,3001H=31H 3001H=31H,3002H=32H3002H=32H,3003H=33H3003H=33H,3004H=34H3004H=34H。第一节 汇编语言概述第4章 汇编语言程序设计(4 4)定义数据字命令)定义数据字命令DW(Define Word)DW(Define Word)指令格式:指令格式:标号:标号:DW DW 十六位二进制数表十六位二进
16、制数表 ;从标号指定的地址单元开始,定义若干个;从标号指定的地址单元开始,定义若干个1616位数位数据。一个据。一个1616位数占据两个内存单元,其中,高位数占据两个内存单元,其中,高8 8位位存入低地址字节,低存入低地址字节,低8 8位存入高地址字节。位存入高地址字节。例:例:ORG 3010HORG 3010HTABTAB:DW 1234HDW 1234H,5678H5678H,2010H2010H汇编后从汇编后从3010H3010H开始连续开始连续6 6个存储单元的内容为:个存储单元的内容为:3010H=12H 3010H=12H,3011H=34H 3011H=34H,3012H=56
17、H 3012H=56H,3013H=78H 3013H=78H,3014H=20H 3014H=20H,3015H=10H3015H=10H。第一节 汇编语言概述第4章 汇编语言程序设计(5 5)赋值命令赋值命令EQU(EQUateEQU(EQUate)指令格式:变量名称指令格式:变量名称 EQU EQU 数或汇编符号;将一个数或汇编符号;将一个数或者特定的汇编符号赋予规定的变量名称。数或者特定的汇编符号赋予规定的变量名称。“变量名称变量名称”不是标号,不能用不是标号,不能用“:”来做分来做分隔符。用隔符。用EQUEQU赋值以后的变量可以用做数据地址、赋值以后的变量可以用做数据地址、代码地址、
18、位地址或者单做一个立即数来用。变量代码地址、位地址或者单做一个立即数来用。变量需赋值以后方可以使用,不能先使用后赋值。同时,需赋值以后方可以使用,不能先使用后赋值。同时,变量名称不能和汇编语言关键字同名。变量名称不能和汇编语言关键字同名。例:例:TEST EQU 2010H TEST EQU 2010H 表示标号表示标号TEST=2010HTEST=2010H,在汇编时,凡是遇到标号,在汇编时,凡是遇到标号TESTTEST时,均以时,均以2010H2010H来代替。来代替。第一节 汇编语言概述第4章 汇编语言程序设计4.源程序的汇编源程序的汇编汇编语言源程序汇编语言源程序“翻译翻译”成机器代码
19、成机器代码(指指令代码令代码)的过程称为的过程称为“汇编汇编”。汇编可分为。汇编可分为手工汇编和机器汇编两类:手工汇编和机器汇编两类:(1 1)手工汇编)手工汇编人工查表翻译指令。但遇到的相对转移指令的偏移人工查表翻译指令。但遇到的相对转移指令的偏移量的计算,要根据转移的目标地址计算偏移量,不量的计算,要根据转移的目标地址计算偏移量,不但麻烦,且容易出错。两次汇编过程。但麻烦,且容易出错。两次汇编过程。第一次汇编:确定地址,翻译成各条机器码,字符第一次汇编:确定地址,翻译成各条机器码,字符标号原样写出;标号原样写出;第二次汇编:标号代真,将字符标号用所计算出的第二次汇编:标号代真,将字符标号用
20、所计算出的具体地址值或偏移量代换。具体地址值或偏移量代换。第一节 汇编语言概述第4章 汇编语言程序设计(2 2)机器汇编)机器汇编 用编辑软件进行源程序的编辑。编辑完成后,生用编辑软件进行源程序的编辑。编辑完成后,生成一个成一个ASCIIASCII码文件,扩展名为码文件,扩展名为“.ASM”.ASM”。然后在。然后在微计算机上运行汇编程序,把汇编语言源程序翻译微计算机上运行汇编程序,把汇编语言源程序翻译成机器代码。两次扫描过程。成机器代码。两次扫描过程。第一次扫描:检查语法错误,确定符号名字;建立第一次扫描:检查语法错误,确定符号名字;建立使用的全部符号名字表;每一符号名字后跟一对应使用的全部
21、符号名字表;每一符号名字后跟一对应值(地址或数)。值(地址或数)。第二次扫描:是在第一次扫描基础上,将符号地址第二次扫描:是在第一次扫描基础上,将符号地址转换成地址(代真);利用操作码表将助记符转换转换成地址(代真);利用操作码表将助记符转换成相应的目标码。成相应的目标码。第一节 汇编语言概述第4章 汇编语言程序设计第二节 汇编语言程序的结构4.24.2汇编语言程序的结构汇编语言程序的结构1.1.汇编语言程序设计步骤汇编语言程序设计步骤汇编语言设计一个程序大致上可分为以下几汇编语言设计一个程序大致上可分为以下几个步骤。个步骤。1)1)分析题意,明确要求。解决问题之分析题意,明确要求。解决问题之
22、前,首先要明确所要解决的问题和要达到的前,首先要明确所要解决的问题和要达到的目的、技术指标等。目的、技术指标等。2)2)确定算法。根据实际问题的要求、确定算法。根据实际问题的要求、给出的条件及特点,找出规律性,最后确定给出的条件及特点,找出规律性,最后确定所采用的计算公式和计算方法,这就是一般所采用的计算公式和计算方法,这就是一般所说的算法。算法是进行程序设计的依据,所说的算法。算法是进行程序设计的依据,它决定了程序的正确性和程序的指令。它决定了程序的正确性和程序的指令。第4章 汇编语言程序设计1.1.汇编语言程序设计步骤汇编语言程序设计步骤3)3)画程序流程图,用图解来描述和说明解画程序流程
23、图,用图解来描述和说明解题步骤。题步骤。4)4)分配内存工作单元,确定程序与数据区分配内存工作单元,确定程序与数据区的存放地址。的存放地址。5)5)编写源程序。编写源程序。6)6)程序优化。程序优化。7)7)上机调试、修改和最后确定源程序。上机调试、修改和最后确定源程序。第二节 汇编语言程序的结构第4章 汇编语言程序设计2.2.顺序程序结构顺序程序结构顺序结构程序是一种最简单、最基本的程序顺序结构程序是一种最简单、最基本的程序 (也称为简单程序也称为简单程序 ),它是一种无分支的直,它是一种无分支的直线形程序,按照程序编写的顺序依次执行。线形程序,按照程序编写的顺序依次执行。第二节 汇编语言程
24、序的结构例:编写程序,将外部例:编写程序,将外部RAMRAM单元中单元中40H40H单元单元2 2位位BCDBCD数转换成数转换成ASCIIASCII码,送到内部码,送到内部RAMRAM单元单元60H 60H 61H61H之中。之中。解:根据解:根据ASCIIASCII字符表,十进制数字符表,十进制数0 0 9 9的的ASCIIASCII码和它码和它的的BCDBCD码之间仅相差码之间仅相差30H30H,本题需要把一个字节的两,本题需要把一个字节的两位位BCDBCD数进行拆分,然后分别和数进行拆分,然后分别和30H30H相加,即得到相相加,即得到相应的应的ASCIIASCII码。程序如下:码。程
25、序如下:第4章 汇编语言程序设计2.2.顺序程序结构顺序程序结构第二节 汇编语言程序的结构 ORG 0000H ORG 0000H ADDR1 DATA 0040HADDR1 DATA 0040HADDR2 EQUADDR2 EQUMOV DPTRMOV DPTR,#ADDR1#ADDR1;源地址;源地址 =DPTR=DPTRMOV R0MOV R0,#ADDR2#ADDR2;目标地址;目标地址 =R0 =R0 MOV MOV R0R0,#00H#00H;目标地址单元清零;目标地址单元清零MOVX AMOVX A,DPTRDPTR;源地址单元中;源地址单元中BCDBCD数送数送A AMOV B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 【单片机课程设计】第04章 汇编语言程序设计 单片机 课程设计 04 汇编语言 程序设计