汇编语言-程序格式.ppt
《汇编语言-程序格式.ppt》由会员分享,可在线阅读,更多相关《汇编语言-程序格式.ppt(33页珍藏版)》请在三一办公上搜索。
1、本章学习要点:(1)常见的伪指令及它们的用法(2)汇编语言的结构一、汇编语句的种类和格式1.语句的种类汇编语言有多种类型的语句,指令语句、伪指令语句、宏指令语句。汇编语言在对源程序进行汇编时,把指令语句翻译成机器指令,也就是说指令语句有着与之对应的机器指令。伪指令语句没有与其对应的机器指令,只是指示汇编程序如何对源程序进行汇编,包括符号的定义、变量的定义、段的定义等。通俗点讲,它实际上是属于一种说明语句。2.语句的格式指令语句格式:(标号)指令助记符(操作数(,操作数)(;注释)伪指令语句的格式如下:(名字)伪指令定义符(参数,参数)(;注释),伪指令定义符:规定了伪指令的功能参数:说明伪指令
2、操作的对象,如常数(数值表达式)等名称:给所定义的内容起的名称。在汇编语言中,名字和标号很容易区分,名字后面没有冒号,而标号后一定用冒号。标号和名字最多由31个字母、数字及规定的特殊字符组成,并且不能以数字来开头。标号和名字不能是汇编语言的保留字,如不能是“MOV”。汇编语言不区分保留字中字母的大小写。如“MOV AX,03H”等同于“mov ax,03h”伪指令有多种,常见的如:(1)段定义伪操作(2)数值数据定义及存储器分配(3)符号数据定义(4)程序开始和结束伪操作(5)表达式赋值伪操作此外还有基数控制伪操作、对准伪操作等。,看看下列代码有哪些伪指令:,二、常见的伪指令/伪操作(1)段定
3、义语句为了与存储器的分段结构相对应,汇编语言的源程序也是由若干个段组成。1.段开始和段结束语句段定义的一般格式如下:段名SEGMENT 定位类型 组合类型 类型段名ENDS例:一个简单的段如下所示:DSEGSEGMENTMESS DB HELLO,0DH,0AH,$DSEGENDS,2.段使用设定语句汇编程序根据段开始语句和段结束语句判断出源程序的段划分,为了有效地产生目标代码,汇编程序还要了解各程序段与段寄存器间的对应关系。这种对应关系由段使用设定语句说明。ASSUME 段寄存器名:段名,段寄存器名:段名段寄存器名可以是CS,DS,SS和ES。段名就是段开始和段结束语句中规定的段名。例如:C
4、S寄存器对应CSEG段,DS寄存器对应DSEG段。ASSUME CS:CSEG,DS:DSEGASSUME伪指令中段名也可以是一个特别的关键字NOTHING,它表示某个段寄存器不与任何段有对应关系。,DSEG1 SEGMENTVARW DW 12DSEG1 ENDSDSEG2 SEGMENTXXX DW 0DSEG2 ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSG1,ES:DSG2MOV AX,DSEG1MOV DS,AXMOV AX,DSEG2MOV ES,AXASSUME DS:DSG2,ES:NOTHINGMOV AX,DSEG2MOV DS,AXDSEG E
5、NDS,(2)关于数值数据定义语句及存储器分配通过数值数据定义语句可以为数据项分配存储单元,并根据需要设置其初值。还可以用符号代表数据项,此时符号就与分配的存储单元相联系。代表数据项的符号本省称为变量名,与之相对应的存储单元用于存放变量。1.数据定义的格式数据定义语句是最常用的伪指令语句。一般格式如下:变量名 数据定义符 表达式,表达式,表达式;注释例如:VARB DB3WARW DW-1234BUFF DB 100,3+4,5*6,1)定义字节数据项(DB)每一个字节数据项只占用一个字节存储单元例:COUNT DB 100 DB 0DH,0AH,$TABLEDB 0,1,4,9,162)定义
6、字数据项(DW)每一个字数据项只占用两个字节存储单元例:FLAG DW 2FCDH,100,-1 VECTDW 0 DW 100H3)定义双字数据项(DD)每一个双字数据项只占用四个字节存储单元例:VECTOR DD 4 FARPTRDD 12345678H,0此外,还可以定义8字节的数据项(DQ),10字节的数据项(DT),4)定义没有初值的数据项如果数据定义语句中的表达式只是一个问号(?),则表示不预置对应变量的初值,而仅仅是给变量分配存储单元。例:INBUFF DB 5,?,?,?,8,?VARWDW?OLDVDD?5)定义字符串定义字节数据的伪指令DB也可以用于方便地定义字符串。字符串
7、要用引号括起来,单引号和双引号皆可,只要配对。例如:MESS DB HELLO!上述语句与如下语句定义内容相同:MESS DB H,E,L,L,O,!,2.重复操作符DUP有时需要定义数组,有时还需要定于数据缓冲区。例如:BUFFER DB 0,0,0,0,0,0,0,0 以上操作太不方便,为此,汇编语言停供了在数据定义语句中使用的重复操作符DUP。比如,上述定义语句与如下定义语句起相同的作用:BUFFER DB 8 DUP(0)重复操作符DUP的一般格式如下:count DUP(表达式,表达式,)例如:BUFFER1 DB 5,0,5 DUP(?)BUFFER2 DB 100 DUP(0,2
8、 DUP(1,2),0,3)BUFFER3 DB 256 DUP(ABCDE),(3)关于符号数据的定义语句1.等价语句EQU格式 EQU 表达式例:COUNT EQU 100;符号COUNT就代表常数100BUFF_LEN EQU 4*COUNT;COUNT是已定义的符号常数HELLO EQU“How are you!”例:MOVE EQU MOVCOUNT EQU CX在安排上述语句后,就可以用MOVE代替指令助记符MOV,用COUNT代替寄存器CX。当然,MOV和CX仍可以照样使用。当遇到:MOVE AX,CX;MOV AX,CXMOVE COUNT,100;MOV CX,100需要注意
9、:第1,等价语句不另外给符号分配存储单元;第2,等价语句定义的符号不能与其它符号相同,也不能被重新定义。,2.等号语句(=)汇编语言专门提供了符号语句来定义符号常数,即用符号表示一个常数。等号语句的一般格式如下:符号名=数值表达式例如:XX=10用符号定义语句可被重新定义。例如:ABCD=1ABCD=100,3.定义符号名语句格式:符号名 LABEL 类型其中类型可以是BYTE、WORD、DWORD、NEAR、FAR,其中前3项对应于数据项,后2项对应于可执行代码。功能:指定为某一类型的符号,且该符号的段属性和偏移属性与下一个紧接着的存储单元的段属性和偏移属性相同。例如:BUFFER LABE
10、L WORDBUFF DB 100 DUP(0)定义了一个符号BUFFER,其类型是WORD。因为段属性与偏移属性和BUFF相同,所以内容为0000H。又如:QUIT LABEL FAREXIT:MOV AH,4CH“MOV AH,4CH”有了QUIT和EXIT两个标号。,(4)程序开始与结束伪操作END 伪操作格式:END 标号其中标号表示程序开始执行的起始地址。注意:程序是从END所指的“标号”开始执行,遇到END指令后结束。如果END没有指定标号,则从相应代码段从开始运行。,注意以下2个程序的区别:,(5)对准伪操作1.EVEN格式:EVEN功能:使紧随其后的内容从偶地址开始存储。DSE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 格式
链接地址:https://www.31ppt.com/p-5993743.html