CH4(1) 汇编语言程序设计.ppt_第1页
CH4(1) 汇编语言程序设计.ppt_第2页
CH4(1) 汇编语言程序设计.ppt_第3页
CH4(1) 汇编语言程序设计.ppt_第4页
CH4(1) 汇编语言程序设计.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言程序设计,第四章,4.0概述4.1汇编语言程序格式4.2MASM中的表达式4.3伪指令语句4.4程序设计方法4.5DOS系统功能调用,4.0概述,从使用者的角度看,一般可分成以下三种:1、机器语言(MachineLanguage)用0、1数字代码来表示机器操作;如:加法:1001、1D、2B特点:计算机能够直接识别,执行速度快;但不方便记忆和编程,一、计算机程序设计语言,2、汇编语言(AssemblyLanguage)用助记符来表示指令,如:加法:ADD特点:机器不能识别,需翻译;但仍然面向硬件,执行速度较快;多用于编制系统程序、实时控制和通信程序。3、高级语言(High-levelLanguage)用数学语言和自然语言编程;如:加法:,输出:Printf特点:编程方便简单,无需了解机器硬件;但机器不能识别,需要庞大的翻译系统,速度较慢。,一般应用:混合语言汇编语言加高级语言等组合编程;各取所长,相互调用汇编语言实现:硬件操作高级语言实现:复杂算法,二、汇编语言程序执行过程,1、几个名词汇编语言:用助记符来表示指令的语言汇编语言源程序:用汇编语言编写的程序。汇编:将源程序翻译成机器代码的过程。汇编程序:将源程序翻译成机器代码的程序。,2、汇编语言源程序执行过程,三、完整汇编源程序实例,DATASEGMENTDA1DB12HDA2DB34HDA3DB00HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA(下接右边),START:MOVAX,DATAMOVDS,AXMOVBL,DA1ADDBL,DA2MOVDA3,BLMOVAH,4CHINT21HCODEENDSENDSTART,分析程序的结构、功能、组成,汇编源程序特点分段的结构4个段,至少有代码段,其他视需要而定;有部分固定的程序框架(程序结构)基本组成-语句有些是前面学过的指令语句,其他是MASM中规定的格式、语法语句。,段名1SEGMENT;段开始段名1ENDS;段结束段名2SEGMENTASSUMECS:段名2,DS:段名1;段分配START:MOVAX,DATAMOVDS,AX;送段基址MOVAH,4CH;返回DOS方法一INT21H段名2ENDSENDSTART;源程序结束,一般程序框架,MAINPROCFARPUSHDSMOVAX,0PUSHAXRETMAINENDP,返回DOS方法二,4.1汇编语言程序格式,MASM中的语句分为两类:指令性语句:与机器指令相对应,可译成目标代码(机器指令代码)。伪指令语句:无对应的机器指令,汇编时对伪指令进行处理,可完成数据定义、存储区分配、段定义、段分配、指示程序开始和结束等功能。差别:格式及功能不同(形式);汇编时能否形成对应的机器码(本质)。,一、汇编源程序的语句,1、指令性语句格式:标号:指令助记符操作数,操作数;注释标号符号地址;必须加“:”;命名规则;可省略指令助记符指令名称,不可省略操作数操作对象;多个时用“,”隔开注释以“;”开头;说明性语句,可省略例:NEXT:MOVAH,0FH;将0FH送入AH中,2、伪指令语句(也称汇编命令语句)格式:名字伪指令指示符操作数,操作数;注释名字符号地址;不加“:”;变量名、段名等;可省略伪指令指示符MASM中规定的符号;如变量定义DB等操作数操作对象;不同伪指令有不同要求,多个时用“,”隔开注释以“;”开头;说明性语句,可省略例:DA1DB10H,20H,30H;定义变量DA1,并赋初值,MASM中使用的数据项:常数、寄存器、存储器、变量、标号或表达式。1、常数是固定值,没有属性,是确定的数据。二进制:字母“B”结尾,如:00110100B;十进制:字母“D”结尾或省略,如:1234D、5678;十六进制:字母“H”结尾,“AF”开头时,前面加0,如:0F7H;字符串:用单引号括起来字符或字符串,如:A,123H。注:字符串汇编时被翻译成对应的ASCII码,机内也以ASCII码形式存放,如:MOVAH,A;AH=41H,二、数据项,与指令系统中介绍的一样,2、变量数据的符号地址;名称可以代表后面数据项第一字节的地址;例:DA1DB10H,20H,30H,;定义变量DA1,初值为,DA1表示10H的地址相当于高级语言中的数组;在程序中作为存储器操作数来使用。,变量有三种属性:段值:变量所在段的段基址。段内偏移地址:指变量所在地址与所在段首地址之间的地址偏移字节数。类型:长度属性,指变量中每个元素所包含的字节数,类型有字节变量(BYTE)、字变量(WORD)、双字变量(DWORD)等。,3、标号指令性语句的符号地址;名称代表后面可执行指令语句的开始地址;可作为转移指令的目的操作数。例:JMPNEXTNEXT:MOVAH,0FH,标号也有三种属性:段值:标号所在段的段基址,总在CS中。段内偏移地址:指标号所在地址与所在段首地址之间的地址偏移字节数。类型:指标号可转移的距离,也称距离属性。NEAR:近标号,实现段内转移或调用;FAR:远标号,实现段间转移或调用。若没有对类型进行说明,默认为NEAR。,4.2MASM中的表达式,表达式:运算对象与运算符组成;运算对象:常数、变量、标号;运算符:MASM中有六类算术运算符、逻辑运算符、关系运算符、数值返回运算符、修改属性运算符、其它运算符注意:所有表达式由MASM处理(即:在汇编时进行运算),结果为常数或存储器地址;,掌握:常用运算符及表达式的结果,一、算术运算符包括:+,-,*,/(取商),MOD(取余),SHL,SHR特点:运算对象及结果均为整数地址只能加减,例:DA1DB1,2,3,4DA2DB20MOVAX,30*5MOVAL,31MOD5MOVAL,31/5MOVAL,DA2-DA1,MOVAX,150MOVAL,1MOVAL,6MOVAL,4,二、逻辑运算符包括:AND,OR,NOT,XOR特点:位运算;只能用于数字表达式例:MOVBL,8CHAND73HMOVBL,ALANDOFFHMOVBX,NOT0FFH,注意:ANDAX,8CHAND73H(两AND不同)区别:前为指令助记符,后为运算符;处理时间不同;前影响PSW,后不影响,MOVBL,00H()MOVBX,0FF00H,三、关系运算符包括:EQ,NE,LT,GT,LE,GE特点:运算对象:数据或同一段内的地址;运算结果:关系为真,结果全1;假,全0例:MOVAX,10HGE16MOVAL,10HGE16,MOVAX,0FFFFHMOVAL,0FFH,关系运算符常与逻辑运算符组合起来使用例:MOVCX,(PORTLT5)AND100)OR(PORTGE5)AND200),若PORT5,MOVCX,100若PORT5,MOVCX,200,四、数值返回运算符(分析运算符)包括:OFFSET,SEG,TYPE,LENGTH,SIZE格式:运算符变量或标号功能:OFFSET:取偏移地址值;SEG:取段基址;TYPE:返回长度(变量)或距离(标号)属性值;,LENGTH:返回变量长度对于一般变量,返回1;对于DUP定义的变量,返回单元数(以DUP形式表示的第一组变量被重复设置的次数,所以直接返回第一个DUP前的N值);说明:DUP为复制操作符,格式:NDUP(表达式);N表示复制次数,表达式为复制内容例:2DUP(1,2)等价于1,2,1,2SIZE:SIZE=LENGTH*TYPE,数值返回运算符(续),例:设DS=0200H,从偏移量为0000H定义以下变量:DA1DW1234H,5678HDA2DD5DUP(1,2).MOVAX,OFFSETDA1MOVAX,OFFSETDA2MOVAX,SEGDA1L1:MOVAX,TYPEDA2MOVAX,TYPEL1MOVAX,LENGTHDA1MOVAX,SIZEDA2,MOVAX,4MOVAX,0FFHMOVAX,1MOVAX,20,MOVAX,0000HMOVAX,0004HMOVAX,0200H,数值返回运算符(续),五、修改属性运算符段操作符ES:,DS:,SS:,CS:修改段基址的来源例:MOVAX,BX;默认段基址在DS中MOVAX,ES:BX;段基址在ES中PTR格式:类型/距离PTR变量或标号功能:临时改变或指明变量或标号的类型属性,常与BYTE、WORD、NEAR、FAR等连用。,例:DA1DB15H,36HDA2DW1122H,3344HMOVAX,DA1();长度不一致MOVAL,DA2();长度不一致MOVBX,10H();类型不明改:MOVAX,WORDPTRDA1MOVAL,BYTEPTRDA2;临时改变变量类型MOVWORDPTRBX,10H;临时指明操作类型思考:这三条指令执行后的结果分别是多少?AX=3615H,AL=22H,(BX)=0010H,六、其他运算符():改变优先级;:内存单元地址或多变量下标补充$:地址计数器的当前值例:DA1DW1,2,$+4,0AH若DA1偏移量为1000H,则上述变量定义等效为:DA1DW1,2,1008H,0AH,例:若DA1DB01H,02H,03HDA2DW5566HCOUNTEQU$-DA1则:COUNT的值为5COUNT表示:DA1,DA2占的字节总数(长度之和)七、优先级(P136表4-3),4.3伪指令语句,在汇编时进行处理,主要完成变量定义,段定义,段分配,指示程序开始和结束等功能。常用:数据定义(变量定义)语句:DB,DW,DD符号定义语句:EQU段定义语句:SEGMENTENDS段分配语句:ASSUME过程定义语句:PROCENDP程序开始、结束语句:ORG,END,一、数据定义(变量定义)语句(DB,DW,DD)格式1:变量名助记符opr,opr;注释格式2:变量名助记符NDUP(opr,opr);注释助记符:DB:定义字节变量,表示每个opr占一个字节DW:定义字变量,表示每个opr占2个字节DD:定义双字变量,表示每个opr占4个字节N:重复次数,正整数,掌握:变量占的总字节数;在内存中的存放格式,例1:opr是常数或表达式若数据定义语句如下:DA1DB10,5,10HDA2DW100H,100,-4DA3DD2*30,0FFFBH则各变量所占字节数:DA13B;DA26B;DA38B;,汇编后存放格式如下图:,例2:opr是字符串DA1DBHELLODA2DBOKDA3DWOK字节数:DA15BDA22BDA32B思考:DA4DWABC怎么存储?,汇编后存放格式如下图:,(),用DW定义字符串时,只允许包括两个字符,多于两个字符时,只能用DB定义,存放格式不同,例3:opr用?来保留存储空间,但不存入数据。DA1DB0,1,?,?,?DA2DW?,54,?字节数:DA15BDA26B注意:DB?与DB?不同,DA1,DA2,0,1,?,?,?,?,?,54,例4:opr用DUP缩写DA1DB2DUP(0,1,2)DA2DW2DUP(0,1,2)等价语句:DA1DB0,1,2,0,1,2DA2DW0,1,2,0,1,2字节数:DA16BDA212B,例5:DUP嵌套DA1DB2DUP(1,2DUP(1,2)等价语句:DA1DB2DUP(1,1,2,1,2)字节数:DA110B,二、符号定义语句(EQU)格式:符号名EQU表达式功能:符号名出现,汇编时用表达式值替代即可例:COUNTEQU100C1EQUADDMOVCX,COUNTC1AL,BL,MOVCX,100ADDAL,BL,注意:EQU语句不占内存例:若从数据段偏移地址为0000H开始定义如下语句:X1DB12H,34HX2EQU20X3DB56H,78H则:X1=0000H,X2=20,X3=0002H,三、段定义语句(SEGMENTENDS)8086CPU采用分段技术来管理存储器,程序具体体现为:分段结构,这由段定义语句完成。格式:段名SEGMENT参数段内容段名ENDS注意:SEGMENT,ENDS必须成对出现,前面的段名要一致。DS段、SS段、ES段中只能为伪指令语句。,四、段分配语句(ASSUME)指明所定义的段与段寄存器之间的关系(即告诉汇编程序你定义了哪些段,分别是什么段!)格式:ASSUMECS:段名,DS:段名,ES:段名,SS:段名注意:代码段是必须的,其他段是需要而定;只是说明性语句,并未将段基址装入相应段寄存器,例:DATASEGMENTDATAENDSCODESEGMENTASSUMECS:CODE,ES:DATA;段分配语句START:MOVAX,DATAMOVES,AX;装入段基址值,注:代码段段基址自动装入CS,五、过程定义语句(PROCENDP)格式:过程名PROCNEAR/FARRET过程名ENDP注意:过程内部至少有一条RET指令。调用一个过程的格式为:CALL过程名,六、程序开始和结束语句(ORG,END)ORG格式:ORG表达式功能:给汇编程序设置位置指针,指定下面语句的起始偏移地址(若不指定,默认从0000H开始)例:ORG0100HDA1DB11H,22HORG0200HDA2DW1234H,END格式:END标号名功能:告知汇编程序,源程序到此结束END:助记符,放在最后一行标号名:第一条可执行语句的标号例:CODESEGMENTSTART:CODEENDSENDSTART,要在内存中以DATA为起始地址的单元中定义1到16十六个字节的数据;DATA1将它们定义成字变量;DATA2要在内存空出20个字单元。将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论