欢迎来到天天文库
浏览记录
ID:39306170
大小:639.10 KB
页数:79页
时间:2019-06-30
《C51汇编语言程序的设计与调试》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编程序的设计与调试一、汇编语言程序设计概述二、实用程序设计三、C51介绍程序设计语言1.机器语言(MachineLanguage)这是一种用二进制代码“0”和“1”表示指令和数据的程序设计语言。计算机只能识别二进制代码,这种语言是能被计算机直接识别和执行的机器级语言。特点:机器语言能够被计算机立即识别并加以执行,具有执行速度快、占用内存少等优点。但对于使用者来说,用机器语言编写程序具有编写难、识别难、记忆难、查错难、交流难等缺点。2.汇编语言(AssemblyLanguage)汇编语言是一种用助记符
2、来表示的面向机器的程序设计语言。不同的机器所使用的汇编语言一般是不同的。但计算机的CPU不能直接识别汇编语言,所以计算机不能立即执行汇编语言程序。用汇编语言编写的源程序,在由计算机执行之前,必须将它翻译成机器语言程序。特点:这种语言弥补了机器语言的不足,用汇编语言编写程序比用机器语言方便、直观、易懂、易用、易记。可以编写出结构紧凑、运行时间精确的程序。所以,这种语言非常适合于实时控制的需要。3.高级语言(High-LevelLanguage)高级语言是面向过程并能独立于计算机硬件结构的通用程序设计语言,是一
3、种接近人类语言和数学表达式的计算机语言。比如:BASIC、FORTRAN、COBOL、PASCAL、C语言等。高级语言不能被计算机直接识别和执行,需要用编译程序或解释程序将高级语言编写的源程序翻译为机器语言。特点:它比汇编语言易学、易懂,具有通用性强、易于移植等优点。高级语言的语句功能强,它的一条语句往往相当于许多条指令,因而用于翻译的程序要占用较多的存储空间,而且执行时间长,且不易精确掌握,故在高速实时控制中一般是不适用的。基本概念在目前单片机的开发应用中,经常采用C51语言和汇编语言共同编写程序。要想很
4、好地掌握和应用单片机首先要掌握汇编语言。汇编语言是面向机器的程序设计语言,对于CPU不同的单片机,其汇编语言一般是不同的。用汇编语言编写的程序称为汇编语言源程序。汇编语言源程序是由汇编语言语句构成的。汇编语言语句可分为两大类:指令性语句和指示性语句。指令性语句是由指令组成的由CPU执行的语句,指示性语句是由伪指令组成的,它不被CPU执行,用来告诉汇编程序如何对程序进行汇编的指令;由于它不能生成机器语言,故又被称为伪指令语句。一、汇编语言程序设计概述1.指令性语句格式[标号:]操作码助记符[目的操作数][,源
5、操作数][;注释]每条汇编语句一般由若干部分组成,每一部分称为一个字段。每个字段之间应该严格地用分界符加以分隔。分界符包括冒号、空格符、逗号、分号等。标号段与操作码之间要加冒号“:”;操作码与操作数之间要用空格相隔;各操作数之间要用逗号“,”相隔;操作数与注释段之间要加分号“;”相隔。标号是语句所在地址的标志符号(1)标号后边必须跟以冒号“:”(2)由1-8个ASCII字符组成(3)同一标号在一个程序中只能定义一次(4)不能使用汇编语言已经定义的符号作为标号必须以分号“;”开头,换行书写,但必须注意也要以分
6、号“;”开头。汇编时,注释字段不会产生机器代码。操作字段:(1)十六进制,后缀“H”例:MOVA,#23H二进制,后缀“B”例:MOVA,#01010101B十进制,后缀“D”,也可省略。(2)若十六进制的操作数以字符A-F中的某个开头时,则需在它前面加一个“0”,以便在汇编时把它和字符A-F区别开来。例:MOVA,#0FCH(3)采用工作寄存器和特殊功能寄存器的代号来表示,也可用其地址来表示。例:程序状态子可用PSW表示,也可用D0H来表示(4)美元符号$的使用用于表示该转移指令操作码所在的地址。例如,如
7、下指令:HERE:SJMPHERE可写为:SJMP$2.伪指令的指示性语句格式[标号:]伪操作操作数[,操作数,......][;注释]伪指令不是真正的指令,是在汇编时供汇编程序识别的指令,又称为汇编指令。它不属于指令系统,也无对应的机器码,只是用来对汇编过程进行某种控制。利用伪指令告诉汇编程序如何进行汇编,为编程提供方便。常用伪指令定位伪指令ORG定义字节数据伪指令DB定义字数据伪指令DW定义空间伪指令DS符号定义伪指令EQU或=定义标号伪指令DL数据赋值伪指令DATA数据地址赋值伪指令XDATA汇编结束
8、伪指令END①ORG(Origin)汇编起始指令ORG是程序汇编起始地址定位伪指令,功能:是规定对汇编语言源程序进行汇编时,目的程序在程序存储器中存放的起始地址。格式:[标号:]ORG16位地址或标号注意:在一个源程序中,可多次使用ORG指令,以规定不同程序段的起始位置,地址应从小到大顺序排列,不允许重叠。例如:ORG0000HSTART:SJMPMAIN…ORG0030HMAIN:MOVSP,#30H…②END
此文档下载收益归作者所有