您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第四章:汇编语言程序格式
第四章:汇编语言程序格式4.2伪操作伪操作又称伪指令,它们不是在程序运行期间由计算机来执行的,而是在汇编程序对源程序汇编期间由汇编程序处理的操作,它们可以完成如处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束等功能。4.2.1处理器选择伪操作如:.8086.286.286P……4.2.2段定义伪操作1、完整的段定义伪操作segmengnameSEGMENT……segmengnameENDSASSUMEassignment,……,assigmentASSUMEregistername:segmentname例:data_seg1segment……data_seg1endsdata_seg2segment……data_seg2endscode_segsegmentassumecs:code_seg,ds:data_seg1,es:data_seg2……code_segends4.2.2段定义伪操作2、存储模型与简化段定义伪操作(1)MODEL伪操作(7种)(2)简化的段定义伪操作(7种)(3)与简化段定义有关的预定义符号movax,datamovax,@data(4)用MODEL定义存储器模型时的段默认属性4.2.2段定义伪操作3、段组定义伪操作为了程序在访问各数据段时使用一个数据段寄存器DS,这样的话就可以使定义在不同段种的变量,都可以用同一个段寄存器访问。4.2.2段定义伪操作4、程序开始和结束伪操作NAMEmodule_nameTITLEtextEND[label]4.2.3数据定义及存储器分配伪操作格式:[Variable]MnemonicOperand,…如:mess1db‘personalcomputer$’DB每个操作数占有一个字节DW每个操作数占有一个字DDDFDQQT例1、DATA-BYTEDB10,4,10H2、DATA-WORDDB10,4,10H3、MESSAGEDB‘HELLO’4、DATA-BYTEDB0,?,?,05、ARRAY1DB2DUP(0,1,2,3)6、ARRAY2DB100DUP(?)注意:你定义的是什么格式,以后操作的时候一定要按照什么格式来进行。4.2.5表达式赋值伪操作EQU在程序中若多次出现同一个表达式,为方便,可以用赋值伪操作给表达式赋予一个名字。如:ALPHAEQU7BETAEQUALPHA-2ADDREQUVAR+BETA注:“=”同样可以完成赋值的操作,区别在于“=”可以重复定义,而EQU则不能。例:对于如下数据定义,给出各条指令执行后的结果。fldbdw0a24fhtabledb32h,52h,0a2h,215arraydb‘ABCD’countequ$-array1.Movax,fldb;al=()2.Movcl,table[2];cl=()3.Movch,array;ch=()4.Movdx,count;dx=()4.2.6地址计数器与对准伪操作1、地址计数器$在汇编过程中,使用地址计数器来保存当前正在汇编的指令的便宜地址。地址计数器就用$来表示。如:JNZ$+6ARRAYDW1,2,$+4,3,$+44.2.6地址计数器与对准伪操作2、ORG伪操作设置当前地址计数器的值ORGconstantexpression如:DATASEGMENTORG1000HDATA1DW1234HDATAENDS4.2.6地址计数器与对准伪操作3、EVEN伪操作使下一个变量或指令开始于偶数字节地址。4、ALIGN伪操作保证双字数组边界从4的倍数开始。4.2.7基数控制伪操作RADIX伪操作可以把默认的基数改为任何基数。如:RADIX16,则默认为十六进制了。4.3汇编语言的程序格式4.3.1名字项4.3.2操作项4.3.3操作数项4.3.4注释项4.1汇编程序功能编辑程序*.ASM文件汇编程序MASM*.OBJ文件连接程序LINK*.EXE文件4.4汇编语言的上机过程4.4.1建立汇编语言的工作环境(1)编辑程序EDIT.EXE(2)汇编程序MASM.EXE(3)连接程序LINK.EXE(4)调试程序DEBUG.EXE4.4汇编语言的上机过程4.4.2建立ASM文件4.4.3用MASM程序产生OBJ文件4.4.4用LINK程序产生EXE文件4.4.5程序的执行4.4.6COM文件附加:DEBUG调试程序如下程序;数据段avardw0bvardw0cvardw10,20,30;代码段leabx,cvarmovax,[bx]movbvar,axmovax,[bx+2]addax,bvarmovavar,ax执行后,avar=()
本文标题:第四章:汇编语言程序格式
链接地址:https://www.777doc.com/doc-3642588 .html