汇编语言程序设计ppt课件_第1页
汇编语言程序设计ppt课件_第2页
汇编语言程序设计ppt课件_第3页
汇编语言程序设计ppt课件_第4页
汇编语言程序设计ppt课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

.,1,4.2.4过程定义伪指令PROC、ENDP,过程就是子程序。一个过程可以被其它程序所调用(用CALL指令),过程的最后一条指令一般是返回指令(RET)。过程定义伪指令的格式为PROCNEAR/FAR类型RETENDP注意:PROC和ENDP必须成对出现。,.,2,过程的类型有两种:NEAR表示段内调用(默认类型)FAR表示段间调用调用一个过程的格式为:CALL,.,3,4.2.5宏定义伪指令,宏指令的作用:如果需要多次使用同一个程序段,可以将这个程序段定义为一个”宏指令”,然后在需要时,可简单地用宏指令名来代替这个程序段。,宏指令的格式为:MACRO形参表ENDM,.,4,例:两个数之和的宏定义和宏调用。宏定义为:DADDMACROX,Y,ZMOVAX,XADDAX,YMOVZ,AXENDM,上面宏定义中,X、Y、Z是形式参数。调用宏DADD时可写为:DADDDATA1,DATA2,SUM上面宏调用中,DATA1,DATA2,SUM是实际参数,由它们替换定义中的X、Y、Z,即形实结合。,.,5,CALLDADD,RET,DADD:,CALLDADD,CALLDADD,DADDyy,DADDMACROxx,DADDyy,DADDyy,ENDM,相同,=,或,主程序+过程(子程序),主程序+宏定义,宏扩展,宏调用与过程(子程序)调用异同点示意图,.,6,宏调用与过程(子程序)调用异同点相同点:都是一次定义,多次调用。不同点:执行形式:宏命令伪指令由宏汇编程序在汇编过理中进行处理;而CALL、RET则是由CPU执行的指令。汇编结果:宏命令伪指令汇编后被展开。执行速度:宏命令执行速度较快(因无调用转移)占用内存:宏指令简化了源程序,但不能简化目标程序,并不节省内存单元;使用过程可以节省代码(源程序和目标程序)占用的内存空间。,.,7,宏展开:汇编程序会把宏调用按宏定义展开。例如:宏定义为:DISPLAYMACROstringLEADX,stringMOVAH,9INT21HENDM程序中宏调用:DISPLAYERROR_MESSAGEDISPLAYEXIT_MESSAGE汇编后的结果:(带有+号的指令为宏展开后的结果)+LEADX,ERROR_MESSAGE+MOVAH,9+INT21H+LEADX,EXIT_MESSAGE+MOVAH,9+INT21H,.,8,4.2.6汇编结束伪指令END,汇编语言源程序的最后,要加汇编结束伪指令END,以使汇编程序结束汇编。格式:END表达式END后跟的表达式通常就是程序第一条指令的标号,指示程序的启动地址(要执行的第一条指令的地址)。,.,9,汇编语言的一个实例:EXAM.ASM,列表为指令TITLESUBTTLPAGE连接伪指令PUBLICEXTRNINCLUDEGROUP等等,其它伪指令:,.,10,4.3DOS系统功能调用(高级调用),DOS系统功能调用的作用:系统功能调用由操作系统OS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。系统功能调用的分类:系统功能调用有两种,一种称为DOS功能调用,另一种称为BIOS功能调用。BIOS(基本输入输出系统)功能调用包括:系统测试、初始化引导、一部分中断矢量装入程序及外部设备的服务程序,它们都固化在系统主板的ROM中。它与系统硬件直接相关。参见P410-411附录C.1-2系统功能调用的实现方式:用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INTn来实现。DOS系统功能调用都是用软中断指令INT21H来实现的。它具有90多个子功能的中断服务程序,它们通过功能号AH来区分。它不依赖于具体的硬件系统。,.,11,INT2lH功能分类:大致可以分为四个方面,即为(1)设备管理(2)目录管理(3)文件管理(4)内存管理、存取时间、存取终端矢量、终止程序等。参见P411-415附录C.3,D0S系统功能调用的使用方法:AH功能号;设置该功能所要求的其他入口参数;执行INT21H指令;分析出口参数。,.,12,关于数据输入和输出我们这里只讨论键盘输入和显示输出,调用系统功能需要提供入口参数及所调用的功能号,调用结束返回结果。,1.DOS键盘功能调用,(1)从键盘输入一个字符(功能号=1)MOVAH,1INT21H,INT21H的几个最常用的功能,.,13,例:程序中有时需要用户对提示做出应答。GET_KEY:MOVAH,1;等待键入字符INT21H;结果在AL中CMPAL,Y;是Y?JZYES;是,转YESCMPAL,N;是N?JZNO;是,转NOJMPGET_KEY;否则继续等待输入YES:NO:,.,14,(2)输入字符串(功能号=0AH)此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。MOVAH,0AHLEADX,INT21H,(预留的N1个字节的存储单元),0DH,N2,N1,N1:缓冲区长度(最大键入字符数)N2:实际键入的字符数(不包括回车符),用户定义的输入字符串的缓冲区格式,.,15,若用户键入的字符数(包括回车)定义的N1,本功能调用将不再接收新的键入,且光标不再向右移动。例:设在数据段定义键盘缓冲区如下:STR1DB10,?,10DUP(?)调用DOS功能的0AH号功能的程序段为:LEADX,STR1MOVAH,0AHINT21H此程序段最多从键盘接收10个按键(包括回车)。,.,16,2.DOS显示功能调用,(1)在显示器上显示一个字符(功能号=2)MOVAH,2MOVDL,INT21H例:在显示器上显示一个字符AMOVAH,2MOVDL,A;或MOVDL,41HINT21H,.,17,MOVAH,9LEADX,INT21H注意:被显示的字符串必须以$结束。,(2)显示字符串(功能号=9),.,18,例:在屏幕上显示:HELLO,WORLD!;在数据段定义字符串:DATASEGMENTSTR1DBHELLO,WORLD!$DATAENDS;在代码段中进行显示输出MOVAH,9LEADX,STR1INT21H完整的程序:HELLO.ASM,.,19,BIOS功能调用(低级调用),定义:基本输入输出系统,是固化在EPROM中的一组实现基本输入输出功能的子程序。功能:系统测试程序、初始化引导程序、一部分中断矢量装入程序及外部设备的服务程序等。BIOS与系统硬件有直接的依赖关系。调用方法:BIOS调用通过多个软中断提供,具体的调用方法为:MOVAH,INT,.,20,BIOS中的几个主要中断类型如下:INT10H屏幕显示INT13H磁盘操作INT14H串行口操作INT16H键盘操作INT17H打印机操作每类中断由包含许多子功能,调用时通过功能号指定。BIOS功能调用说明见p416附录D。,.,21,BIOS中断程序处于DOS功能调用和硬件环境之间,和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对较低。在一些情况下既能选择DOS中断也能选择BIOS中断来执行同样的功能。例如,打印机输出一个字符的功能,可用DOS中断21H的功能5,也可用BIOS中断17H的功能0。因为BIOS比DOS更靠近硬件。一般情况下,尽可能地使用DOS功能,但在少数情况下必须使用BIOS功能。例如,BIOS中断17H的功能2为读打印机状态,DOS就没有等效的功能。因此,对BIOS和DOS调用的选择原则是,无法使用DOS功能调用或DOS没有提供而BIOS提供了功能的情况下可以考虑使用BIOS中断。,BIOS中断调用与DOS功能调用的比较,.,22,4.4汇编语言程序设计基础,4.4.1概述1.程序质量(自学)2.汇编语言程序设计的步骤:1-定义问题,分析问题2-建立数学模型,确定算法3-画出程序框图(流程图)4-分配内存工作单元和寄存器5-根据框图,编写源程序6-上机运行、调试程序。将源程序存成.ASM文件;对源程序汇编,生成.OBJ目标文件;把.OBJ文件连接成.EXE执行文件。3.源程序的基本结构:顺序(查表)、分支、循环、过程,.,23,(1)用方框表示工作框,框中用简明语言标明要完成的功能,(2)用菱形框表示判断框,框中标明比较、判断和条件,如何绘制程序框图(流程图)?,N,Y,?,.,24,(4)各框之间用直线连起来表示程序走向。,框中标明子程序名字(入口参数等),(3)用框表示调用子程序或过程。,流程图的例子FlowChart.doc,.,25,汇编语言上机过程:,Y,Y,Y,N,N,N,有错?,有错?,有错?,结束,汇编,输入(修改)源程序,连接,运行,查错,开始,用EDIT,NOTEPAD等任何文本编辑器。源程序存为.ASM文件,用MASM宏汇编程序进行汇编。汇编后生成.OBJ目标文件。命令格式:MASM;,用LINK连接程序进行连接。连接后生成.EXE可执行文件。命令格式:LINK;,用TD、DEBUG等调试程序进行调试。命令格式:TD,.,26,标号:,条件满足?,处理,4.4.2顺序程序(p175-176,自学)4.4.3分支程序,N,Y,IFTHEN结构,程序结构:测试/比较指令(TEST/CMP)条件转移指令(Jx标号)处理体标号:其他指令,.,27,程序结构:TEST/CMP指令Jx标号1处理体P1JMP标号2标号1:处理体P2标号2:其他指令,条件满足?,处理P1,处理P2,标号1:,标号2:,条件1,条件2,IFTHENELSE结构,.,28,标号1:,条件1成立?,P1,N,Y,CASE结构,程序结构:TEST/CMP指令(测试条件1)Jx标号1;不满足转标号1处理体P1JMP标号n+1标号1:TEST/CMP指令(测试条件2)Jx标号2;不满足转标号2处理体P2JMP标号n+1标号2:TEST/CMP指令(测试条件3)Jx标号3;不满足转标号3处理体P3JMP标号n+1标号3:TEST/CMP指令(测试条件4)标号n+1:(公共出口),条件2成立?,条件n成立?,Pn+1,标号2:,标号n:,标号n+1:,P2,Pn,N,N,Y,Y,例:P178,例4-14,统计成绩。流程图中虚线框内,.,29,4.4.4循环程序,1DOUNTIL结构先执行,再判断条件。工作部分至少执行一次。,初始化,循环体,循环控制,继续循环?,Y,N,.,30,2.DOWHILE结构先判断条件,再执行。工作部分有可能一次都不执行。,初始化,循环体,循环控制,继续循环?,Y,N,.,31,注意:循环可以嵌套(多重循环),但多个循环体之间不能交叉,控制条件不能混淆。例:P179例4-15,数据从大到小排序。冒泡法实例:3,7,2,8,68,7,6,3,2。内外两层循环;每轮内循环使一个最小的数沉底,因为最小的数沉底,下轮内循环就不用再比较最底下的数,所以内循环的循环次数每一轮比上一轮要逐次减1;外循环用于控制有多少轮内循环。若有n个数据,则外循环次数为n-1。,BSORT.ASM,.,32,掌握以下几点:调用子程序用CALL指令,返回调用程序用RET指令。子程序允许嵌套调用。进入子程序后首先要保护主程序的运行状态(标志位)和使用的寄存器内容(称为保护现场),退出子程序前要恢复现场。调用前要预先确定子程序中要使用哪些寄存器,并定义入口参数和出口参数。参数传递可利用寄存器、存储单元或堆栈(要用BP寻址)。,4.4.5子程序设计举例,.,33,例1:二进制数(0-F)转换成ASCII(0-F)的子程序。BIN2ASCPROC;要转换的数在AL的低四位;转换结果仍在AL中CMPAL,9JAA2FADDAL,30H;9,+37HDONE:RETBIN2ASCENDP调用方法:(在主程序中)MOVAL,0CHCALLBIN2ASC(AL中有0CH的ASCII码43H,C),.,34,例2.字符串处理程序设计此例取自p182例4-17。对字符串进行操作时,往往需要确定它的长度。通常字符串结束标志以CR或$作标志。所以可以用扫描CR或$的方法计算出串

温馨提示

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

评论

0/150

提交评论