资源描述:
《第5章汇编语言基本语法.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第5章汇编语言的基本语法本章主要内容1.汇编语言的主要特点2.汇编语言源程序的基本结构3.汇编语言的表达式和伪操作符4.汇编语言程序的上机过程AssembleLanguage一种面向机器的程序设计语言,是一种用符号表示的低级程序设计语言(机器语言的符号化描述),通常是为特定计算机或计算机系列专门设计的。AssembleLanguage用汇编语言编写的程序不能由机器直接执行,而必须经汇编程序翻译成机器语言程序。汇编语言指令与翻译成的机器语言指令之间基本是一一对应的关系。汇编过程示意:采用汇编语言进行程序设计的优点:可充分利用机器的硬件功能和结构特点,加快程序的执行速度,减少目标程
2、序所占用的存储空间。常用来编写实时控制程序、实时通信程序,有时也用来编制某些系统软件程序。缺点:1.编程效率低(与人们描述计算过程的需要差距大);2.与机器硬件的具体结构联系过于紧密——在一种结构的机器上开发的程序极难移植到另一种不同结构的机器上去。示例程序DATASEGMENT;数据段NUMDW0011101000000111BNOTESDB‘Theresultis:’,’$’DATAENDSCODESEGMENT;代码段ASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AXMOVDX,OFFSETNOTES;显示提示信息MOVAH,9HI
3、NT21HMOVBX,NUM;将数装入BXMOVCH,4;CH作循环计数器示例程序(续)ROTATE:DISPLAY:MOVCL,4;CL中放移位位数MOVDL,AL;显示16进制数ROLBX,CLMOVAH,2MOVAL,BLINT21HANDAL,0FH;AL中为一位16进制数DECCHADDAL,30H;转换为ASCII码值JNZROTATECMPAL,’9’;是0~9的数码?MOVAX,4C00H;返回DOSJLEDISPLAYINT21HADDAL,07H;在A~F之间CODEENDS;代码段结束ENDBEGIN;模块结束堆栈段定义格式STACKSEGMENTSTAC
4、KSTADB50DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,TOP:CODEENDSENDSTART5.1.2汇编语言源程序的组成1.伪指令语句和指令语句汇编语言源程序中除了包含机器指令外,还应包含说明性的“指令”。这些说明性的“指令”是面向汇编程序和连接程序的,称为伪指令(Directives)。宏汇编程序5.0版(MASMV5.0)规定,汇编语言源程序的每行只能写一个语句:指令语句
5、或伪指令语句。行长不能超过128个字符。每个语句最多可由四个字段组成:名字字段、操作字段、操作数字段和注释字段。伪指令语句是说明性语句,其格式为:[名字]伪指令说明符[参数表达式1[,参数表达式2[,……]]][;注释]其中,伪指令说明符(伪指令名)是伪指令语句中不可缺少的主体,其余部分(方括号中的内容)有时可省略。名字可为段名、过程名、变量名、符号名(或常量名)、宏名、结构名、记录名等。例:ADB20H,30H;注释指令语句是可执行语句,其格式为:[名字:]指令操作助记符[操作数表达式1[,操作数表达式2]][;注释]其中,指令操作助记符(指令名)是指令语句中不可缺少的主体,
6、其余部分(方括号中的内容)有时可省略。名字只能是标号。注释以分号开头,分号右边的内容将被汇编程序忽略。例L:ADDAX,BX;注释汇编程序负责计算伪指令语句中表达式的值,解释伪指令语句的含义并遵照“执行”,但并不产生机器代码。汇编程序负责计算指令语句中表达式的值,并将汇编指令翻译成机器指令代码。指令语句经汇编后,在可执行程序运行期间由CPU解释,并由CPU按指令的要求完成各种运算与操作。5.1.4汇编语言的表达式1.汇编语言的标识符2.汇编语言的操作对象(数据类型)(1)常数、常量编程时已经确定其值,程序运行期间不会改变其值的数据对象称为常数。8086/8088CPU允许定义四
7、种形式的常数:整数、字符串、“组合BCD码数”和实数(浮点数),但只能处理整数、字符串、“组合BCD码数”,不能处理实数(浮点数)。常数表达式的名字称为常量。(程序员给出的一个名或助记名作为一个确定值的标识,其值在程序执行过程中保持不变。)常量可用伪指令说明符“EQU”或“=”定义。例如,AEQU7或A=7都可将常量A的值定义为常数7。注意:伪指令说明符EQU左边的符号名不允许重复定义,而“=”左边的符号名可以重复定义。即,AEQU7可以:A=7AEQU8(不允许)A=8(2)变量编程时只能