中国高校课件下载中心 》 教学资源 》 大学文库

中国地质大学(武汉):《汇编语言程序设计 Assembly Program Design》课程教学资源(课件讲稿)第五章 汇编程序设计

文档信息
资源类别:文库
文档格式:PDF
文档页数:86
文件大小:599.87KB
团购合买:点击进入团购
内容简介
5.1 顺序结构程序设计 5.2 分支结构程序设计 5.3 循环结构程序设计 5.4 子程序设计 5.5 模块化程序设计 5.6 常用Dos中断调用
刷新页面文档预览

第5章汇编语言程序设计 5.1顺序结构程序设计 5.2分支结构程序设计 5.3循环结构程序设计 5.4子程序设计 5.5模块化程序设计 5.6常用D0s中断调用

第5章 汇编语言程序设计 5.1 顺序结构程序设计 5.2分支结构程序设计 5.3循环结构程序设计 5.4子程序设计 5.5模块化程序设计 5.6常用Dos中断调用 1

汇编语言程序设计的基本过程,可以分为以下几步: 1.分析问题,明确要求。 2.建立数学模型。 3.确定算法。 4.画出程序的流程图。 5.编写程序,上机调试。 6.整理资料,投入使用。 汇编语言程序设计,应采用模块化和结构化的设计方法。 888 2

汇编语言程序设计的基本过程,可以分为以下几步: 1.分析问题,明确要求。 2.建立数学模型 。 3.确定算法。 4.画出程序的流程图 。 5.编写程序,上机调试。 6.整理资料,投入使用 。 汇编语言程序设计 汇编语言程序设计,应采用模块化和结构化的设 应采用模块化和结构化的设计方法。 2

5.1顺序结构程序设计 顺序结构程序是指完全按先后顺序逐条执行指令序列的程序,● 既不跳转也不循环,从头到尾一条一条执行语句。单独的 顺序结构程序完成的功能相对简单,很多情况下都是顺序、 分支、循环、子程序结构相结合,这样的程序可以具有更 大的功能。如图5.1所示。 开始→语句1→ ..>语句n>结束 见课本图5.1顺序结构程序流程图

5.1 顺序结构程序设计 顺序结构程序是指完全按先后顺序逐条执行指令序列的程序, 既不跳转也不循环,从头到尾一条一条执行语句。单独的 顺序结构程序完成的功能相对简单,很多情况下都是顺序 、 分支、循环、子程序结构相结合,这样的程序可以具有更 大的功能。如图5.1所示。 开始 Æ语句 1 Æ ….. Æ语句 n Æ结束 见课本图5.1 顺序结构程序流程图 3

例题5.1 键盘输入任一按键,用十进制输出相应按键的ASCII值 分析:问题的求解并不复杂,首先从键盘接收一个 按键,键的ASCII值一定在0到255之间,最多是十 进制的3位数。作为整数是不能直接输出的,应先 把这个值除以100,得到商是百位数字,再把刚才 的余数除以10,商是十位数字,余数是个位数字, 把这3个数字分别加上30H,则转换成相应的ASCII 码,在回车换行后依次输出

例题5.1 键盘输入任一按键,用十进制输出相应按键的ASCII值。 分析:问题的求解并不复杂,首先从键盘接收一个 按键,键的ASCII值一定在0到255之间,最多是十 进制的3位数。作为整数是不能直接输出的 作为整数是不能直接输出的,应先 把这个值除以100,得到商是百位数字,再把刚才 的余数除以10,商是十位数字,余数是个位数字 余数是个位数字, 把这3个数字分别加上30H,则转换成相应的ASCII 码,在回车换行后依次输出。 4

CODE SEGMENT ADD AH,30H ASSUME CS:CODE MOV BX,AX;AX存放十位 START:MOV AH,1 数字和个位数字 NT21H;读入一个按键 MOV AH,2 MOV AH,0;AX保存按键的 MOV DL,13 ASC INT 21H ;输出回车 MOV BL,100 MOV DL,10 DVBL;ASCI除以100, INT 21H ;输出换行 取百位数字 MOV DL,CL MOV CL,AL;CL存放百位 INT 21H 数字 ;输出百位数字 MOV DL,BL ADD CL,30H;CL存放百位 数字的ASCⅡ INT 21H ;输出十位数字 MOV AL,AH MOV BL,BH MOV AH,0 INT 21H ;输出个位数字 MOV BL,10 MOV AH,4CH DIV BL ;ASCⅡ除以10, INT 21H 取十位数字 CODE ENDS ADD AL,30H END START ●

CODE SEGMENT ADD AH, 30H ASSUME CS:CODE START: MOV AH, 1 INT 21H ;读入 一个按键 , MOV BX, AX ;AX存放十位 数字和个位数字 MOV AH, 2 INT 21H ;读入 个按键 MOV AH, 0 ;AX保存按键的 ASCII MOV BL 100 , MOV DL, 13 INT 21H ;输出回车 MOV BL, 100 MOV DL 10 DIV BL ;ASCII除以100, 取百位数字 MOV CL AL ;CL存放百位 MOV DL, 10 INT 21H ;输出换行 MOV DL, CL MOV CL, AL ;CL存放百位 INT 21H ;输出百位数字 数字 ADD CL, 30H ;CL存放百位 数字的 ASCII INT 21H ;输出百位数字 MOV DL, BL INT 21H ;输出十位数字 OBB 数字的MOV AL, AH MOV AH, 0 MOV BL 10 M OV BL, B H INT 21H ;输出个位数字 MOV AH, 4CH MOV BL, 10 DIV BL ;ASCII除以10, 取十位数字 ADD AL 30H INT 21H CODE ENDS ADD AL, 30H END START 5

●● 例5.2编写程序,计算Z=((W-X)/10*Y)的平方值,R为相除所得余 数,其中W,X,Y均为八位有符号二进制数。 ● 分析:这是一个简单的算术运算问题,编程之前首先根据运算对 象分配存储单元,然后针对运算对象选择操作指令。注意Z变量的 数据类型。 DATA SEGMENT MOV AL,X CBW W DB-128 MOV BX,AX X DB 127 MOV AL,W Y DB-100 CBW SUB AX,BX R DBO MOV BL,10 Z DD0 IDIV BL DATA ENDS MOVR,AH IMUL Y CODE SEGMENT IMUL AX ASSUME MOV WORD PTRZ,AX CS:CODEDS:DATA.SS:STACK MOV WORD PTR Z+2,DX BEGIN:MOV AX,DATA MOV AH,4CH INT 21H MOV DS,AX CODE ENDS ●● END BEGIN

例5.2 编写程序,计算Z=((W-X)/10*Y)的平方值,R为相除所得余 数,其中W,X,Y均为八位有符号二进制数 均为八位有符号二进制数 。 分析:这是一个简单的算术运算问题,编程之前首先根据运算对 象分配存储单元,然后针对运算对象选择操作指令。注意Z变量的 数据类型 。 DATA SEGMENT W DB -128 MOV AL,X CBW MOV BX AX W DB 128 X DB 127 Y DB -100 MOV BX,AX MOV AL,W CBW SUB AX BX R DB 0 Z DD 0 DATA ENDS SUB AX,BX MOV BL,10 IDIV BL DATA ENDS MOV R AH CODE SEGMENT ASSUME MOV R,AH IMUL Y IMUL AX MOV WORD PTR Z,AX CS:CODE,DS:DATA,SS:STACK BEGIN: MOV AX,DATA MOV WORD PTR Z,AX MOV WORD PTR Z+2,DX MOV AH,4CH INT 21H MOV DS, AX CODE ENDS END BEGIN 6

5.2分支结构程序设计 ●● 在程序中,往往需要对不同的情况或条件做出不同的处理,这样 的程序就不再是简单的顺序结构,而要采用分支结构。分支程 序结构可以有两种基本形式,即二路分支结构和多路分支结构, 如图5.2所示。 条 件 条 古- (a)二路分支结构 (b)多路分支结构 图5.2分支结构程序流程图

5.2 分支结构程序设计 在程序中,往往需要对不同的情况或条件做出不同的处理,这样 的程序就不再是简单的顺序结构,而要采用分支结构。分支程 序结构可以有两种基本形式,即二路分支结构和多路分支结构, 如图5.2所示。 条件 条件 …… (a)二路分支结构 (b)多路分支结构 图5.2 分支结构程序流程图 7

由图可知,这两种结构都只有一个入口和一个出口。。 不论哪一种形式,它们的共同特点是:运行方向 是向前的,在某一种确定的条件下,只能执行多 个分支中的一个分支。 分支程序常常利用比较指令和条件转移指令来实现。 80

由图可知,这两种结构都只有一个入口和一个出口。 不论哪一种形式,它们的共同特点是:运行方向 是向前的,在某一种确定的条件下,只能执行多 个分支中的一个分支。 分支程序常常利用比较指令和条件转移指令来实现。 8

5.2.1二路分支 例题5.3从键盘输入一位数字,判断其奇偶性, 并在屏幕输出一个标志,若为奇数,则输出1,否 则输出0。 分析:判断键入的一位数字的ASCII码的最低位是 否为1,若为1,则是奇数,否则是偶数。输入采 用D0S中断的1号子功能调用,键入的一位数字的 ASCII码放进AL中,此时只需将最低位移入状态寄 存器的CF标志位,然后对CF进行判断,即可确定 输入数字的奇偶性,输出采用D0S中断的2号子功 能调用。 889 9

5.2.1二路分支 例题5.3 从键盘输入一位数字 从键盘输入一位数字,判断其奇偶性, 并在屏幕输出一个标志,若为奇数,则输出1,否 则输出0。 分析:判断键入的一位数字的ASCII码的最低位是 否为1,若为1,则是奇数,否则是偶数。输入采 用DOS中断的1号子功能调用,键入的一位数字的 ASCII码放进AL中,此时只需将最低位移入状态寄 此时只需将最低位移入状态寄 存器的CF标志位,然后对CF进行判断,即可确定 输入数字的奇偶性 输入数字的奇偶性,输出采用DOS中断的2号子功 能调用。 9

程序如下 JMP DISP CODE SEGMENT EVN:MOV AL,30H ASSUME CS:CODE ;偶数,AL←一0的ASCI码 BEGIN:MOV AH,01H MOV BL,AL ;调用DOS中断的1号子功能 DISP:MOV AH,O2H: INT 21H 调用DOS中断的2号子功能,输出字符 ;AL←-键入数字ASCII MOV DL,OAH;输出换行 CLC INT 21H ;CF清O MOV DL,ODH;输出回车 RCR AL,1 INT 21H ● ;AL最低位移入CF MOV DL,BL;输出标志字符 JNC EVN INT 21H ;根据CF的状态,判断输入数字的 MOV AH,4CH;返回DOS 奇偶性 INT 21H MOV AL,31H CODE ENDS ;奇数,AL<-1的ASCⅡ码 END BEGIN 10

JMP DISP 程序如下 CODE SEGMENT ASSUME CS:CODE JMP DISP EVN:MOV AL, 30H ;偶数,AL←0的ASCII码 BEGIN:MOV AH, 01H ;调 用DOS中断的1号子功能 INT 21H MOV BL, AL DISP:MOV AH, O2H : INT 21H 调用DOS中断的2号子功能,输出字符 ;AL←键入数字ASCII CLC 调用DOS中断的2号子功能,输出字符 MOV DL, 0AH ;输出换行 INT 21H ;CF清0 输出回车 RCR AL, 1 ;AL最低位移入CF MOV DL, 0DH ;输出回车 INT 21H ;AL最低位移入CF MOV DL, BL ;输出标志字符 JNC EVN ;根据CF的状态,判断输入数字的 奇偶性 INT 21H MOV AH, 4CH ;返回DOS INT 21H MOV AL, 31H ;奇数,AL←1的ASCII码 INT 21H CODE ENDS END BEGIN 10

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档