汇编语言程序设计(自学)-2013420

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

汇编语言程序设计(自学)一、设置自学型课程的目的二、自学型课程的教学形式及教师的作用三、本课程教学目标及学习方法四、本课程教学内容及要求五、课程考核方法一、设置自学型课程的目的培养独立学习新知识、新技能,发现问题、分析问题、解决问题的自主学习能力,适应科学技术和社会发展的要求。二、自学型课程的教学形式及教师的作用不进行课堂讲授,对自学课程提出学习要求,列出教材和参考书目,布置和批改课程作业,进行辅导、答疑、质疑,组织学生讨论,分析总结和组织课程考核等工作。本课程讨论采用网上(教育在线)和指定教室两种方式进行答疑辅导,通过本课程的学习,掌握汇编语言指令系统的功能、格式及寻址方式等基本概念的基础上,通过自修及老师的指导,学习利用汇编语言进行程序设计,为后续的微型计算机接口技术等相关课程的学习提供扎实的基础。通过仔细阅读教材及参考书,掌握汇编语言进行程序设计的方法,同时采用上机编程的形式对所学内容进行练习,即采用理论与实践相结合的方法学习。三、本课程教学目标及学习方法四、本课程教学内容及要求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,请利用算术移位指令编写程序,计算出下式的值: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功能调用调用方法:入口参数子程序编号送AHINT21HDOS功能调用基本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)MOVDL,0FFH;键盘输入MOVAH,6INT21HMOVDL,24H;屏幕输出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,1999MOVDH,5MOVDL,20MOVAH,2BH;设置日期INT21H;1999.5.20MOVAH,2AH;取得日期INT21H;cx:dx=1999.5.20MOVYEAR,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(回车)连接程序连接后,可以产生三个文件。可执行文件,清单文件、需要连接的库文件4、运行程序C:\Fibonacci(回车)DOS下使用DEBUG调试1、进入与退出命令DEBUG文件名[参数表]如果需要退出DEBUG状态,返回操作系统,可以使用退出命令Q。2、显示命令显示寄存器内容——R命令显示存储器内容——D命令反汇编命令——U命令3、修改命令汇编指令——A命令修改寄存器内容——R命令修改存储单元内容——E命令4、程序运行命令连续运行命令——G命令

1 / 45
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功