汇编-语言程序设计.pptx
《汇编-语言程序设计.pptx》由会员分享,可在线阅读,更多相关《汇编-语言程序设计.pptx(74页珍藏版)》请在咨信网上搜索。
1、1第第4 4章章 AT89S51AT89S51汇编语汇编语 言程序设计言程序设计12 2第第4章章目录目录4.1汇编语言程序设计概述汇编语言程序设计概述4.1.1单片机编程语言4.1.2汇编语言语句和格式4.1.3伪指令4.2汇编语言源程序的汇编汇编语言源程序的汇编4.2.1手工汇编4.2.2机器汇编34.3AT89S51汇编语言程序设计举例汇编语言程序设计举例4.3.1子程序的设计4.3.2查表程序设计4.3.3关键字查找程序设计4.3.4数据极值查找程序设计4.3.5数据排序程序设计4.3.6分支转移程序设计4.3.7循环程序设计4内容概要内容概要汇编语言能汇编语言能直接控制单片机硬件直接
2、控制单片机硬件的的编程语言编程语言。因此,要求程序设计者要因此,要求程序设计者要 “软、硬结合软、硬结合”。本章介绍汇编语言程序设计的本章介绍汇编语言程序设计的基本知识基本知识,以及一些以及一些基本的基本的程序设计程序设计。4.1汇编语言程序设计概述汇编语言程序设计概述程序是指令的有序集合。程序是指令的有序集合。单片机运行就是执行指令序列的过程。单片机运行就是执行指令序列的过程。编写这一指令序列的过程称为编写这一指令序列的过程称为程序设计。程序设计。54.1.1 4.1.1 单片机编程语言单片机编程语言常用的编程语言是常用的编程语言是汇编语言汇编语言和和高级语言高级语言。1 1汇编语言汇编语言
3、用英文字符来代替机器语言,这些英文字符被称为用英文字符来代替机器语言,这些英文字符被称为助记符汇助记符汇编语言:编语言:用助记符表示的指令。用助记符表示的指令。汇编语言源程序:汇编语言源程序:用汇编语言编写的程序。用汇编语言编写的程序。“汇编汇编”:汇编语言源程序需汇编语言源程序需转换(翻译)转换(翻译)成为二进制代码成为二进制代码表示的机器语言程序,才能识别和执行。表示的机器语言程序,才能识别和执行。完成完成“翻译翻译”的程序称为的程序称为汇编程序汇编程序。经汇编程序。经汇编程序“汇编汇编”得得到的以到的以“0 0”、“1 1”代码形式表示的机器语言程序称为代码形式表示的机器语言程序称为目标
4、目标程序程序。56优点:优点:用汇编语言编写程序效率高,占用存储空间小,运行用汇编语言编写程序效率高,占用存储空间小,运行速度快,能编写出最优化的程序,速度快,能编写出最优化的程序,缺点:缺点:可读性差,离不开具体的硬件,是面向可读性差,离不开具体的硬件,是面向“硬件硬件”的语的语言通用性差。言通用性差。2 2高级语言高级语言不受具体不受具体“硬件硬件”的限制,的限制,优点:优点:通用性强,直观、易懂、通用性强,直观、易懂、易学,可读性好。易学,可读性好。目前多数的目前多数的51单片机用户单片机用户使用使用C语言(语言(C51)来进行程序设来进行程序设计,已公认为高级语言中高效简洁而又贴近计,
5、已公认为高级语言中高效简洁而又贴近51单片机硬件的编单片机硬件的编程语言。程语言。将将C语言向单片机上移植,始于语言向单片机上移植,始于20世纪世纪80年代的中后期。年代的中后期。67经过十几年努力,经过十几年努力,C51C51已成为单片机的实用高级编程语言。已成为单片机的实用高级编程语言。尽管目前已有不少设计人员使用尽管目前已有不少设计人员使用C51C51来进行程序开发,但在来进行程序开发,但在对对程序的程序的空间空间和和时间时间要求较高的场合,汇编语言仍必不可少。要求较高的场合,汇编语言仍必不可少。在这种场合下,可使用在这种场合下,可使用C C语言和汇编语言混合编程。在很多语言和汇编语言混
6、合编程。在很多需要直接控制硬件且对实时性要求较高的场合,则更是非用汇需要直接控制硬件且对实时性要求较高的场合,则更是非用汇编语言不可。编语言不可。掌握汇编语言并能进行程序设计,是学习和掌握单片机程掌握汇编语言并能进行程序设计,是学习和掌握单片机程序设计的序设计的基本功之一基本功之一。4.1.2 4.1.2 汇编语言语句和格式汇编语言语句和格式两种基本语句:两种基本语句:指令语句指令语句和和伪指令语句伪指令语句。78(1 1)指令语句)指令语句已在第已在第3 3章介绍。每一指令语句在汇编时都产生一个指令代码章介绍。每一指令语句在汇编时都产生一个指令代码(机器代码),执行该指令代码对应着机器的一种
7、操作。(机器代码),执行该指令代码对应着机器的一种操作。(2 2)伪指令语句)伪指令语句是控制汇编(翻译)过程的一些是控制汇编(翻译)过程的一些控制命令控制命令。在汇编时。在汇编时没有机器没有机器代码代码与之对应。与之对应。下面介绍指令语句格式。伪指令语句将在下面介绍指令语句格式。伪指令语句将在4.1.34.1.3节介绍。节介绍。9汇编语言语句是符合典型的汇编语言的汇编语言语句是符合典型的汇编语言的四分段四分段格式格式:标号字段标号字段和和操作码字段操作码字段之间要有之间要有冒号冒号“:”分隔;分隔;操作码字段操作码字段和和操作数字段间操作数字段间的分界符是的分界符是空格空格;双操作数双操作数
8、之间用之间用逗号逗号相隔;相隔;操作数字段操作数字段和和注释字段注释字段之间的分界符用之间的分界符用分号分号“;”。任何语句都必须有操作码字段任何语句都必须有操作码字段,其余各段为任选项。,其余各段为任选项。9标号字段标号字段(LABLE)操作码字段操作码字段(OPCODE)操作数字段操作数字段(OPRAND)注释字段注释字段(COMMENT)10【例例4-1】下面是一段程序的下面是一段程序的四分段四分段书写格式。书写格式。标号字段标号字段 操作码字段操作码字段 操作数字段操作数字段 注释字段注释字段START:MOVA,#00H;0AMOVR1,#10;10R1MOVR2,#00000011
9、B;03HR2LOOP:ADDA,R2;(A)+(R2)ADJNZR1,LOOP;R1减减1不为零,则跳不为零,则跳LOOP处处NOPHERE:SJMPHERE上述上述4个字段应该遵守的个字段应该遵守的基本语法规则基本语法规则如下。如下。10111 1标号字段标号字段语句所在地址的标志符号,才能被访问。如标号语句所在地址的标志符号,才能被访问。如标号“STARTSTART”和和“LOOPLOOP”等。有关标号规定如下:等。有关标号规定如下:(1 1)标号后必须跟冒号标号后必须跟冒号“:”。(2 2)标号由标号由1 18 8个个ASCIIASCII码字符组成,第一个字符必须是码字符组成,第一个字
10、符必须是字母。字母。(3 3)同一标号在一个程序中只能定义一次,不能重复定同一标号在一个程序中只能定义一次,不能重复定义。义。(4 4)不能使用汇编语言已经定义的符号作为标号,如指不能使用汇编语言已经定义的符号作为标号,如指令助记符、伪指令以及寄存器的符号名称等。令助记符、伪指令以及寄存器的符号名称等。(5 5)标号的有无,取决于本程序中的其他语句是否访标号的有无,取决于本程序中的其他语句是否访1112问该条语句。如无其他语句访问,则该语句前不需标号。问该条语句。如无其他语句访问,则该语句前不需标号。2 2操作码字段操作码字段操作码字段规定了语句执行的操作,操作码是汇编语言指令中操作码字段规定
11、了语句执行的操作,操作码是汇编语言指令中唯一不能空缺的部分。唯一不能空缺的部分。3 3操作数字段操作数字段指令的操作数或操作数地址。指令的操作数或操作数地址。在本字段中,在本字段中,操作数的个数因指令的不同而不同。操作数的个数因指令的不同而不同。通常有单操通常有单操作数、双操作数和无操作数三种情况。作数、双操作数和无操作数三种情况。如果是多操作数,则操作数之间要以如果是多操作数,则操作数之间要以逗号逗号隔开。隔开。13操作数表示操作数表示时,几种情况需注意:时,几种情况需注意:(1 1)十六进制、二进制和十进制形式的操作数表示)十六进制、二进制和十进制形式的操作数表示多数情况,操作数或操作数地
12、址是采用多数情况,操作数或操作数地址是采用十六进制十六进制形式来表形式来表示的。则需加示的。则需加后缀后缀“H H”。在某些特殊场合用在某些特殊场合用二进制二进制表示,需加表示,需加后缀后缀“B B”若操作数采用若操作数采用十进制十进制形式,则需加形式,则需加后缀后缀“D D”,也可省略。,也可省略。若十六进制若十六进制操作数操作数以以字符字符A AF F开头开头,需在它,需在它前面加一个前面加一个 “0 0”,以便汇编时把它和,以便汇编时把它和字符字符A AF F区别区别开。开。1314(2 2)工作寄存器和特殊功能寄存器的表示)工作寄存器和特殊功能寄存器的表示 当操作数为工作寄存器或特殊功
13、能寄存器时,允许用当操作数为工作寄存器或特殊功能寄存器时,允许用工作寄存器和特殊功能寄存器的工作寄存器和特殊功能寄存器的代号表示代号表示。例如,例如,工作寄存器用工作寄存器用R7R7R0R0,累加器用,累加器用A A(或(或AccAcc)表)表示。另外,工作寄存器和特殊功能寄存器也可用其地址来示。另外,工作寄存器和特殊功能寄存器也可用其地址来表示,如累加器表示,如累加器A A可用其地址可用其地址E0HE0H来表示。来表示。4 4注释字段注释字段用于解释指令或程序的含义,对可读性非常有用。用于解释指令或程序的含义,对可读性非常有用。使用时使用时须以分号开头须以分号开头,长度不限,一行写不下,长度
14、不限,一行写不下可换行可换行书写,但注意也要以分号开头。书写,但注意也要以分号开头。1415 汇编时,遇到汇编时,遇到“;”就停止就停止“翻译翻译”。因此,注释字。因此,注释字段不会产生机器代码。段不会产生机器代码。4.1.3 4.1.3 伪指令伪指令 在汇编语言源程序中应有在汇编语言源程序中应有向汇编程序发出的指示信息向汇编程序发出的指示信息,告诉它如何完成汇编工作,这是通过告诉它如何完成汇编工作,这是通过伪指令伪指令来实现。来实现。伪指令不属于指令系统中的汇编语言指令,它伪指令不属于指令系统中的汇编语言指令,它是程序员是程序员发给汇编程序的发给汇编程序的命令命令,也称为,也称为汇编程序控制
15、命令汇编程序控制命令。只有在汇编前的源程序中才有伪指令。只有在汇编前的源程序中才有伪指令。“伪伪”体现在体现在汇编后,伪指令汇编后,伪指令没有相应的机器代码产生。没有相应的机器代码产生。伪指令具有控制汇编程序的输入伪指令具有控制汇编程序的输入/输出、定义数据和符输出、定义数据和符号、条件汇编、分配存储空间等功能。号、条件汇编、分配存储空间等功能。1516不同汇编语言的伪指令有所不同,但基本内容相同。不同汇编语言的伪指令有所不同,但基本内容相同。介绍介绍常用的伪指令常用的伪指令。1ORG(ORiGin)汇编起始地址命令)汇编起始地址命令源程序的开始,用一条源程序的开始,用一条ORG伪指令规定伪指
16、令规定程序的起始地程序的起始地址址。如果不用如果不用ORG,则汇编得到的目标程序,则汇编得到的目标程序将从将从0000H地地址开始。例如:址开始。例如:ORG2000HSTART:MOVA,#00H即规定标号即规定标号START代表地址为代表地址为2000H开始。开始。在一源程序中,可多次用在一源程序中,可多次用ORG指令,规定不同的程序段的指令,规定不同的程序段的起始地址。但是,起始地址。但是,地址必须由小到大排列,且不能交叉、地址必须由小到大排列,且不能交叉、17重叠。例如:重叠。例如:ORG2000HORG2500HORG3000H这种顺序是正确的。若按下面顺序的排列则是错误的,因为地址
17、出现了交叉。ORG2500HORG2000HORG3000H17182.2.END(END of Assembly)END(END of Assembly)汇编终止命令汇编终止命令源程序源程序结束标志结束标志,终止源程序的汇编工作。终止源程序的汇编工作。整个源程序整个源程序中只能有一条中只能有一条ENDEND命令,且命令,且位于程序的最后位于程序的最后。如果。如果ENDEND出现出现在程序中间,其后的源程序,将不进行汇编处理。在程序中间,其后的源程序,将不进行汇编处理。3 3EQUEQU(EQUateEQUate)标号赋值命令)标号赋值命令用于用于给标号赋值给标号赋值。赋值后,标号值在整个程序
18、有效。赋值后,标号值在整个程序有效。例如:例如:TESTTEST:EQU 2000HEQU 2000H表示表示TEST=2000HTEST=2000H,汇编时,凡是遇到,汇编时,凡是遇到TESTTEST时,均以时,均以2000H2000H来代替。来代替。18194DB(DefineByte)定义数据字节命令)定义数据字节命令用于从指定的地址开始,在程序存储器连续单元中定义用于从指定的地址开始,在程序存储器连续单元中定义字节数据。例如:字节数据。例如:ORG 2000HDB30H,40H,24,C,B汇编后汇编后(2000H)=30H(2001H)=40H(2002H)=18H(十进制数十进制数
19、24)(2003H)=43H(字符字符“C”的的ASCII码码)(2004H)=42H(字符字符“B”的的ASCII码码)1920显然,显然,DB功能是从指定单元开始定义(存储)若干字节,功能是从指定单元开始定义(存储)若干字节,十进制数自然转换成十六进制数,字母按十进制数自然转换成十六进制数,字母按ASCII码存储。码存储。5DW(DefineWord)定义数据字命令)定义数据字命令该命令用于从指定的地址开始,在程序存储器的连续单元中该命令用于从指定的地址开始,在程序存储器的连续单元中定义定义16位的数据字。例如:位的数据字。例如:ORG2000HDW1246H,7BH,10汇编后(2000
20、H)=12H;第1个字(2001H)=46H(2002H)=00H;第2个字21(2003H)=7BH(2004H)=00H;第;第3个字个字(2005H)=0AH6DS(DefineStorage)定义存储区命令)定义存储区命令从指定地址开始,保留指定数目的字节单元作为存储区,从指定地址开始,保留指定数目的字节单元作为存储区,供程序运行使用。供程序运行使用。例如:例如:TABEL:DS10表示从表示从TABEL代表的地址开始,保留代表的地址开始,保留10个连续的地址单个连续的地址单元。元。又例如又例如:ORG2000HDS10H表示从表示从2000H地址开始,保留地址开始,保留16个连续地址
21、单元。个连续地址单元。2122注意:注意:DBDB、DWDW和和DSDS命令命令只能对程序存储器有效,只能对程序存储器有效,不能对不能对数据存储器数据存储器使用。使用。7 7BIT BIT 位定义命令位定义命令用于给字符名称赋以位地址,位地址可以是绝对位地用于给字符名称赋以位地址,位地址可以是绝对位地址,也可是符号地址。例如:址,也可是符号地址。例如:QAQABIT P1.6BIT P1.6功能是把功能是把P1.6P1.6的位地址赋给变量的位地址赋给变量QAQA。4.2 4.2 汇编语言源程序的汇编汇编语言源程序的汇编“汇编汇编”?汇编可分为?汇编可分为手工汇编手工汇编和和机器汇编机器汇编两类
22、。两类。22234.2.1 4.2.1 手工汇编手工汇编 通过查指令的通过查指令的机器代码表(表机器代码表(表3-23-2),),逐个把助记符指令逐个把助记符指令“翻译翻译”成机器代码,再进行调试和运行。成机器代码,再进行调试和运行。手工汇编手工汇编遇到相对转移偏移量的计算时,较麻烦,易出遇到相对转移偏移量的计算时,较麻烦,易出错,只有小程序或受条件限制时才使用。实际中,多采用错,只有小程序或受条件限制时才使用。实际中,多采用“汇汇编程序编程序”来自动完成汇编。来自动完成汇编。23244.2.2 4.2.2 机器汇编机器汇编 用微型计算机上的用微型计算机上的软件软件(汇编程序汇编程序)来代替手
23、工汇编。在微来代替手工汇编。在微机上用编辑软件进行源程序编辑,然后生成一个机上用编辑软件进行源程序编辑,然后生成一个ASCIIASCII码文件,码文件,扩展名为扩展名为 “.ASM.ASM”。在微机上运行汇编程序,译成机器码。在微机上运行汇编程序,译成机器码。机器码通过微机的串口(或并口)传送到用户样机(或在机器码通过微机的串口(或并口)传送到用户样机(或在线仿真器),进行程序的调试和运行。线仿真器),进行程序的调试和运行。有时,在分析某些产品的程序的机器代码时,有时,在分析某些产品的程序的机器代码时,需将需将机器代机器代码码翻译成翻译成汇编语言源程序汇编语言源程序,称为,称为“反汇编反汇编”
24、。2425【例例4-2】表4-1是一段源程序的汇编结果,可查表3-2,手工汇编,来验证下面的汇编结果是否正确。机器码从1000H单元开始存放。25264.3 AT89S514.3 AT89S51汇编语言程序设计举例汇编语言程序设计举例 介绍常用的汇编语言程序的设计。介绍常用的汇编语言程序的设计。4.3.1 4.3.1 子程序的设计子程序的设计 将那些需多次应用的、完成相同的某种基本运算或操作将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,的程序段从整个程序中独立出来,单独编成一个程序段,需要时进行调用。这样的程序段称为需要时进行调用。这样的程序
25、段称为子程序子程序。优点:优点:采用子程序可使程序结构简单,缩短程序的设计采用子程序可使程序结构简单,缩短程序的设计时间,减少占用的程序存储空间。时间,减少占用的程序存储空间。子程序在程序设计中非常重要,读者应熟练掌握子程序子程序在程序设计中非常重要,读者应熟练掌握子程序的设计方法。的设计方法。26271 1子程序的设计原则和应注意的问题子程序的设计原则和应注意的问题编写子程序应注意以下问题:编写子程序应注意以下问题:(1 1)子程序的入口地址,前必须有标号。)子程序的入口地址,前必须有标号。(2 2)主程序调用子程序,是通过调用指令来实现。有)主程序调用子程序,是通过调用指令来实现。有两条两
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 语言程序设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。