5 汇编语言程序设计.ppt
《5 汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《5 汇编语言程序设计.ppt(69页珍藏版)》请在沃文网上搜索。
1、第五章汇编语言程序设计主要内容第五章汇编语言程序设计汇编语言的结构常用的伪指令各种汇编语言程序的基本结构的设计方法及实现常用的DOS功能调用 主要内容:难点:常用的DOS功能调用计算机程序设计语言的演变计算机程序设计语言的演变 1.机器语言机器语言(MachineLanguage)2.汇编语言汇编语言(AssemblyLanguage)汇编程序的“翻译”作用汇编程序汇编程序AssemblerAssembler汇编语言汇编语言源程序源程序机器语言机器语言目标程序目标程序机器语言、汇编语言和高级语言第五章汇编语言程序设计3.高级语言高级语言(High-levellanguage)C/C+4.混合语
2、言(混合语言(HybridLanguage)一、汇编语言语法一、汇编语言语法 汇编语言源程序书写格式 第五章汇编语言程序设计汇编语言源程序是汇编语言语句的有序集合。1字符集8086/8088宏汇编语言的单词是由下列字符构成的。1)英文字母:az,AZ;2)数字:09;3)算术运算符:+-*/;4)分隔符:,:;()=SP(空格)TAB(制表符);5)控制符:CR(回车)LF(换行)FF(换页);6)专用字符:$&_(下划线)?.%。用汇编语言编写的程序中,指令的助记符、各种操作符等都是由上述字符组成。一、汇编语言语法一、汇编语言语法 汇编语言源程序书写格式 第五章汇编语言程序设计2标识符标识符
3、是给程序中的标号、变量、记录、结构、段、过程等起的名字,它应符合下列规定:1)标识符的第一个字符必须是字母、“?”、“”或“_”;2)从第二个字符开始可以是字母、数字、“?”、“”或“_”;3)一个标识符的最大长度为31个字符;4)不能为保留字。3保留字8086/8088中的寄存器名、指令助记符、各种操作符等都是系统专用的保留字。这些保留字用户不能用作标识符,编写程序时必须注意。一、汇编语言语法一、汇编语言语法 汇编语言源程序书写格式 第五章汇编语言程序设计4、三种基本语句 指令语句伪指令语句宏指令语句 5、四种逻辑段代码段(必须)数据段(可选)堆栈段(可选)附加段(可选)STACK_SEGS
4、EGMENT;定义作为堆栈段的逻辑段,段名为STACK_SEGDW256DUP(?);分配堆栈段的大小,设置为256个字TOPLABELWORD;定义堆栈栈底位置STACK_SEGENDSDATA_SEGSEGMENT;定义作为数据段的逻辑段,段名为DATA_SEGSTRINGDBLetushaveatry!,$;定义字符串数据DATA_SEGENDSCODE_SEGSEGMENT;定义作为代码段的逻辑段,段名为CODE_SEGASSUMECS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEGSTART:MOVAX,DATA_SEG;程序执行起始点MOVDS,AX;将段寄存器
5、指向用户数据段MOVAX,STACK_SEGMOVSS,AX;将堆栈指针指向用户定义堆栈MOVSP,OFFSETTOPLEADX,STRINGMOVAH,9;系统功能调用,在CRT显示字符串INT21HMOVAH,4CH;系统功能调用,程序结束返回操作系统INT21HCODE_SEGENDSENDSTART;汇编结束,程序起始点为START 堆栈段数据段代码段汇编语言源程序书写格式 第五章汇编语言程序设计程序结构程序结构l l 程序由数条语句构成,每条语句占一行。程序由数条语句构成,每条语句占一行。指令性语句指令性语句(指令语句指令语句)指示性语句指示性语句(伪指令语句伪指令语句)l l 分段
6、结构分段结构 程序按段编写程序按段编写,与与80868086内存分段编址相对应。内存分段编址相对应。每段每段由伪操作由伪操作SEGMENTSEGMENT开始、由开始、由ENDSENDS结束。结束。l l 程序中设有返回程序中设有返回DOSDOS的功能。的功能。使程序执行完后返回使程序执行完后返回DOSDOS系统的命令接受状态。系统的命令接受状态。程序中用到内存操作数时,程序中用到内存操作数时,应按操作数的寻址方式应按操作数的寻址方式,给相应的段寄存器赋值给相应的段寄存器赋值汇编语言源程序书写格式 第五章汇编语言程序设计一、汇编语言语句一、汇编语言语句 汇编语言源程序书写格式 第五章汇编语言程序
7、设计1汇编语言语句的种类汇编语言有三种基本语句:指令语句、伪指令语句和宏指令语句。指令语句:产生一个目标代码伪指令语句:为汇编程序和连接程序提供一些必要控制信息的管理性语句,不产生目标代码。宏指令语句的宏指令是编程者根据宏指令定义规则,将一组指令或伪指令集中定义的一条“宏大”的指令。宏指令只节省源程序篇幅,不节省汇编后的目标代码。伪指令语句在汇编时不产生目标代码,而指令语句必产生相对应的机器代码,这一点是两者的本质区别。此外,伪指令语句的伪操作是在汇编过程或连接过程中完成的,而指令语句的操作是在运行用户程序时完成的。汇编语言源程序书写格式 第五章汇编语言程序设计2汇编语言语句的格式汇编语言的三
8、种语句格式是类似的:指令语句的格式:标号:操作符参数,参数;注释伪指令语句的格式:名字操作符参数,参数;注释宏指令语句的格式:标号:操作符实参数表;注释汇编语言源程序书写格式 第五章汇编语言程序设计2汇编语言语句的格式三种语句都由四部分组成:第一部分是标号或名字,符合标识符定义的要求标号后面有冒号,表示此语句为指令语句,在汇编时产生与之对应的机器码,名字后没有冒号,表示此语句为伪指令语句,在汇编时不产生机器码,所以,汇编语言语句中有无冒号是在汇编时是否产生机器码的一个标志,也是指令语句和伪指令语句的最大区别。LAB:MOVAX,BX;指令语句,LAB后跟冒号YDB30H;伪指令语句,Y后不跟冒
9、号操作符项操作符项操作符可以是指令、伪操作中的助记符。操作符可以是指令、伪操作中的助记符。对于指令对于指令,汇编程序将其翻译成机器语言指令。汇编程序将其翻译成机器语言指令。MOVMOV AX,100AX,100B8B8 00010001对于伪指令对于伪指令,汇编程序据其要求的功能进行处理汇编程序据其要求的功能进行处理。datadataSEGMENTSEGMENTdatadata与一段值对应与一段值对应 stringstring DBDBhpudqxhpudqxstringstring与一内存地址对应与一内存地址对应汇编语言源程序书写格式 第五章汇编语言程序设计注释项注释项 由分号引出,用来说明
10、语句或程序的功能。由分号引出,用来说明语句或程序的功能。汇编程序对分号后的内容不做处理。汇编程序对分号后的内容不做处理。作用:作用:注释程序,增强程序可读性。注释程序,增强程序可读性。可放在语句最前,暂时注释某语句,调试程序用。可放在语句最前,暂时注释某语句,调试程序用。例例;MOVAH,2;MOVAH,2;显示提示信息显示提示信息;MOVDL,AMOVDL,A;INT21H;INT21H汇编语言源程序书写格式 第五章汇编语言程序设计2.汇编语句的操作数(汇编语句的操作数(Operands)寄存器(Registers)常量(Constants)常数常数 字符串常量字符串常量 符号常量符号常量
11、数值表达式数值表达式二进制常数二进制常数十进制常数十进制常数八进制常数八进制常数 十六进制常数十六进制常数 算术运算符算术运算符逻辑运算符逻辑运算符关系运算符关系运算符汇编语言源程序书写格式 第五章汇编语言程序设计qq常数常数给出具体的数据。可以是数字常量或字符常量。给出具体的数据。可以是数字常量或字符常量。数字默认十进制,也可加数字默认十进制,也可加D D表示十进制数。如表示十进制数。如12341234D,1234D,1234 数字后加数字后加B B表示二进制数。表示二进制数。如如10101010B B 数字后加数字后加H H表示十六进制数。表示十六进制数。如如12341234H H 字符常
12、量,用单引号表示。字符常量,用单引号表示。如如12341234汇编时,用字符对应的汇编时,用字符对应的ASCIIASCII表示。如表示。如3131H,32H,33H,34HH,32H,33H,34H例例data1DB12,34,56data1DB12,34,56;十进制十进制data2DB12H,34H,56Hdata2DB12H,34H,56H;十六进制十六进制MOVAL,GMOVAL,G;字符字符stringDB1234stringDB1234;字符串字符串汇编语言源程序书写格式 第五章汇编语言程序设计 A A、B B、C C、D D、E E、F F开头的十六进制数前面加开头的十六进制数前
13、面加0 0,与与H H结尾的标识符区别。结尾的标识符区别。如如 寄存器名寄存器名AHAH、BHBH、CHCH、DHDH变量名变量名 abcdHabcdH 等等例movmovAL,0AHAL,0AHmovmovAL,AHAL,AHmovmovBX,0abcdHBX,0abcdH汇编语言源程序书写格式 第五章汇编语言程序设计五、表达式及表达式中的操作符五、表达式及表达式中的操作符 表达式表达式qq 由常量、标号、变量和一些操作符构成。由常量、标号、变量和一些操作符构成。qq 汇编程序对表达式进行运算后,得到一个确定的数值,汇编程序对表达式进行运算后,得到一个确定的数值,再把这个数值汇编到指令中。再
14、把这个数值汇编到指令中。qq 据表达式所表示的内容,分数字表达式、地址表达式。据表达式所表示的内容,分数字表达式、地址表达式。qq 表达式是指令或伪操作的操作数表达式是指令或伪操作的操作数;表达式中的操作符由汇编程序完成表达式中的操作符由汇编程序完成例例MOVAX,12-4;MOVAX,8;MOVAX,12-4;MOVAX,8;数字表达式数字表达式 LEABX,string+4;LEABX,string+4;地址表达式地址表达式 汇编语言源程序书写格式 第五章汇编语言程序设计表达式中的操作符表达式中的操作符qq有以下几类有以下几类:1.1.算术运算符算术运算符(+(+、-、*、/、MOD)MO
15、D)2.2.逻辑运算符逻辑运算符(ANDAND、OROR、NOTNOT、XOR)XOR)3.3.关系运算符关系运算符(EQEQ、NENE、GTGT、GEGE、LTLT、LE)LE)真:真:FFFFH;FFFFH;假假:0:04.4.数值返回操作符数值返回操作符(SEGSEG、OFFSET)OFFSET)5.5.类型操作类型操作(PTR)PTR)6.6.地址记数器地址记数器($)($)汇编语言源程序书写格式 第五章汇编语言程序设计例例:1.1.算术运算符算术运算符(+(+、-、*、/、MOD(MOD(取余数取余数)MOVAX,6*8MOVAX,48MOVAX,6*8MOVAX,482.2.逻辑运
16、算符逻辑运算符(ANDAND、OROR、NOTNOT、XOR)XOR)MOVAX,80hOR70hMOVAXMOVAX,80hOR70hMOVAX,0F0h0F0h3.3.关系运算符关系运算符(EQEQ、NENE、GTGT、GEGE、LTLT、LE)LE)真:真:FFFFH;FFFFH;假假:0:0MOVAX,1GE2MOVAX,0MOVAX,1GE2MOVAX,0汇编语言源程序书写格式 第五章汇编语言程序设计存储器操作数标识符标号标号(Label)Label)变量变量(Variable)Variable)分析运算符分析运算符OFFSETOFFSETSEGSEGTYPETYPESIZESIZE
17、LENGTH属性属性偏移地址偏移地址段地址段地址类型类型大小大小长度类型运算符类型运算符PTRPTR、THISTHIS等新的属性新的属性汇编语言源程序书写格式 第五章汇编语言程序设计1.1.数值返回操作符数值返回操作符(SEGSEG、OFFSETOFFSET、TYPE)TYPE)SEGSEG取符号地址的段地址取符号地址的段地址例例 MOVAX,SEGMOVAX,SEGyyyyOFFSETOFFSET取符号地址的偏移地址取符号地址的偏移地址例例 MOVBX,OFFSETMOVBX,OFFSETyyyyTYPETYPE取变量的类型取变量的类型见表见表5 51 1LENGTHLENGTH和和 SIZ
18、ESIZE 对用对用DUPDUP定义的,且定义的,且DUPDUP后括号里为单项数据的后括号里为单项数据的x x有:有:SIZEx=TYPEx*LENGTHxSIZEx=TYPEx*LENGTHx汇编语言源程序书写格式 第五章汇编语言程序设计例:假设数据段的首地址50000HA1DB24H,47H,0F3HA2DW4567H,0A00HA3DD0B1234098H,98765432HA4DW40HDUP(1)SEGOFFSETTYPELENGTH SIZEA1A2A3A4汇编语言源程序书写格式 第五章汇编语言程序设计例:假设数据段的首地址50000HA1DB24H,47H,0F3HA2DW456
19、7H,0A00HA3DD0B1234098H,98765432HA4DW40HDUP(1)SEGOFFSETTYPELENGTH SIZEA150000111A250003212A350007414A4500015240H80H汇编语言源程序书写格式第五章汇编语言程序设计2、属性操作符这类运算符为存储器操作数临时指定一个新的属性,而忽略当前属性,因此又称为属性修改运算符。PTR格式:类型PTR存储器地址表达式例:INCWORDPTRBXTHIS格式:THIS类型作用:THIS运算符功能与PTR类似,由它所生成的新的存储器操作数的段和偏移量两属性与下一个存储单元的段和偏移量相同,但类型由THIS
20、指定,例如:Z11EQUTHISWORDZ1DB20H,40H则变量Z11和Z1具有相同的段和偏移量属性,但Z11的类型为WORD,而Z1是属性为BYTE。汇编语言源程序书写格式第五章汇编语言程序设计一、数据定义及存储分配伪指令一、数据定义及存储分配伪指令格式:变量名DB/DW/DD/DQ/DT;注释DUP常用在数据定义伪指令中,其使用的格式为:变量名DB/DW/DD/DQ/DTDUP(表达式2);注释例:A1DB10,10H;定义两个字节A2DW10,10H;定义两个字A3DBAB;定义两个字节A4DWAB;定义一个字A5DB3DUP(1,2,3)见L1.ASM0A100A001000414
21、24241010203010203010203ARRAYDB20DUP(0,1,4DUP(2),5)共占有多少字节?140个个伪指令及其应用 第五章汇编语言程序设计等值(赋值)语句等值(赋值)语句EQU格式:符号名EQU表达式等号语句等号语句=格式:符号名=表达式注意:用EQU和=定义的符号不占存储单元。例:假设数据段的首地址50000HA1DB24H,47H,0F3HA2DW4567H,0A00HA3DD0B1234098H,98765432HL1EQU40HA4DWL1DUP(1)标号定义伪指令标号定义伪指令LABEL格式:变量名或标号名LABEL类型伪指令及其应用第五章汇编语言程序设计格
22、式:变量名或标号名变量名或标号名LABEL类型类型例:VAR1LABLEWORDVAR2DB20DUP(1)变量VAR1和VAR2具有相同的段基址和偏移量,但类型不同:VAR1是字型,VAR2是字节型。段定义伪指令段定义伪指令SEGMENT/ENDS格式:段名SEGMENT定位类型组合类型类别;段内语句序列段名ENDS定位类型定位类型规定了对该段的起始地址的要求,可以有以下四种选择:PAGE(页):其16进制地址最低2位为00H。PARA(节):其16进制地址最低1位为0H。该类型为系统的缺省值。WORD(字):该段从偶地址开始。BYTE(字节):组组合合类类型型表示该段与其它段之间的连接和定
23、位关系,是在连接时起作用的。可以有以下六种选择:NONE:该类型为系统的缺省值。PUBLIC、STACK、COMMON、AT表达式、MEMORY。类别类别是由编程者赋予该段的与段名不同的另一个名字信息,必须用单引号括起来。在连接时由连接程序将程序中所有类别相同的段组成一个段组。伪指令及其应用 第五章汇编语言程序设计过程定义伪指令过程定义伪指令定义子程序的格式为:过程名PROCNEAR/FARRET过程名ENDP程序结束伪指令程序结束伪指令END该语句为汇编语言源程序的最后一个语句,用以标志整个程序的结束,即告诉汇编程序,汇编到此结束,停止汇编工作。其中表达式的值必须是一个存储器地址,即程序中第
24、一条可执行指令的地址。其格式为:END标号程序开始伪指令程序开始伪指令ORG告诉汇编程序在它以后的程序段或数据块存放起点的偏移地址。其格式为:ORG表达式段寻址伪指令段寻址伪指令ASSUME该伪指令用来告诉汇编程序某个段是使用哪一个段寄存器。格式:ASSUME段寄存器名:段名,段寄存器名:段名,伪指令及其应用 第五章 汇编语言程序设计指令或语句指令或语句就是告诉计算机为完成某一计算步骤需要执行的操作。程序程序是为了求解某个问题所必须的完整的指令序列或语句串加上必要的数据。程序设计程序设计是编写程序的过程。当在设计一个程序时,应该考虑满足以下目标目标:1)程序的正确性。2)增强程序的可读性。3)
25、所写程序应该是结构化的,易修改,易调试,即程序的可维护性。程序设计的基本步骤基本步骤1.分析问题,建立模型例:Y=|X|Y=-X开始X=0Y=X结束Y=-X4分配存储空间和工作单元5编写程序6上机调试、运行程序2确定算法3根据算法画出程序流程图程序设计步骤 第五章 汇编语言程序设计程序的基本结构程序程序是指令(语句)的有序集合,是对系统任务处理步骤的描述。程序的执行是有一定顺序的,依据执行顺序执行顺序可将程序分为如下基本结构:顺序结构、分支(选择)结构、循环结构和子程序结构顺序结构、分支(选择)结构、循环结构和子程序结构。顺序结构顺序结构:是一种线性结构,这种结构的程序每执行一次,其中的语句或
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计 汇编语言 程序设计