您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 汇编语言程序设计(自学).
汇编语言程序设计(自学)一、设置自学型课程的目的二、自学型课程的教学形式及教师的作用三、本课程教学目标及学习方法四、本课程教学内容及要求五、课程考核方法一、设置自学型课程的目的培养独立学习新知识、新技能,发现问题、分析问题、解决问题的自主学习能力,适应科学技术和社会发展的要求。二、自学型课程的教学形式及教师的作用不进行课堂讲授,对自学课程提出学习要求,列出教材和参考书目,布置课程练习,进行辅导、答疑、讨论。本课程在指定教室进行答疑、讨论、辅导。通过本课程的学习,掌握汇编语言指令系统的功能、格式及寻址方式等基本概念的基础上,通过自修及老师的指导,学习利用汇编语言进行程序设计,为后续的微型计算机接口技术等相关课程的学习提供扎实的基础。通过仔细阅读教材及参考书,掌握汇编语言进行程序设计的方法,同时采用上机编程的形式对所学内容进行练习,即采用理论与实践相结合的方法学习。三、本课程教学目标及学习方法四、本课程教学内容及要求1、汇编语言程序的开发过程2、顺序程序设计3、分支程序设计4、循环程序设计5、子程序设计6、系统功能子程序调用7、汇编语言程序的调试1、汇编语言程序的开发过程程序设计步骤1、分析问题,确定算法。2、选择程序设计语言。3、编制程序流程。4、正确、合理使用存储器和寄存器。5、编写程序。6、调试程序。2、顺序程序设计要求:掌握一个完整的汇编语言程序的结构框架。指令1指令2指令n指令n+1:例9-1设在数据段中定义有三个变量X,Y,Z,请利用算术移位指令编写程序,计算出下式的值:(假设乘完的结果只有低16位有效):Z=10*(X+Y)源程序:;设置数据段DATASEGMENTXDW20H;变量XYDW12H;变量YZDW?;变量ZDATAENDS;设置堆栈段STACK1SEGMENTPARASTACKDB10HDUP(0)STACK1ENDS;设置代码段CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,XADDAX,YSALAX,1MOVBX,AXMOVCL,2SALAX,CLADDAX,BXMOVZ,AXMOVAH,4CHINT21HCODEENDSENDSTART3、分支程序设计条件满足?语句1语句2YN条件满足?语句YN条件满足?分支程序的基本概念。利用比较/测试分支结构实现程序设计。利用分支表结构实现程序设计。重点:掌握分支程序的设计方法。难点:利用比较/测试方法实现分支程序设计、利用分支表结构实现分支程序设计。3、分支程序设计学习程序设计过程中需要注意掌握转移指令的运用。分支程序主要包括:两分支程序设计多分支程序设计条件转移法地址表法跳转表法4、循环程序设计循环程序的基本结构循环程序的控制方法多重循环程序设计重点:掌握循环程序的设计方法。难点:循环程序的控制方法:计数控制法和条件控制法;多重循环程序设计。循环程序结构初始化部分工作部分修改部分循环结束结束处理部分YN循环结束工作部分修改部分结束处理部分初始化部分初始化部分Y控制部分控制部分N循环程序结构1、初始化部分设置地址指针、计数器初值2、工作部分3、修改部分4、控制部分用计数控制循环用条件控制循环5、结束处理部分循环控制方法1、用计数控制循环使用计数器,达到计数器预定值,循环结束。要求循环次数已知。计数器可以递增、递减。可以选用寄存器、也可用存储单元。2、用条件控制循环找出一个终止循环的条件,每循环一次,对条件进行一次检测。满足终止循环的条件,退出循环,否则继续。通常选用条件转移指令来控制循环是否结束。分清内外循环的任务和要求,划分内外循环中有规律变化的参数:地址指针、计数器。确定内外循环的控制方法和具体实施。3、多重循环程序设计循环控制方法5、子程序设计子程序设计方法子程序的参数传递子程序的嵌套与递归重点:掌握子程序的设计方法;主程序现场的保护与恢复。难点:主程序和子程序之间的参数传递方法:寄存器传递参数法、存储器传递参数法、地址表传递参数法和堆栈传递参数法;子程序的嵌套与递归。程序基本结构过程主调过程(主程序)被调过程(子程序)查找程序字符输入串输入查找结果输出5、子程序设计过程定义过程调用过程返回需要掌握子程序设计方法1、适度地划分并确定子程序功能具有独立功能的程序作为一个模块。多次出现的程序段独立出来。2、选择适当的参量传递途径寄存器传递、参数表传递、地址表传递、堆栈传递3、信息的保存在主程序中保存信息。在子程序中保存信息。4、编写子程序的文字说明6、系统功能调用系统功能调用——由OS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。系统功能调用有两种,一种称为DOS功能调用,另一种称为BIOS功能调用。应用程序外设硬件接口BIOSDOS系统功能调用采用软中断指令INTn(其中:n为中断类型码)(1)PUSHF,TF、IF清0,CS、IP入栈(2)按中断类型码n,从中断向量表对应位置取出将要调用的功能子程序的入口地址CS,IP(3)功能子程序返回:IRETDOS功能调用调用方法:入口参数子程序编号送AHINT21HDOS功能调用基本I/O功能调用功能入口参数出口参数说明键盘输入AH=1AL=字符ASCII码字符显示控制台输入AH=8同1号无显示显示输出AH=2DL=字符ASCII码打印输出AH=5DL=字符ASCII码直接控制台AH=6ZF=0,AL=字符ASCII码输入/输出DL=0FFH/字符码ZF=1无键按下字符串输出AH=9字符串须以‘$’结束DS:DX=串首址字符串输入AH=0AH首先定义缓冲区(1)从键盘输入一个字符(功能号=1)MOVAH,1;等待按键INT21H;字符回显AL中有键入的字符(2)从键盘输入一个字符,无显示(功能号=8)MOVAH,8INT21HAL中有键入的字符DOS功能调用例:程序中有时需要用户对提示做出应答GET_KEY:MOVAH,1;等待键入字符INT21H;结果在AL中CMPAL,’Y’;是’Y’?JZYES;是,转YESCMPAL,’N’;是’N’?JZNO;是,转NOJMPGET_KEY;否则继续等待输入YES:……NO:…(3)在显示器上显示一个字符(功能号=2)MOVDL,要显示的字符MOVAH,2INT21H例:在显示器上显示一个字符‘A’MOVDL,’A’;或MOVDL,41HMOVAH,2INT21HDOS功能调用(4)LOP:MOVDL,0FFH;键盘输入MOVAH,6INT21HJZLOPMOVDL,AL;屏幕输出MOVAH,6INT21HDOS功能调用(5)显示字符串(功能号=9)LEADX,字符串MOVAH,9INT21H注意:被显示的字符串必须以’$’结束。DOS功能调用DATASEGMENTBUFDB‘HOWDOYOUDO?$’...DATAENDS...MOVAX,DATAMOVDS,AX...MOVDX,OFFSETBUFMOVAH,9INT21H...例:显示一字符串(6)输入字符串(功能号=0AH)此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。LEADX,字符串缓冲区首地址MOVAH,0AHINT21HDOS功能调用(预留的N1个字节的存储单元)0DHN2N1N1:缓冲区长度(最大键入字符数)N2:实际键入的字符数(不包括回车符)用户定义的输入字符串的缓冲区格式DATASEGMENTBUFDB10;缓冲区长度DB?;实际输入个数DB10DUP(?);存储空间DATAENDS...MOVAX,DATAMOVDS,AX...LEADX,BUFMOVAH,10INT21H...例:输入字符串DOS功能调用基本I/O功能调用功能入口参数出口参数说明设置日期AH=2BHAL=0或AL=0FFH均为二进制数CX=年号DH=月,DL=日读取日期AH=2AHCX=年号均为二进制数DH=月,DL=日设置时间AH=2DHCH=小时,CL=分AL=0或AL=0FFH均为二进制数DH=秒,DL=百分秒读取时间AH=2CHCH=小时,CL=分均为二进制数DH=秒,DL=百分秒MOVCX,2008MOVDH,8MOVDL,8MOVAH,2BH;设置日期INT21H;2008.8.8MOVAH,2AH;取得日期INT21H;cx:dx=2008.8.8MOVYEAR,CXMOVMONTH,DHMOVDAY,DLDOS功能调用(7)设置/读出日期MOVCX,090FHMOVDX,0200HMOVAH,2DH;设置时间INT21H;9点15分2秒MOVAH,2CH;取得时间INT21H;cx:dxMOVHOURS,CHMOVMINUTES,CLMOVSECONDS,DHDOS功能调用(8)设置/读出时间BIOS功能调用BIOS调用通过多个软中断提供,调用方法为:MOVAH,功能号设置入口参数,一般将参数放在寄存器中INT中断类型BIOS中的几个主要中断类型如下:INT10H——屏幕显示INT13H——磁盘操作INT14H——串行口操作INT16H——键盘操作INT17H——打印机操作每类中断由于包含许多子功能,调用时通过功能号指定。BIOS功能调用键盘输入——16H号功能调用功能出口参数说明AH=0AL=字符的ASCII码从键盘读一个字符AH=1ZF=1表示无键可读判键盘是否有键可读ZF=0表示有键可读AH=2AL=功能键状态字节取特殊功能键当前状态BIOS功能调用打印输出——17H号功能调用功能入口参数出口参数说明AH=0AL=字符代码打印一个字符DX=打印机号AH=1DX=打印机号初始化打印机AH=2DX=打印机号AL=状态字节取打印机状态BIOS功能调用显示输出——10H号功能调用功能入口参数出口参数说明AH=0AL=方式号设置显示方式AH=1CH=光标开始行号置光标类型CL=光标结束行号AH=2DH=行号,DL=列号置光标位置BH=页号AH=3BH=页号DH=行号,DL=列号读光标位置CX=当前光标大小AH=5AL=页号选择当前显示页BIOS功能调用显示输出——10H号功能调用功能入口参数出口参数说明向上滚屏AH=6,AL=上滚行数,BH=空行属性CH、CL=滚动左上角行列号DH、DL=滚动右下角行列号向下滚屏AH=7其余同6读光标处AH=8AL=字符字符和属性BH=页号AH=属性将字符和属性AH=9,AL=字符写到光标处BH=页号,CX=个数BL=字符属性/颜色将字符写到AH=0AH属性不变光标位置其余同9编辑程序源程序文件宏汇编程序MASM目标程序文件语法有错?N链接程序LINKYAB.ASM.OBJ.LST可执行文件调试程序DEBUG有错吗?N结束YAB.EXE.MAP7、汇编语言程序的调试1、编辑源程序用DOS下的文本编辑器EDIT编写程序。C:\EDITFibonacci.ASM(回车)2、产生目标文件对已经编辑好的.ASM文件,可以用宏汇编程序MASM进行汇编,汇编后生成二进制代码的目标程序。C:\MASMFibonacci.ASM(回车)MASM在汇编源程序时,产生三个文件。目标文件、列表文件、交叉引用符号表文件(CRF文件)3、连接产生可执行文件汇编程序生成的目标文件,必须经过连接程序连接后,才可以得到在计算机上运行的可执行程序。C:\LINKFibonacci;(回车)[Win7下,C:\MLFibonacci.obj(回车)]连接程序连接后,可以产生三个文件。可执行文件,清单文件、需要连接的库文件4、运行程序C:\Fibonacci(回车)DOS下使用DEBUG调试1、进入与退出命令DEBUG文件名[参数表]如果需要退出DEBUG状态,返回操作系统,可以使用退出命令Q。2、显示命令显示寄存器内容——R命令显示存储器内容——D命令反汇编命令——U命令3、修改命令汇编指令——A命令修改寄存器内容——R命令修改存储单元内容—
本文标题:汇编语言程序设计(自学).
链接地址:https://www.777doc.com/doc-2279437 .html