您好,欢迎访问三七文档
第四章汇编语言程序格式1/43本章主要内容:1.汇编语言中的伪操作。2.汇编语言程序的格式。3.汇编语言程序的上机过程。第四章汇编语言程序格式2/434.1汇编程序功能1.汇编语言程序与汇编程序的区别:(1)汇编语言程序:汇编语言编写的源程序。(2)汇编程序:对上述源程序进行翻译的程序。2.汇编程序的主要功能:(1)检查源程序。(2)测出语法错误。(3)产生目标程序及列表文件。(4)展开宏指令。第四章汇编语言程序格式3/433.上机步骤(1)建立ASM源文件。(2)用MASM将ASM文件汇编成OBJ文件。(3)用LINK将OBJ文件连接成EXE文件。(4)在DOS提示符下执行EXE文件或用DEBUG调试。源程序可执行文件目标模块文本编辑器汇编程序连接程序调试程序第四章汇编语言程序格式4/434.2伪操作一、数据定义及存储器分配伪操作1.格式:[Variable]MnemonicOperand,…,Operand[;Comments]即:[变量名]数据定义伪操作操作数,操作数[;注释]XDB1,2,3①变量名:即符号地址,用来记住某一存储单元的偏移地址。(不是必需的)第四章汇编语言程序格式5/43②数据定义伪操作DB定义字节,其后的每一个操作数占一个字节。DW定义字,其后的每一个操作数占一个字。DD定义双字DF定义三个字DQ定义四个字DT定义五个字③操作数:常数或结果是常数的一个表达式。第四章汇编语言程序格式6/432.执行的操作:将助记符(DB等)后的操作数存入指定的存储单元中。3.相关操作数和伪操作(1)操作数?预留存储空间,不存入数据。(2)Repeat_countDUP(Operand,…,Operand)复制某个(或某些)操作数3DUP(6,7)6,7,6,7,6,7空格第四章汇编语言程序格式7/434.举例(1)DATA1DW100,100H(2)MESSAGEDB‵HELLO′(3)DATA2DB0,?,?,?,0(4)DATA3DW2DUP(3)64H00H00H01H…………‵H′‵E′‵L′‵L′‵O′…………0---0…………03000300…………第四章汇编语言程序格式8/43(5)DW,DD的特殊用途:用来存变量或标号的偏移地址或整个地址(段、偏移)。PAR1DB3P1DWPAR1P2DDPAR1第四章汇编语言程序格式9/435.变量的属性(三种)(1)段属性:变量所在段的段地址。(2)偏移属性:从段起始位置到定义变量的位置之间的距离,以字节为单位。MOVAX,XMOVAX,[2000]X的偏移属性是2000H,其段属性应通过指令预先存放到DS中。第四章汇编语言程序格式10/43(3)类型属性:定义该变量时第一个数据项所保留的字节数。相应伪操作类型属性DB…………………1DW…………………2DD…………………4DF…………………6DQ…………………8DT…………………10第四章汇编语言程序格式11/436.改变操作数的类型属性的方法(1)PTR属性操作符格式:类型PTR变量表达式类型:BYTE、WORD、DWORDWORDPTRX+1BYTEPTRY第四章汇编语言程序格式12/43(2)LABEL伪操作格式:标号名LABEL属性两个不同的变量指向同一存储空间,但类型不同。XLABELBYTEYDW1234HBYTE、WORD、DWORD34H12H…………XY第四章汇编语言程序格式13/43二、表达式赋值伪操作EQU、=1.EQU格式:表达式名EQU表达式用途:用一个名字来代替多次出现的同一表达式。BEQU[BP+8]MOVAX,BMOVAX,[BP+8]第四章汇编语言程序格式14/432.=用法:与EQU用法类似B=[BP+8]3.区别EQU中表达式名不允许重复定义,而‵=′可以。EMPEQU6EMP=6EMPEQUEMP+1EMP=EMP+1第四章汇编语言程序格式15/43三、段定义伪操作1.段名SEGMENT…段名ENDS2.ASSUME段寄存器1:段名1,段寄存器2:段名2第四章汇编语言程序格式16/43四、程序的开始和结束伪操作1.开始伪操作(一般不用)(1)NAME模块名(2)TITLE名字指定列表文件的标题2.结束伪操作格式:END[标号]作用:表示源程序结束,其中标号指示程序开始执行的起始地址。第四章汇编语言程序格式17/43例:求1+1=2datasegmentsrcdb1dstdb1resultdb?dataendscodesegmentassumeds:data,cs:codemainprocfarstart:pushdsxorax,axpushaxmovax,datamovds,axmoval,dstaddal,srcmovresult,alretmainendpcodeendsendstart第四章汇编语言程序格式18/43五、地址计数器$汇编程序将源程序翻译成目标程序时,每遇到一个新段,就为该段分配一个初值为0的地址计数器,用$表示,然后再对该段中的语句进行汇编,在申请空间或产生目标代码的语句时,$按该语句的目标代码的长度增值。第四章汇编语言程序格式19/43datasegmentxdw35H,33Hydb20Harraydw8,$+4,$+4dataends0DH00H0BH00H08H20H00H33H00H35H00H$=0第四章汇编语言程序格式20/43六、对准伪操作1.EVEN:使下一个字节地址成为偶数。datasegmentXdb1,2,3EVENYdw4,5,6dataends第四章汇编语言程序格式21/432.ORG格式:ORG常数表达式作用:使下一字节的地址为常数表达式的值。datasegmentorg10hx1dw425ahorg20hx2dw0c596hdataends第四章汇编语言程序格式22/43七、基数控制伪操作.RADIX表达式用途:对默认的基数进行修改。.RADIX16MOVAX,0FF第四章汇编语言程序格式23/434.3汇编语言程序格式语句格式:(指令/伪指令)[名字]操作项操作数[;注释]一、名字的定义及使用1.名字的定义字母:A~Z,a~z数字:0~9专用字符:?,·,@,_,$第四章汇编语言程序格式24/43注意:①数字不可放在第一个位置;②用到‵·′时必须放在第一个位置;③名字只有前31个字符有效。第四章汇编语言程序格式25/432.标号:在代码段中定义,后面跟冒号:。标号具有三种属性:①段属性:是标号所在段的段地址。②偏移属性:从段起始地址到定义标号的位置的距离。③类型属性:指该示该标号是在本段内引用还是在其它段中引用,段内为NEAR,段外为FAR。第四章汇编语言程序格式26/433.变量的属性变量也具有三种属性:①段属性:变量所在段的段地址。②偏移属性:从段起始地址到定义变量的位置的距离。③类型属性:1,2,4,6,8,10第四章汇编语言程序格式27/43二、操作项:是指令、伪操作或宏指令的助记符。MOV、ADD、MUL、DB等。三、操作数:可以是常数,寄存器,标号,变量或表达式。第四章汇编语言程序格式28/43表达式中的相关运算符:1.算术操作符:+,-,*,/和MODMOVDX,BLOCK+(6-1)*22.逻辑操作符:AND,OR,XOR,NOTMOVAX,3ANDFEH3.关系操作符:EQ,NE,LT,GT,LE,GEMOVAX,75EQ75即:(AX)0FFFFH用0FFFFH表示真,用0000H表示假第四章汇编语言程序格式29/434.数值回送操作符(5种)(1)TYPE格式:TYPE变量或标号用途:回送该变量类型:DB为1,DW为2等。回送标号类型,NEAR为-1,FAR为-2MOVAX,TYPEX第四章汇编语言程序格式30/43(2)LENGTH格式:LENGTH变量用途:对于使用DUP操作符的变量,回送分配给该变量的单元数,其它情况回送1。第四章汇编语言程序格式31/43XDW100DUP(0)YDD1,2,3…MOVCX,LENGTHXMOVCX,LENGTHYMOVCX,100MOVCX,1第四章汇编语言程序格式32/43(3)SIZE格式:SIZE变量用途:回送分配给该变量的字节数,但此值是LENGTH和TYPE的值的乘积。MOVCX,SIZEXMOVCX,SIZEYMOVCX,100*2MOVCX,1*4第四章汇编语言程序格式33/43(4)OFFSET格式:OFFSET变量或标号用途:回送变量或标号的偏移地址。MOVBX,OFFSETVALUE等价于LEABX,VALUE第四章汇编语言程序格式34/43(5)SEG格式:SEG变量或标号用途:回送变量或标号的段地址MOVAX,SEGXAX得到变量X所在段的段地址。第四章汇编语言程序格式35/43四、汇编语言程序的结构datasegment数据段开始定义变量dataendscodesegment代码段开始assumeds:data,cs:code指定段与相应寄存器的关系mainprocfar定义一个主程序,一定用FAR属性start:第四章汇编语言程序格式36/43pushdsxorax,axpushax保存段地址和偏移地址,以备返回movax,datamovds,ax重新布置数据段地址。……retmainendp主程序结束codeends代码段结束endstart整个程序结束第四章汇编语言程序格式37/434.4汇编语言程序的上机过程一、建立ASM文件在编辑环境(EDIT,写字板)中输入汇编语言程序,文件名的后缀是ASM。第四章汇编语言程序格式38/43二、利用MASM产生OBJ,LST和CRF文件第四章汇编语言程序格式39/43(1)OBJ文件:二进制目标文件。(2)LST文件:列表文件。该文件同时列出源程序和机器语言程序清单。一般不用。(3)CRF文件:此文件用来产生交叉引用表REF文件。REF文件列出了用户定义的符号及其所在行列号。一般不用。第四章汇编语言程序格式40/43三、用LINK产生EXE文件第四章汇编语言程序格式41/43(1)EXE文件:可执行文件。(2)MAP文件,连接映象文件。给出每个段在存储器中的分配情况。一般不用。(3)LIB文件:程序中用到的库文件。一般不用。第四章汇编语言程序格式42/43四、COM文件COM文件不允许分段,长度小于64K入口点必须在100H。第四章汇编语言程序格式43/43本章总结:1.掌握常用的伪操作。2.熟练掌握汇编语言程序的格式。3.逐步熟悉上机过程。
本文标题:第4章程序格式
链接地址:https://www.777doc.com/doc-3683933 .html