第6章汇编语言程序设计.ppt
《第6章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第6章汇编语言程序设计.ppt(107页珍藏版)》请在三一办公上搜索。
1、第6章 汇编语言程序设计,6.1汇编源程序的编程格式 汇编源程序有两种编程格式:一种格式只能生成扩展名为EXE的可执行文件,称为EXE文件的编程格式;另一种格式可以生成扩展名为COM的可执行文件,称为COM文件的编程格式。6.1.1 EXE文件的编程格式EXE文件的编程格式允许源程序使用多个逻辑段,在实模式下,每个逻辑段的目标块不超过64KB,适合于编写大型程序。,开 始,6.1.2 COM 文件的编程格式COM文件的编程格式必须必须符合以下规定:(1)源程序只允许使用一个逻辑段,即代码段,不允许设置堆栈段;(2)程序使用的数据,可以集中设置在代码段的开始或末尾;(3)在代码段偏移地址(有效地
2、址)为100H的单元,必须是程序的启动指令;(4)代码段目标小于64KB。,6.1.3EXE文件和COM文件的内存映像 EXE文件包括两部分:一部分为装入模块,另一部分为“重定位信息”。调入后生成PSP(程序段前缀)DOS自动给DS,ES,FS和GS赋值,使DS=ES=存放PSP的段基址,FS=GS=0,并使CS:IP用户程序的启动地址,SS:SP指向用户堆栈段的栈顶,在这以后,DOS才把控制权交给用户程序。COM文件没有重定位信息,因此比EXE文件的体积小的多。DOS装载COM文件时,也生成PSP,然后从偏移地址100H开始依次存放用户程序。DOS自动赋值使CS=DS=ES=SS=PSP段基
3、址,FS=GS=0,并使IP=100H,SP=FFFEH。,6.1.4 程序段前缀6.1.5返回DOS的其他方法对于COM文件有三种方法:(1)直接执行INT20H;(2)调用INT21H的0号功能。(3)执行RET指令对于EXE文件:(1)调用INT 21H的4CH功能(2)执行INT 20H,首先把执行过程包含在一个远过程中;其次在给DS赋值前,用3条指令把PSP首单元的物理地址压入栈顶,即:PUSH DS MOV AX,0 PUSH AX,最后程序在需要返回DOS的地方执行一条RET指令。6.1.6 源程序堆栈段的设置,对8086系列机来说,MS-DOS操作系统是最主要的操作系统。MS-
4、DOS操作系统除了具有较为完整的文件管理功能之外,同时还为各种应用程序、外围设备等提供软件接口。它由三部分组成:IO.SYS、MSDOS.SYS以及COMMAND.COM。DOS系统功能调用的方法一般可分为以下几步:设置所要调用功能的入口参数。在AH寄存器中存入所要调用功能的功能号。INT 21H指令自动转入中断子程序入口。相应中断子程序运行完毕,可按规定取得出口参数。,返回本节,6.2 DOS系统功能调用,6.2 常用的DOS系统功能调用,1单字符输入(1号调用)2单字符显示(2号调用)3打印输出(5号调用)4结束调用(4CH号调用)5显示字符串(9号调用)6字符串输入(10号调用),1单字
5、符输入(1号调用)格式:MOVAH,1INT21H功能:从键盘输入字符的ASCII码送入寄存器AL中,并送显示器显示。2单字符显示(2号调用)格式:MOV DL,待显示字符的ASCII码MOV AH,2INT 21H功能:将DL寄存器中的字符送显示器显示,如果DL中为CTRL+BREAK的ASCII码,则退出。,3打印输出(5号调用)格式:MOVDL,待打印字符的ASCII码MOVAH,5INT21H功能:将DL寄存器中的字符送打印机打印。4结束调用(4CH号调用)格式:MOVAH,4CH INT21H功能:终止当前程序并返回调用程序。,5显示字符串(9号调用)格式:LEADX,待显示字符串首
6、偏移地址MOVAH,9INT21H功能:将当前数据区中以结尾的字符串送显示器显示。6字符串输入(10号调用)格式:LEADX,缓冲区首偏移地址MOVAH,10INT21H功能:从键盘上输入一字符串到用户定义的输入缓冲区中,并送显示器显示。,DATASEGMENTSTRDB 0DH,0AH,Example of string display!DATAENDSSTACKSEGMENT STACKDB100 DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACK,【例3.25】若要在屏幕上显示字符串“Example of string dis
7、play!”,则程序如下:,BEGIN:MOVAX,DATAMOVDS,AXLEADX,STRMOVAH,9INT21HMOVAH,4CH INT21HCODEENDSENDBEGIN,返回本节,综合举例,【例3.27】已知一数据段中的数据为:DATASEGMENTADW MBUFDB AB,0DH,0AHCEQU 500HBDW 0FFAAHDDD BUFMDB 2DUP(1),2DUP(2,B)DATAENDS请画出该数据段数据存储的形式。,返回本章首页,该数据段在主存中的存储形式如左图所示。,DATASEGMENTNUMDB 01000101BBUFDB 0DH,0AH,(NUM)=ST
8、RDB 4 DUP(?)DATAENDSSTACKSEGMENT STACKDB200 DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODE,【例3.28】阅读下列程序,指出此程序所完成的功能以及在显示器上显示的内容。,START:MOVAX,DATA MOVDS,AX LEADI,STRMOVAL,NUM MOVCL,4SHRAL,CLORAL,30HMOVDI,ALINCDIMOVAL,NUM ANDAL,0FHORAL,30HMOVDI,AL,INCDIMOVBYTEPTR DI,HINCDIMOVBYTEPTR DI,LEAD
9、X,BUF MOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDSTART,DATASEGMENTINFO1DB0DH,0AH,INPUT STRING:INFO2DB0DH,0AH,OUTPUT STRING:BUFADB81DB?,【例3.29】从键盘上输入一串字符到输入缓冲区,然后将输入的字符串在显示器上以相反的顺序显示。,DB80 DUP(0)BUFBDB81 DUP(0)DATAENDSSTACKSEGMENTDB200 DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,D
10、ATAMOVDS,AX,LEADX,INFO1MOVAH,9;9号调用,显示输入提示信息INT21HLEADX,BUFAMOVAH,10;10号调用,键盘输入字符串到缓 冲区BUFAINT21HLEASI,BUFA+1 MOVCH,0;取字符长度CX MOVCL,SIADDSI,CX;SI 指向字符串尾部LEADI,BUFB;DI指向字符串变量BUFB,NEXT:MOVAL,SIMOVDI,ALDECSIINCDILOOPNEXTMOVBYTE PTR DI,LEADX,INFO2MOVAH,9;9号调用,显示输出提示信息INT21H,LEADX,BUFBMOVAH,9;反向显示字符串INT2
11、1HMOVAH,4CHINT21HCODEENDSENDSTART,返回本节,6.3 BIOS键盘输入功能调用调用模式:MOV AH,功能号设置入口参数INT n分析出口参数BIOS键盘输入功能使用INT 16H1 功能号00H:读取键入的一个字符,无回显,响应CTRL_C,无键入则等待。入口参数:无出口参数:AL=输入字符的ASCII码2 功能号01H:查询键盘缓冲区入口参数:无出口参数:Z=0,表示有键入,否则无键入,3 功能号02H:读取当前转换状态入口参数:无出口参数:AL=键盘状态字(P94)4 功能号10H:读扩展键盘,无回显,响应CTRL_C。入口参数:无出口参数:同00H5 功
12、能号11H:查询键盘缓冲区6 功能号12H:读取扩展键盘的转换状态。,6.4 文本方式BIOS屏幕功能调用6.4.1 显示器6.4.2 文本方式BIOS屏幕调用调用指令 INT 10H1 功能号00H:设置屏幕显示方式2功能号01H:设置光标形状3功能号02H:预置光标位置4功能号03H:读取光标的当前位置5功能号05H:设置当前显示页6功能号06H:窗口上滚7功能号07H:窗口下滚8功能号08H:读取光标所在位置的字符及其属性9功能号09H:从光标所在位置开始,显示若干个相同的字符,10功能号0AH:从光标所在位置开始,显示若干个相同的字符11功能号0EH:显示一个字符12功能号13H:显示
13、字符串,6.5 程序设计方法,1 概述2 顺序程序设计3 分支程序设计4 循环程序设计5 子程序设计6 模块化程序设计7 高级汇编语言技术,开 始,1 概述,(1)汇编语言程序设计的一般步骤(2)流程图,返回本章首页,程序设计方法,汇编语言程序设计的一般步骤,汇编语言程序设计一般有以下几个步骤:1分析问题,确定算法2绘制流程图3根据流程图编制程序4调试程序,返回本节,流程图,1流程图的概念流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。,2流程图符号表示(1)起止框:表示程序的开始和结束。,起止框,(2
14、)判断框,(3)处理框,(4)调用框,(5)指向线,(6)连接框,返回本节,2 顺序程序设计,下面举例说明顺序程序的设计。【例4.1】试编写一程序计算以下表达式的值。=(v-(*+-540)/x式中x、v均为有符号字数据。设、的值存放在字变量、V中,结果存放在双字变量之中,程序的流程图如图4.1所示。,返回本章首页,图4.1 顺序运算程序流程图,源程序如下:DATASEGMENTXDW200YDW100ZDW3000VDW10000WDW2 DUP(?)DATAENDSSTACKSEGMENT STACK DB 200 DUP(0)STACKENDSCODESEGMENTASSUME DS:D
15、ATA,CS:CODE,SS:STACK,START:MOVAX,DATAMOVDS,AX;DATAAXMOVAX,X IMULY;(X)*(Y)DX:AXMOVCX,AXMOVBX,DX;(DX:AX)(BX:CX)MOVAX,ZCWD;(Z)符号扩展ADDCX,AXADCBX,DX;(BX:CX)+(DX:AX)(BX:CX)SUBCX,540SBBBX,0;(BX:CX)-540(BX:CX)MOVAX,V,CWD;(V)符号扩展SUBAX,CXSBBDX,BX;(DX:AX)-(BX:CX)(DX:AX)IDIVX;(DX:AX)/XMOVW,AX;商WMOVW+2,DX;余数DXW+
16、2MOVAH,4CHINT21HCODEENDS;退出DOS 状态ENDSTART,【例4.2】,【例4.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下:,STACKSEGMENT STACKDB 200 DUP(0)STACKENDSDATASEGMENTTABDB 80,85,86,71,79,96 DB 83,56,32,66,78。84NO DB 10ENGLISTDB?DATAENDSCODESEGMENT,ASSUME DS:DATA,SS:STACK,CS:CODEBEGI
17、N:MOVAX,DATAMOVDS,AXLEABX,TAB MOVAL,NODELALXLATTABMOVENGLISH,ALMOVAH,4CHINT21HCODEENDSENDBEGIN,6.5 分支程序设计,(1)用条件转移指令实现程序分支(2)用跳转表实现多路分支,返回本章首页,(1)用条件转移指令实现程序分支,【例4.3】编写计算下面函数值的程序:1X0Y=0X=0-1X设输入数据为X、输出数据Y,且皆为字节变量。程序流程图如图4.2所示。程序如下:,DATASEGMENTX DB-10Y DB?DATAENDSSTACKSEGMENT STACK DB 200 DUP(0)STACK
18、ENDSCODESEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATA,MOVDS,AX CMPX,0;与0进行比较 JGEA1;X0转A1 MOVY,-1;X 0时,-1Y JMPEXITA1:JGA2;X0转A2 MOVY,0;X=0时,0Y JMPEXITA2:MOVY,1;X0,1Y EXIT:MOVAH,4CH INT21H CODE ENDS ENDSTART,MOVDS,AX CMPX,0;与0进行比较 JGEA1;X0转A1 MOVY,-1;X 0时,-1Y JMPEXITA1:JGA2;X0转A2 MOVY,0;X=0时,
19、0Y JMPEXITA2:MOVY,1;X0,1Y EXIT:MOVAH,4CH INT21H CODE ENDS ENDSTART,图4.2 分支运算程序流程图,【例4.4】,【例4.4】试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。设三个带符号数分别在三个字变量X、Y、Z中存储。程序流程图如图4.3所示,图4.3例4.4程序流程图,程序如下:STACSEGMENT STACK DB 200 DUP(0)STACKENDSDATASEGMENTX DW 00ABHY DW 5Z DW 200MAXDW?DATAENDSCODESEGMENT,ASSUME DS:DA
20、TA,SS:STACK,CS:CODE START:MOVAX,DATA MOVDS,AX MOVAX,X CMPAX,Y;XY?JGL1 MOVAX,Y;YZ?CMPAX,Z JGEXITL2:MOVAX,Z JMPEXIT,L1:CMPAX,Z;XZ?JLEL2EXIT:MOVMAX,AX MOVAH,4CH INT21HCODEENDS ENDSTART,返回本节,(2)用跳转表实现多路分支,【例4.5】设某程序有8路分支,试根据给定的N值(18),将程序的执行转移到其中的一路分支。程序流程如图4.4所示。,程序如下:DATASEGMENTTABDW P1,P2,P3,P4,P5,P6,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
链接地址:https://www.31ppt.com/p-4748025.html