欢迎来到天天文库
浏览记录
ID:36258725
大小:231.50 KB
页数:95页
时间:2019-05-07
《汇编语言第4章汇编语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言4.1.1汇编语言语句分类汇编语言程序的基本组成单位是语句。在8086宏汇编MASM中使用的语句有三种类型:指令语句、伪指令语句和宏指令语句。其中指令语句和伪指令语句是最常见、最基本的语句。4.1.1汇编语言语句分类(1)指令语句每条指令语句都要产生相应的机器语言目标代码,对应着机器的一种操作。用于指示汇编语言如何将源程序进行汇编工作,如程序如何分段,有哪些逻辑段,哪些(2)伪指令语句逻辑段是当前段以及内存单元如何分配等。伪指令语句的功能在汇编阶段已经全部完成,所以不产生相应的目标代码。(3
2、)宏指令语句宏指令是编程人员按照一定的规则来编写的可供调用的一种指令。一般来讲,一条宏指令可以包括多条指令或伪指令。4.1.2汇编语言语句格式汇编语言的语句可以由名字、操作符、操作数和注释4部分组成,一般格式如下:[名字]操作符[操作数][;注释]各个组成部分之间以空格分隔,它们的含义如下:(1)名字指令语句的名字是标号,必须以冒号“:”结束。标号是一条指令的符号地址,代表该指令代码的起始字节单元地址。并不是每条指令都需要标号,只有在循环或分支入口语句前面选用标号,以便给循环或转移指令提供转向地址。伪指令
3、语句中的名字可以是变量名、过程名、段名和符号名等,伪指令语句的名字不可以冒号“:”结束。4.1.2汇编语言语句格式(2)操作符操作符就是各种指令助记符。它可以是指令、伪指令或宏指令。(3)操作数不同的指令、伪指令所需的操作数个数不尽相同,可能是0个、1个或多个。若需多个操作数,各个操作数之间要用逗号“,”或空格分隔。(4)注释注释是以分号“;”开始的任意字符串。可以写在一条语句的后面,也可以独占一行。其功能一般是对指令或程序段的功能和意义等加以解释说明,好的注释可以提高程序的可读性和可维护性。汇编时注释不
4、产生目标代码。4.2符号定义语句有时程序中会多次出现同一个表达式,可以用符号定义语句给该表达式定义一个符号,这样既便于引用,又减少了程序修改量,而且还能够提高源程序的可读性。汇编后该符号代表一个确定的值。4.2.1等值语句格式:符号名EQU表达式功能:给表达式或表达式的值赋予一个符号名,定义后,程序中可以用该符号名代表该表达式。说明:表达式可以是常数、数值表达式、另一个符号名或助记符等。用EQU语句定义的符号名在同一个程序中不允许重复定义。VALEQUTABLE1;VAL代替变量TABLE1ADDREQU
5、[BP+SI+100H];ADDR代替地址表达式[BP+SI+100H]AEQUAX;A代替寄存器AXMOVEEQUMOV;MOVE代替指令助记符MOV例如:COUNTEQU50;COUNT代替常数50COUNTEQU50*25;SUM代替数值表达式50*254.2.2等号语句格式:符号名=表达式功能:与等值语句的功能基本相同,不同之处仅在于等号语句中的表达式只能是常数或数值表达式表达式,等值语句中的表达式可以是常数、数值表达式、另一个符号名或助记符等;另外,在同一个程序中等号语句可以对一个符号重复定义,
6、而等值语句不能对同一个符号重复定义。例如:COUNT1=50;COUNT1代替常数50COUNT1=100*20;重新定义COUNT1COUNT2EQU100*30;错误,EQU不能对;COUNT2重复定义COUNT2EQU100;COUNT2代替常数504.2.3解除定义语句PURGE格式:PURGE符号名1,符号名2,…,符号名n功能:解除指定符号的定义。例如:COUNTEQU100;COUNT代替常数100PURGECOUNT;解除对符号COUNT的定义COUNTEQU100*30;重新定义COUN
7、T4.3数据定义语句数据定义伪指令为数据项分配存储单元,用一个符号名与这个存储单元相联系且为这个数据提供一个任选的初始值。也可以只给变量分配存储单元,而不赋予特定的值。常用的数据定义伪指令有DB、DW、DD、DQ和DT等。数据定义伪指令的一般格式为:格式:[变量名]数据定义伪指令初始化参数表4.3数据定义语句说明:(1)如果此处给出了“变量名”,也就定义了一个变量。变量名是该数据区的符号地址。在指令中通常利用变量名来引用内存单元。(2)数据定义伪指令DB、DW、DD、DQ和DT所分配的内存单元的长度也不同
8、。伪指令内存单元类型单元所占字节数DBBYTE(字节型)1DWWORD(字型)2DDDWORD(双字型)4DQQWORD(4字型)8DTTBYTE(10字节型)104.3数据定义语句(3)初始化参数表可以包含任意多个初始化参数。如果有多个初始化参数时,相互之间应该用逗号“,”分开。每个参数能够初始化一个内存单元,它们可以是以下5种形式:①?:仅为变量预留一个存储单元而不对该单元进行初始化。例如:BUF1DB?BUF2DW56H
此文档下载收益归作者所有