第5章 汇编程序设计基本方法精选PPT.ppt
《第5章 汇编程序设计基本方法精选PPT.ppt》由会员分享,可在线阅读,更多相关《第5章 汇编程序设计基本方法精选PPT.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 汇编程序设计基本方法第1页,本讲稿共56页前面几章主要介绍了指令系统中的各种指令,这些指令是前面几章主要介绍了指令系统中的各种指令,这些指令是编写汇编程序的工具。本章将学习编写汇编程序。编写汇编程序的工具。本章将学习编写汇编程序。序言:序言:(1)分析问题,明确要求;分析问题,明确要求;(2)建立数学模型:即将解决问题的方法用数学语言表达出来建立数学模型:即将解决问题的方法用数学语言表达出来(3)确定算法:即转化为计算机解法;确定算法:即转化为计算机解法;(4)画出程序流程图;画出程序流程图;(5)编码,调试;编码,调试;(6)整理资料,投入使用。整理资料,投入使用。汇编程序设计基本过
2、程:汇编程序设计基本过程:汇编程序设计特点:汇编程序设计特点:模块化、结构化模块化、结构化第2页,本讲稿共56页本章学习要求本章学习要求1 1、掌握三种结构程序的设计方法,领会结构化、掌握三种结构程序的设计方法,领会结构化程序设计的思想。程序设计的思想。3 3、掌握几种、掌握几种DOSDOS功能调用,了解功能调用,了解BIOSBIOS功能调用,功能调用,能从功能调用表中查找到满足自己要求的能从功能调用表中查找到满足自己要求的DOSDOS功功能并给出正确的调用参数。能并给出正确的调用参数。2 2、掌握子程序设计和调用方法。、掌握子程序设计和调用方法。第3页,本讲稿共56页5.1 5.1 汇编语言
3、程序结构汇编语言程序结构分支结构分支结构 子程序结构子程序结构复合结构:多种程序结构的组合复合结构:多种程序结构的组合 顺序结构顺序结构 循环结构循环结构第4页,本讲稿共56页一、顺序结构程序设计一、顺序结构程序设计例:例:例:例:MOV AX,XMOV AX,XMOV AX,XMOV AX,XMOV DX,X+2MOV DX,X+2MOV DX,X+2MOV DX,X+2ADD AX,YADD AX,YADD AX,YADD AX,YADC DX,Y+2 ;ADC DX,Y+2 ;ADC DX,Y+2 ;ADC DX,Y+2 ;?ADD AX,24ADD AX,24ADD AX,24ADD
4、AX,24ADC DX,0 ;x+y+24ADC DX,0 ;x+y+24ADC DX,0 ;x+y+24ADC DX,0 ;x+y+24SUB AX,ZSUB AX,ZSUB AX,ZSUB AX,ZSBB DX,Z+2 ;x+y+24-zSBB DX,Z+2 ;x+y+24-zSBB DX,Z+2 ;x+y+24-zSBB DX,Z+2 ;x+y+24-zMOV W,AXMOV W,AXMOV W,AXMOV W,AXMOV W+2,DX ;MOV W+2,DX ;MOV W+2,DX ;MOV W+2,DX ;结果存入结果存入结果存入结果存入W,W+2W,W+2W,W+2W,W+2单元单
5、元单元单元第5页,本讲稿共56页二、循环结构程序设计二、循环结构程序设计 循环结构:循环结构:包括包括当型当型和和直到型直到型两种。两种。WHILE 结构结构 DO-UNTIL 结构结构控制条件控制条件初始化初始化循环体循环体YN控制条件控制条件初始化初始化循环体循环体YN第6页,本讲稿共56页 循环类型:循环类型:循环结构的组成部分:循环结构的组成部分:初始化部分:初始化部分:设置循环的初始状态。设置循环的初始状态。类似类似C语言语言for(int i=1;i10;i+)中的中的int i=1 循环体部分:循环体部分:循环工作的主体部分。循环工作的主体部分。调整部分:调整部分:调整循环的次数
6、。调整循环的次数。类似类似C语言语言for(int i=1;i10;i+)中的中的i+控制部分:控制部分:控制循环的结束。控制循环的结束。类似类似C语言语言for(int i=1;i10;i+)中的中的i10 单重循环单重循环 嵌套循环嵌套循环(多重循环多重循环):即循环结构内又有循环即循环结构内又有循环第7页,本讲稿共56页 四条循环控制指令:四条循环控制指令:循环指令:循环指令:LOOP OPR 循环判断条件:循环判断条件:(CX)0 为零或相等时循环指令:为零或相等时循环指令:LOOPZ/LOOPE OPR 循环判断条件:循环判断条件:ZF=1 且且(CX)0 不为零或不相等时循环指令:
7、不为零或不相等时循环指令:LOOPNZ(LOOPNE)OPR 循环判断条件:循环判断条件:ZF=0 且且(CX)0LOOP OPR DEC CX JNZ OPR因此,用跳转指令也能实现循环因此,用跳转指令也能实现循环第8页,本讲稿共56页 单重循环程序举例单重循环程序举例例例例例:试试试试编编编编制制制制一一一一个个个个程程程程序序序序把把把把BXBXBXBX寄寄寄寄存存存存器器器器中中中中的的的的二二二二进进进进制制制制数数数数以以以以十十十十六六六六进进进进制制制制数数数数的的的的形形形形式显示在屏幕上。式显示在屏幕上。式显示在屏幕上。式显示在屏幕上。分析:分析:BXBX1234第9页,本
8、讲稿共56页画流程图:画流程图:第10页,本讲稿共56页ASCII码表码表第11页,本讲稿共56页program segment ;define code segmentprogram segment ;define code segmentmain proc farmain proc far assume cs:program assume cs:programStart:push ds ;save old data segmentStart:push ds ;save old data segment sub ax,ax sub ax,ax push ax ;0 push ax ;0偏移地
9、址入栈偏移地址入栈 mov ch,4 ;number of digitsmov ch,4 ;number of digitsrotate:mov cl,4 ;set count to 4 bitsrotate:mov cl,4 ;set count to 4 bits rol bx,cl rol bx,cl mov al,bl mov al,bl and al,0fh ;and al,0fh ;提取出低提取出低4 4位位 add al,30h add al,30h ;09 ASCII 30H39H;09 ASCII 30H39H cmp al,3ah cmp al,3ah ;判断是否是大于;判
10、断是否是大于9 9 jl printit jl printit add al,7h add al,7h ;AF ASCII 41H46H;AF ASCII 41H46H第12页,本讲稿共56页printit:mov dl,al ;printit:mov dl,al ;调用调用DOSDOS功能的入口参数功能的入口参数 mov ah,2 mov ah,2 int 21h int 21h dec ch dec ch ;判断是否已显示了;判断是否已显示了4 4个数字个数字 jnz rotate jnz rotate ret retmain endpmain endpprogram endsprogra
11、m endsendend第13页,本讲稿共56页例例例例:试试试试编编编编制制制制一一一一程程程程序序序序实实实实现现现现从从从从键键键键盘盘盘盘输输输输入入入入一一一一行行行行字字字字符符符符,要要要要求求求求第第第第一一一一个个个个键键键键入入入入的的的的字字字字符符符符必必必必须须须须是是是是空空空空格格格格符符符符,如如如如不不不不是是是是,则则则则退退退退出出出出程程程程序序序序;如如如如是是是是,则则则则开开开开始始始始接接接接收收收收键键键键入入入入的的的的字字字字符符符符并并并并顺顺顺顺序序序序存存存存放放放放在在在在首首首首地地地地址址址址为为为为BUFFERBUFFER的的
12、的的缓缓缓缓冲冲冲冲区区区区中中中中(空空空空格格格格符符符符不不不不存存存存入入入入),直到接收到第二个空格符时退出程序。,直到接收到第二个空格符时退出程序。,直到接收到第二个空格符时退出程序。,直到接收到第二个空格符时退出程序。第14页,本讲稿共56页Data segmentData segment buffer db 80 dup(?)buffer db 80 dup(?)flag db?flag db?Data endsData endsPrognam SegmentPrognam Segment assume cs:Prognam,ds:Data assume cs:Prognam,
13、ds:Datastart:start:push ds ;set up stack for reture push ds ;set up stack for reture sub ax,ax sub ax,ax push ax push ax mov ax,Data mov ax,Data mov ds,ax mov ds,ax;main part of program goes here;main part of program goes here lea bx,buffer lea bx,buffer mov flag,0 mov flag,0第15页,本讲稿共56页next:mov ah,
14、01 ;next:mov ah,01 ;调用调用DOS 1DOS 1号子功能号子功能 int 21h ;int 21h ;从键盘接收一个字符从键盘接收一个字符 test flag,01h test flag,01h jnz follow ;jnz follow ;判断是否是第一个字符判断是否是第一个字符 cmp al,20h ;cmp al,20h ;判断是否是空格符判断是否是空格符 jnz exit jnz exit mov flag,1 mov flag,1 jmp next jmp nextfollow:cmp al,20hfollow:cmp al,20h jz exit jz exi
15、t mov bx,al ;mov bx,al ;置入缓冲区置入缓冲区 inc bx inc bx jmp next jmp nextexit:ret ;return to DOSexit:ret ;return to DOSmain endpmain endpPrognam endsPrognam endsend startend start第16页,本讲稿共56页多重循环程序举例多重循环程序举例例例例例:有有有有一一一一个个个个首首首首地地地地址址址址为为为为A A的的的的字字字字类类类类型型型型数数数数组组组组,试试试试编编编编制制制制程程程程序序序序使使使使该该该该数数数数组组组组中中中
16、中的的的的数按从小到大排序。设数组中的元素为数按从小到大排序。设数组中的元素为数按从小到大排序。设数组中的元素为数按从小到大排序。设数组中的元素为3232,8585,1616,1515,8 8序号 地址 数比 较 遍 数12341 A 322 A+2 853 A+4 164 A+6 155 A+8 8321615885161583285158163285815163285冒泡法排序算法冒泡法排序算法第17页,本讲稿共56页 mov cx,5 mov cx,5 ;元素个数元素个数 dec cx dec cx ;比较遍数比较遍数Loop1Loop1:mov di,cx mov di,cx ;比较次
17、数比较次数 mov bx,0mov bx,0Loop2Loop2:mov ax,Abx mov ax,Abx ;相邻两数相邻两数 cmp ax,Abx+2 cmp ax,Abx+2 ;比较比较 jle continuejle continue xchg ax,Abx+2 xchg ax,Abx+2 ;交换位置交换位置 mov Abx,axmov Abx,axcontinue:continue:add bx,2 add bx,2 loop loop2 loop loop2 mov cx,di mov cx,di loop loop1 loop loop1 第18页,本讲稿共56页三、分支结构程序
18、设计三、分支结构程序设计(选择结构程序设计选择结构程序设计)选择结构:选择结构:程序中存在判断,并根据判断结果转向不同程序中存在判断,并根据判断结果转向不同 的处理的处理 选择结构包括了选择结构包括了二路分支二路分支和和多路分支多路分支?case 1 case 2 二路分支二路分支 IF-ELSE case 1 case 2 case n多路分支多路分支 SWITCH实现多路分支结构的方法:实现多路分支结构的方法:跳转表法跳转表法关键字法关键字法第19页,本讲稿共56页1、无条件转移指令、无条件转移指令 JMP2、条件转移指令条件转移指令 JZ/JNZ、JE/JNE、JS/JNS、JO/JNO
19、、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ 控制转移指令:控制转移指令:第20页,本讲稿共56页例:写一程序,例:写一程序,例:写一程序,例:写一程序,从键盘输入一位数字,判断其奇偶性,若为奇数,从键盘输入一位数字,判断其奇偶性,若为奇数,从键盘输入一位数字,判断其奇偶性,若为奇数,从键盘输入一位数字,判断其奇偶性,若为奇数,在屏幕上输出字符串在屏幕上输出字符串在屏幕上输出字符串在屏幕上输出字符串“It is odd!”“It is odd!”;否则输出;否则输出;否则输出;否则输出“It is even!”“It is even!”DATA SE
20、GMENT ;定义数据段 STRING1 DB IT IS ODD!,$STRING2 DB IT IS EVEN!,$DATA ENDSCODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA ;ASSUME伪指令,说明段与 ;段寄存器之间的对应关系START:MOV AX,DATA ;实现段与段寄存器之间的对应 ;关系 MOV DS,AX第21页,本讲稿共56页 MOV AH,01H ;调用1号DOS功能,从键盘上读入一个 ;字符,并将该字符回显在屏幕上 INT 21H CLC RCR AL,1 JNC EVN MOV DX,OFFSET STRING1 ;将字
21、符串Sting1的偏移地址 ;赋给DX CALL DISPMESSEVN:MOV DX,OFFSET STRING2 CALL DISPMESS DISPMESS PROC ;定义一个过程,用于输出字符串 MOV AH,9 ;调用9号子功能 INT 21H ;返回DOS MOV AH,4CH ;结束程序 INT 21HDISPMESS ENDPCODE ENDS END START第22页,本讲稿共56页例:写一程序,由用户输入三个单字节无符号数且存放于例:写一程序,由用户输入三个单字节无符号数且存放于BUFFER开始的缓冲区中,用户每输入一位数前屏幕显示:开始的缓冲区中,用户每输入一位数前屏
22、幕显示:Enter the first value(0-9):_ Enter the second value(0-9):_ Enter the third value(0-9):_程序将这三个数按从大到小排序。排完序后,显示如下程序将这三个数按从大到小排序。排完序后,显示如下 After sorting.Num1=_ Num2=_ Num3=_第23页,本讲稿共56页DATA SEGMENTMSG1 DB Enter the first value(0-9):,$MSG2 DB 0DH,0AH,Enter the second value(0-9):,$MSG3 DB 0DH,0AH,Ent
23、er the third value(0-9):,$MSG4 DB 0DH,0AH,After sorting.,$NUM1 DB 0DH,0AH,Num1=,$NUM2 DB 0DH,0AH,Num1=,$NUM3 DB 0DH,0AH,Num1=,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MSG1 ;读取第一个数MOV AH,9INT 21HMOV AH,01H第24页,本讲稿共56页 INT 21HMOV BL,AL MOV DX,OFFSET MSG2 ;读取
24、第二个数MOV AH,9INT 21HMOV AH,01HINT 21HMOV CL,AL MOV DX,OFFSET MSG3 ;读取第三个数MOV AH,9INT 21HMOV AH,01HINT 21HMOV BH,AL CMP BL,CL第25页,本讲稿共56页 JAE NEXT1 ;等价于JNBXCHG BL,CLNEXT1:CMP BL,BHJAE NEXT2XCHG BL,BHNEXT2:CMP CL,BHJAE DISPLAYXCHG CL,BHDISPLAY:MOV DX,OFFSET MSG4 MOV AH,9 INT 21H MOV DX,OFFSET NUM1 MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 汇编程序设计基本方法精选PPT 汇编程序 设计 基本 方法 精选 PPT
限制150内