汇编语言程序设计(自学)_第1页
汇编语言程序设计(自学)_第2页
汇编语言程序设计(自学)_第3页
汇编语言程序设计(自学)_第4页
汇编语言程序设计(自学)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、汇编语言程序设计(自学)一、设置自学型课程的目的一、设置自学型课程的目的二、自学型课程的教学形式及教师的作用二、自学型课程的教学形式及教师的作用三、本课程教学目标及学习方法三、本课程教学目标及学习方法四、本课程教学内容及要求四、本课程教学内容及要求 五、课程考核五、课程考核方法一、设置自学型课程的目的一、设置自学型课程的目的 培养独立学习新知识、新技能,发现问题、分析问题、解决问题的自主学习能力,适应科学技术和社会发展的要求。 二、自学型课程的教学形式及教师的作用二、自学型课程的教学形式及教师的作用 不进行课堂讲授,对自学课程提出学习要求,列出教材和参考书目,布置课程练习,进行辅导、答疑、讨论

2、。 本课程在指定教室进行答疑、讨论、辅导。 通过本课程的学习,掌握汇编语言指令系统的功通过本课程的学习,掌握汇编语言指令系统的功能、格式及寻址方式等基本概念的基础上,通过自能、格式及寻址方式等基本概念的基础上,通过自修及老师的指导,学习利用汇编语言进行程序设计,修及老师的指导,学习利用汇编语言进行程序设计,为后续的微型计算机接口技术等相关课程的学习提为后续的微型计算机接口技术等相关课程的学习提供扎实的基础供扎实的基础 。 通过仔细阅读教材及参考书,掌握汇编语言进通过仔细阅读教材及参考书,掌握汇编语言进行程序设计的方法,同时采用上机编程的形式对所行程序设计的方法,同时采用上机编程的形式对所学内容

3、进行练习,即采用理论与实践相结合的方法学内容进行练习,即采用理论与实践相结合的方法学习。学习。三、本课程教学目标及学习方法三、本课程教学目标及学习方法四、本课程教学内容及要求四、本课程教学内容及要求 n1、汇编语言程序的开发过程n2、顺序程序设计n3、分支程序设计n4、循环程序设计n5、子程序设计n6、系统功能子程序调用n7、汇编语言程序的调试1、汇编语言程序的开发过程、汇编语言程序的开发过程程序设计步骤1、分析问题,确定算法。2、选择程序设计语言。3、编制程序流程。4、正确、合理使用存储器和寄存器。5、编写程序。6、调试程序。2、顺序程序设计要求:掌握一个完整的汇编语言程序的结构框架。指令1

4、指令2指令n指令n+1 :例 9-1设在数据段中定义有三个变量X,Y, Z,请利用算术移位指令编写程序,计算出下式的值:(假设乘完的结果只有低16位有效):Z=10*(X+Y)源程序源程序: :; ;设置数据段设置数据段DATA SEGMENTDATA SEGMENT X DW 20H ; X DW 20H ;变量变量X X Y DW 12H ; Y DW 12H ;变量变量Y Y Z DW ? ; Z DW ? ;变量变量Z ZDATA ENDSDATA ENDS; ;设置堆栈段设置堆栈段STACK1 SEGMENT PARA STACKSTACK1 SEGMENT PARA STACK D

5、B 10H DUP(0) DB 10H DUP(0)STACK1 ENDS STACK1 ENDS ; ;设置代码段设置代码段CODE SEGMENTCODE SEGMENTASSUME CS: CODE, DS:DATAASSUME CS: CODE, DS:DATASTART:START: MOV AX, DATA MOV AX, DATA MOV DS, AX MOV DS, AX MOV AX, X MOV AX, X ADD AX, Y ADD AX, Y SAL AX, 1 SAL AX, 1 MOV BX, AX MOV BX, AX MOV CL, 2 MOV CL, 2 SA

6、L AX, CL SAL AX, CL ADD AX, BX ADD AX, BX MOV Z, AX MOV Z, AX MOV AH, 4CH MOV AH, 4CH INT 21H INT 21HCODE ENDSCODE ENDS END END STARTSTART3、分支程序设计条件满足?语句1语句2YN条件满足?语句YN条件满足?u分支程序的基本概念。u利用比较/测试分支结构实现程序设计。u利用分支表结构实现程序设计。重点重点:掌握分支程序的设计方法。难点难点:利用比较/测试方法实现分支程序设计、利用分支表结构实现分支程序设计。3、分支程序设计 学习程序设计过程中需要注意掌握转移

7、指令的运用。学习程序设计过程中需要注意掌握转移指令的运用。分支程序主要包括:分支程序主要包括:u两分支程序设计两分支程序设计u多分支程序设计多分支程序设计n条件转移法条件转移法n地址表法地址表法n跳转表法跳转表法4、循环程序设计u循环程序的基本结构循环程序的基本结构u循环程序的控制方法循环程序的控制方法u多重循环程序设计多重循环程序设计重点:重点:掌握循环程序的设计方法。掌握循环程序的设计方法。难点:难点:循环程序的控制方法:循环程序的控制方法: 计数控制法和条件控制法;计数控制法和条件控制法; 多重循环程序设计。多重循环程序设计。循环程序结构初始化部分工作部分修改部分循环结束结束处理部分YN

8、循环结束工作部分修改部分结束处理部分初始化部分初始化部分Y控制部分控制部分N循环程序结构1、初始化部分n设置地址指针、计数器初值2、工作部分3、修改部分4、控制部分n用计数控制循环n用条件控制循环5、结束处理部分循环控制方法1、用计数控制循环n使用计数器,达到计数器预定值,循环结束。要求循环次数已知。n计数器可以递增、递减。n可以选用寄存器、也可用存储单元。2、用条件控制循环n找出一个终止循环的条件,每循环一次,对条件进行一次检测。满足终止循环的条件,退出循环,否则继续。n通常选用条件转移指令来控制循环是否结束。n分清内外循环的任务和要求,划分内外循环中有规律变化的参数:地址指针、计数器。n确

9、定内外循环的控制方法和具体实施。3、多重循环程序设计循环控制方法5、 子程序设计u子程序设计方法子程序设计方法u子程序的参数传递子程序的参数传递u子程序的嵌套与递归子程序的嵌套与递归重点:重点:掌握子程序的设计方法;掌握子程序的设计方法; 主程序现场的保护与恢复。主程序现场的保护与恢复。难点:难点:主程序和子程序之间的参数传递方法:主程序和子程序之间的参数传递方法: 寄存器传递参数法、存储器传递参数法、地址寄存器传递参数法、存储器传递参数法、地址表传递参数法和堆栈传递参数法;表传递参数法和堆栈传递参数法; 子程序的嵌套与递归。子程序的嵌套与递归。程序基本结构n过程n主调过程(主程序)n被调过程

10、(子程序)查找程序字符输入串输入查找结果输出5、 子程序设计n过程定义n过程调用n过程返回需要掌握子程序设计方法1 1、适度地划分并确定子程序功能、适度地划分并确定子程序功能n具有独立功能的程序作为一个模块。具有独立功能的程序作为一个模块。n多次出现的程序段独立出来。多次出现的程序段独立出来。2 2、选择适当的参量传递途径、选择适当的参量传递途径寄存器传递、参数表传递、地址表传递、堆栈传递寄存器传递、参数表传递、地址表传递、堆栈传递3 3、信息的保存、信息的保存n在主程序中保存信息。在主程序中保存信息。n在子程序中保存信息。在子程序中保存信息。4 4、编写子程序的文字说明、编写子程序的文字说明

11、6、系统功能调用系统功能调用由OS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。系统功能调用有两种,一种称为DOS功能调用,另一种称为BIOS功能调用。应用程序外设硬件接口 BIOS DOS系统功能调用采用软中断指令 INT n (其中:n为中断类型码) (1)PUSHF,TF、IF清0,CS、IP入栈 (2)按中断类型码n,从中断向量表对应位置取出将要调用的功能子程序的入口地址CS,IP (3)功能子程序返回:IRETDOS功能调用调用方法:p 入口参数p 子程序编号送AHp INT 21HDOS功能调用基本I/O功能调用 功能 入口参数 出口参数 说明 键盘输入 A

12、H = 1AL=字符ASCII码字符显示控制台输入 AH = 8同1号无显示显示输出 AH = 2 DL = 字符ASCII码打印输出 AH = 5 DL = 字符ASCII码直接控制台 AH = 6 ZF=0,AL=字符ASCII码输入/输出 DL = 0FFH/字符码 ZF=1无键按下字符串输出 AH = 9 字符串须以$结束 DS:DX=串首址字符串输入 AH = 0AH首先定义缓冲区 (1) 从键盘输入一个字符(功能号功能号=1=1) MOV AH,MOV AH,1 1 ;等待按键 INT 21H INT 21H ;字符回显 AL (2) 从键盘输入一个字符,无显示(功能号功能号=8=

13、8) MOV AH,MOV AH,8 8 INT 21H INT 21H AL DOS功能调用 例:程序中有时需要用户对提示做出应答 GET_KEY: MOV AH,1;等待键入字符 INT 21H;结果在AL中 CMP AL,Y ;是Y? JZ YES ;是,转YES CMP AL,N ;是N? JZ NO ;是,转NO JMP GET_KEY;否则继续等待输入 YES: NO: (3) 在显示器上显示一个字符(功能号=2) MOV DL, MOV AH, 2 INT 21H 例:在显示器上显示一个字符A MOV DL, A ;或MOV DL, 41H MOV AH, 2 INT 21HDO

14、S功能调用(4) LOP:MOV DL,0FFH;键盘输入 MOV AH,6 INT 21H JZ LOP MOV DL,AL;屏幕输出 MOV AH,6 INT 21HDOS功能调用(5)显示字符串(功能号功能号=9) LEA DX, MOV AH, 9 INT 21H注意:被显示的字符串必须以注意:被显示的字符串必须以$结束结束。DOS功能调用DATA SEGMENT BUF DB HOW DO YOU DO?$ .DATA ENDS.MOV AX,DATAMOV DS,AX.MOV DX,OFFSET BUFMOV AH,9INT 21H. 例:显示一字符串(6)输入字符串(功能号功能号

15、=0AH) 此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。LEA DX, MOV AH, 0AHINT 21H DOS功能调用(预留的预留的N1个字节的存储单元个字节的存储单元) 0DHN2N1 N1: 缓冲区长度(最大键入字符数) N2: 实际键入的字符数(不包括回车符) 用户定义的输入字符串的缓冲区格式 DATA SEGMENT BUF DB 10;缓冲区长度 DB ?;实际输入个数 DB 10 DUP(?) ;存储空间DATA ENDS.MOV AX,DATAMOV DS,AX.LEA DX,BUFMOV AH,10INT 21H. 例:输入字符串DOS功能调用基本I/O功能

16、调用 功能 入口参数 出口参数 说明 设置日期 AH = 2BHAL=0或AL=0FFH均为二进制数 CX=年号 DH=月,DL=日读取日期 AH = 2AHCX=年号均为二进制数DH=月,DL=日设置时间 AH = 2DH CH=小时,CL=分AL=0或AL=0FFH均为二进制数 DH=秒,DL=百分秒读取时间 AH = 2CHCH=小时,CL=分均为二进制数DH=秒,DL=百分秒MOV CX,2008MOV DH,8MOV DL,8MOV AH,2BH ;设置日期INT 21H;2008.8.8MOV AH,2AH ;取得日期INT 21H;cx:dx=2008.8.8MOV YEAR,C

17、XMOV MONTH,DHMOV DAY,DLDOS功能调用(7)设置/读出日期MOV CX,090FHMOV DX,0200HMOV AH,2DH ;设置时间INT 21H;9点15分2秒MOV AH,2CH ;取得时间INT 21H;cx:dxMOV HOURS, CHMOV MINUTES, CLMOV SECONDS, DHDOS功能调用(8)设置/读出时间BIOS功能调用功能调用 BIOS调用通过多个软中断提供,调用方法为:MOV AH,INT BIOS中的几个主要中断类型如下:INT 10H屏幕显示INT 13H磁盘操作INT 14H串行口操作INT 16H键盘操作INT 17H打

18、印机操作每类中断由于包含许多子功能,调用时通过功能号指定。BIOS功能调用键盘输入16H号功能调用功能 出口参数 说明 AH=0 AL=字符的ASCII码从键盘读一个字符 AH=1 ZF=1表示无键可读判键盘是否有键可读 ZF=0表示有键可读AH=2 AL=功能键状态字节取特殊功能键当前状态BIOS功能调用打印输出17H号功能调用 功能 入口参数 出口参数 说明 AH=0 AL=字符代码打印一个字符 DX=打印机号AH=1 DX=打印机号初始化打印机AH=2 DX=打印机号AL=状态字节取打印机状态BIOS功能调用显示输出10H号功能调用 功能 入口参数 出口参数 说明 AH=0 AL=方式号

19、设置显示方式AH=1 CH=光标开始行号置光标类型 CL=光标结束行号AH=2 DH=行号,DL=列号置光标位置 BH=页号AH=3 BH=页号 DH=行号,DL=列号读光标位置 CX=当前光标大小AH=5 AL=页号选择当前显示页BIOS功能调用显示输出10H号功能调用 功能 入口参数 出口参数 说明向上滚屏 AH=6,AL=上滚行数,BH=空行属性 CH、CL=滚动左上角行列号 DH、DL=滚动右下角行列号向下滚屏 AH=7 其余同6读光标处 AH=8AL=字符字符和属性 BH=页号AH=属性将字符和属性 AH=9,AL=字符写到光标处 BH=页号, CX=个数 BL=字符属性/颜色将字符

20、写到 AH=0AH属性不变光标位置 其余同9编辑程序源程序 文件宏汇编程序 MASM目标程序文件语法有错?N链接程序 LINKYAB.ASM.OBJ.LST可执行 文件调试程序DEBUG有错吗?N结束YAB.EXE.MAP7、汇编语言程序的调试1 1、编辑源程序、编辑源程序 用DOS下的文本编辑器EDIT编写程序。C:EDIT Fibonacci.ASM (回车)2 2、产生目标文件、产生目标文件 对已经编辑好的.ASM文件,可以用宏汇编程序MASM进行汇编,汇编后生成二进制代码的目标程序。C:MASM Fibonacci.ASM(回车) MASM在汇编源程序时,产生三个文件。目标文件、列表文

21、件、交叉引用符号表文件(CRF文件)3 3、连接产生可执行文件、连接产生可执行文件 汇编程序生成的目标文件,必须经过连接程序连接后,才可以得到在计算机上运行的可执行程序。C:LINK Fibonacci;(回车)Win7下,C:ML Fibonacci.obj(回车) 连接程序连接后,可以产生三个文件。 可执行文件,清单文件、需要连接的库文件 4、运行程序C:Fibonacci(回车)DOS下使用DEBUG调试 1 1、进入与退出命令、进入与退出命令nDEBUG DEBUG 文件名文件名 参数表参数表 n如果需要退出如果需要退出DEBUGDEBUG状态,返回操作系统,可以使用状态,返回操作系统

22、,可以使用退出命令退出命令Q Q。2 2、显示命令、显示命令n显示寄存器内容显示寄存器内容RR命令命令n显示存储器内容显示存储器内容DD命令命令n反汇编命令反汇编命令UU命令命令3 3、修改命令、修改命令n汇编指令汇编指令AA命令命令n修改寄存器内容修改寄存器内容RR命令命令n修改存储单元内容修改存储单元内容E E 命令命令4 4、程序运行命令、程序运行命令n连续运行命令连续运行命令GG命令命令n跟踪运行命令跟踪运行命令TT命令命令n执行程序命令执行程序命令PP命令命令五、课程考核五、课程考核方法 课内实验主要是在掌握计算机硬件系统基本原理的基础上,通过Intel 8086汇编语言内容的学习,

23、进行汇编语言的上机编程,熟悉各种程序结构及DOS系统功能调用的使用方法。编号编号名名 称称内内 容容1 1分支程序结构编程实践分支程序结构编程实践编写、调试编写、调试1 12 2道典型分支程序结道典型分支程序结构设计题目构设计题目2 2多重循环程序结构编程实多重循环程序结构编程实践践编写、调试编写、调试1 12 2道典型多重循环程道典型多重循环程序结构设计题目序结构设计题目3 3子程序结构编程实践子程序结构编程实践编写、调试编写、调试1 12 2道典型子程序结构道典型子程序结构设计题目设计题目4 4DOSDOS功能调用编程实践功能调用编程实践编写、调试编写、调试1 12 2道典型道典型DOSD

24、OS功能调功能调用题目用题目5 5综合型程序结构编程实践综合型程序结构编程实践编写、调试编写、调试1 13 3道综合型程序结构道综合型程序结构设计题目设计题目练习题(每一部分2选1)分支程序设计:分支程序设计:1 1、编写程序,键入学生成绩(百分制),按、编写程序,键入学生成绩(百分制),按A A、B B、C C、D D显示在屏幕上。显示在屏幕上。2 2、编写一程序,比较两个字符串所含字符是否相等,如果相等,在屏幕、编写一程序,比较两个字符串所含字符是否相等,如果相等,在屏幕 上显示上显示“Y Y”,反之显示,反之显示“N N”。循环程序设计:循环程序设计:1 1、设有一段文字,编写一段程序查

25、找字母、设有一段文字,编写一段程序查找字母a a出现的次数,并显示在屏幕上。出现的次数,并显示在屏幕上。2 2、编写程序,求出、编写程序,求出100100以内既能被以内既能被2 2整除又能被整除又能被3 3整除的数,并显示在屏整除的数,并显示在屏 幕上。幕上。子程序设计:子程序设计:1 1、编写子程序,分别计算、编写子程序,分别计算100100以内所有奇数之和与所有偶数之和,并显示以内所有奇数之和与所有偶数之和,并显示 在屏幕上。在屏幕上。2 2、给定一个数组存放、给定一个数组存放5 5个小写字母,用地址表传递方法编写子程序,将其个小写字母,用地址表传递方法编写子程序,将其 转换成大写字母,并显示在屏幕上。转换成大写字母,并显示在屏幕上。DOSDOS功能调用:功能调用:1 1、在图形方式下,在屏幕中央绘制一个用、在图形方式下,在屏幕中央绘制一个用“* *”表示的等腰三角形。表示的等腰三角形。2 2、在图形方式下,在屏幕中央绘制一个用、在图形方式下,在屏幕中央绘制一个用“* *”表示的矩形。表示的矩形。综合题综合题(1、2、3选二,选二,4、5、6选选1)1 1、编写一个生成、编写一个生成ASCIIASCII码表的程序,并显示

温馨提示

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

最新文档

评论

0/150

提交评论