如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
5.2汇编语言程序的设计思想5.2.1程序设计的基本概念●根据实际问题,要全面分析所提供的条件、要求和特点,从中分析找出其规律性,然后抽象出描述该问题的数学模型。●对有些比较简单的问题,不一定非要写出数学模型,但也要用文字的形式把问题尽量阐述清楚,明确要做的工作。起始框:四、安排程序的段结构、分配存储器空间5.2.3程序的基本结构一、顺序程序结构(简单程序)二、分支程序结构三、循环程序结构三、循环程序结构四、子程序结构(过程)5.3常用DOS功能调用5.3常用DOS功能调用常用的软中断命令5.3.1DOS功能调用方法功能号5.3.2常用DOS功能调用简要说明及应用一、键盘输入功能调用二、键盘输出功能调用二、键盘输出功能调用5.3.3实现返回操作系统的常用方法5.4汇编语言程序上机调试过程5.4.1汇编语言源程序的上机过程5.4.2调试程序DEBUG.COM★DEBUG程序对寄存器和标志位的初始化在调入DEBUG程序后,它把各寄存器和标志位置成以下状态:1.段寄存器(CS,DS,ES、SS))置于自由存储空间的底部,也就是DEBUG程序结束以后的第一个段。2.指令指针(IP)置为0100H。3.堆栈指针置于段的结尾处或装入程序的临时底部,取决于哪一个更低。4.余下的AX、BX、CX、DX、BP、SI和DD置为0。5.标志位都置为清除状态。6.默认的磁盘缓冲区置于代码段的80H。注意:若由DEBUG调入的程序具有扩展名.EXE,则DEBUG必须进行再分配,把段寄存器、堆找指针置为程序中所规定的值。★DEBUG的主要命令及功能(1)★DEBUG的主要命令及功能(2)5.5汇编语言程序设计例1:Y=[(X+8)×X+8]×X+6例1:Y=[(X+8)×X+8]×X+6例2:变量M为压缩BCD码;将其转换为相应二、查表程序程序流程图5.5.2分支结构程序设计一、简单的双分支程序设计DATASEGMENTMDW?DATAENDSCODESEGMENTASSUMECS:CODE,ASSUMEDS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,MMOVAX,[SI]ANDAX,AX;利用“与”对符号标志产生影响JNSDONE;SF=0,转移到DONENEGAX;SF=1,AX<0,AX求补DONE:MOV[SI],AXMOVAH,4CHINT21HCODEENDSENDSTART二、复杂的多分支程序设计2、转移表法(见例5-16)例5-15:0→BLDATASEGMENTXDB?YDB?DATAENDCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,X;X取到AL中CMPAL,0;AL中的内容和0比较JGEPLUS;大于等于0,转PLUSMOVBL,-1;否则为负数,-1送BLJMPEXIT;转到结束位置PLUS:JEZERO;AL中的内容是否为0,为0转ZEROMOVBL,1;否则为大于0,1送BLJMPEXIT;转到结束位置ZERO:MOVBL,0;0送BLEXIT:MOVY,BL;BL中的内容送Y单元MOVAH,4CHINT21H;程序结束CODEENDSENDSTART;汇编结束5.5.3循环结构程序设计5.5.3循环结构程序设计2.条件控制法[例5-20]计数控制法举例DATASEGMENTBUFDB-32,25,……COUNTEQU$—BUFMIDB0;正数个数PLDB0;负数个数DATAENDSCODESEGMENTASSUMEDS:DATAASSUMECS:CODESTA:MOVAX,DATAMOVDS,AXLEASI,BUFMOVCX,0MOVBL,0;计正数个数MOVDL,0;计负数个数DATASEGMENTSTRINGDB’Whereisa……way,$’流程图二、多重循环结构程序的设计“多重循环”结构二、子程序说明信息三、保护现场与恢复现场输入参数:执行子程序中需要一些数据(参数),因此在调用子程序时,要将这些参数传递给它。输出参数:子程序执行的结果(数据)。四、参数传递方法五、子程序的嵌套与递归六.子程序设计举例:六.子程序:Debug中标志位相应的提示符实验二:流程图实验二:实验三:DOS功能调用——大小写字母显示a实验三:DOS功能调用——大小写字母显示b实验三:DOS功能调用——成绩显示DATASEGMENTBUFFDB67,………SDB4DUP(0)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVD