第5章 汇编程序设计基本方法精选文档.ppt
《第5章 汇编程序设计基本方法精选文档.ppt》由会员分享,可在线阅读,更多相关《第5章 汇编程序设计基本方法精选文档.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 汇编程序设计基本方法本讲稿第一页,共五十六页前面几章主要介绍了指令系统中的各种指令,这些指令是前面几章主要介绍了指令系统中的各种指令,这些指令是编写汇编程序的工具。本章将学习编写汇编程序。编写汇编程序的工具。本章将学习编写汇编程序。序言:序言:(1)分析问题,明确要求;分析问题,明确要求;(2)建立数学模型:即将解决问题的方法用数学语言表达出来建立数学模型:即将解决问题的方法用数学语言表达出来(3)确定算法:即转化为计算机解法;确定算法:即转化为计算机解法;(4)画出程序流程图;画出程序流程图;(5)编码,调试;编码,调试;(6)整理资料,投入使用。整理资料,投入使用。汇编程序设计基本
2、过程:汇编程序设计基本过程:汇编程序设计特点:汇编程序设计特点:模块化、结构化模块化、结构化本讲稿第二页,共五十六页本章学习要求本章学习要求1 1、掌握三种结构程序的设计方法,领会结构化、掌握三种结构程序的设计方法,领会结构化程序设计的思想。程序设计的思想。3 3、掌握几种、掌握几种DOSDOS功能调用,了解功能调用,了解BIOSBIOS功能调用,能功能调用,能从功能调用表中查找到满足自己要求的从功能调用表中查找到满足自己要求的DOSDOS功能并给功能并给出正确的调用参数。出正确的调用参数。2 2、掌握子程序设计和调用方法。、掌握子程序设计和调用方法。本讲稿第三页,共五十六页5.1 5.1 汇
3、编语言程序结构汇编语言程序结构分支结构分支结构 子程序结构子程序结构复合结构:多种程序结构的组合复合结构:多种程序结构的组合 顺序结构顺序结构 循环结构循环结构本讲稿第四页,共五十六页一、顺序结构程序设计一、顺序结构程序设计例:例:例:例: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,24
4、ADD 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+
5、2单元单元单元单元本讲稿第五页,共五十六页二、循环结构程序设计二、循环结构程序设计 循环结构:循环结构:包括包括当型当型和和直到型直到型两种。两种。WHILE 结构结构 DO-UNTIL 结构结构控制条件控制条件初始化初始化循环体循环体YN控制条件控制条件初始化初始化循环体循环体YN本讲稿第六页,共五十六页 循环类型:循环类型:循环结构的组成部分:循环结构的组成部分:初始化部分:初始化部分:设置循环的初始状态。设置循环的初始状态。类似类似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 单重循环单重循环 嵌套循环嵌套循环(多重循环多重循环):即循环结构内又有循环即循环结构内又有循环本讲稿第七页,共五十六页 四条循环控制指令:四条循环控制指令:循环指令:循环指令:LOOP OPR 循环判断条件:循环判断条件:(CX)0 为零或相等时循环指令:为零或相等时循环指令:LOOPZ/LOOPE OPR 循环判断条件:循环判断条件:ZF=1 且且(CX)0 不为零或不相
7、等时循环指令:不为零或不相等时循环指令:LOOPNZ(LOOPNE)OPR 循环判断条件:循环判断条件:ZF=0 且且(CX)0LOOP OPR DEC CX JNZ OPR因此,用跳转指令也能实现循环因此,用跳转指令也能实现循环本讲稿第八页,共五十六页 单重循环程序举例单重循环程序举例例例例例:试试试试编编编编制制制制一一一一个个个个程程程程序序序序把把把把BXBXBXBX寄寄寄寄存存存存器器器器中中中中的的的的二二二二进进进进制制制制数数数数以以以以十十十十六六六六进进进进制制制制数数数数的的的的形形形形式式式式显显显显示示示示在屏幕上。在屏幕上。在屏幕上。在屏幕上。分析:分析:BXBX1
8、234本讲稿第九页,共五十六页画流程图:画流程图:本讲稿第十页,共五十六页ASCII码表码表本讲稿第十一页,共五十六页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 pus
9、h ax ;0偏移地址入栈偏移地址入栈 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本讲稿第十二页,共五十六页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
11、 endsprogram endsendend本讲稿第十三页,共五十六页例例例例:试试试试编编编编制制制制一一一一程程程程序序序序实实实实现现现现从从从从键键键键盘盘盘盘输输输输入入入入一一一一行行行行字字字字符符符符,要要要要求求求求第第第第一一一一个个个个键键键键入入入入的的的的字字字字符符符符必必必必须须须须是是是是空空空空格格格格符符符符,如如如如不不不不是是是是,则则则则退退退退出出出出程程程程序序序序;如如如如是是是是,则则则则开开开开始始始始接接接接收收收收键键键键入入入入的的的的字字字字符符符符并并并并顺顺顺顺序序序序存存存存放放放放在在在在首首首首地地地地址址址址为为为为BU
12、FFERBUFFER的的的的缓缓缓缓冲冲冲冲区区区区中中中中(空空空空格格格格符符符符不不不不存存存存入入入入),直直直直到到到到接接接接收到第二个空格符时退出程序。收到第二个空格符时退出程序。收到第二个空格符时退出程序。收到第二个空格符时退出程序。本讲稿第十四页,共五十六页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 c
13、s:Prognam,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本讲稿第十五页,共五十六页n
14、ext:mov ah,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
15、exit jz exit 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本讲稿第十六页,共五十六页多重循环程序举例多重循环程序举例例例例例:有有有有一一一一个个个个首首首首地地地地址址址址为为为为A A的的的的字字字字类类类类型型型型数数数数组组组组,试试试试编编编编制制制制程程程程序序序序使使使使该该该
16、该数数数数组组组组中中中中的的的的数数数数按按按按从小到大排序。设数组中的元素为从小到大排序。设数组中的元素为从小到大排序。设数组中的元素为从小到大排序。设数组中的元素为3232,8585,1616,1515,8 8序号 地址 数比 较 遍 数12341 A 322 A+2 853 A+4 164 A+6 155 A+8 8321615885161583285158163285815163285冒泡法排序算法冒泡法排序算法本讲稿第十七页,共五十六页 mov cx,5 mov cx,5 ;元素个数元素个数 dec cx dec cx ;比较遍数比较遍数Loop1Loop1:mov di,cx m
17、ov di,cx ;比较次数比较次数 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、,共五十六页三、分支结构程序设计三、分支结构程序设计(选择结构程序设计选择结构程序设计)选择结构:选择结构:程序中存在判断,并根据判断结果转向不同程序中存在判断,并根据判断结果转向不同 的处理的处理 选择结构包括了选择结构包括了二路分支二路分支和和多路分支多路分支?case 1 case 2 二路分支二路分支 IF-ELSE case 1 case 2 case n多路分支多路分支 SWITCH实现多路分支结构的方法:实现多路分支结构的方法:跳转表法跳转表法关键字法关键字法本讲稿第十九页,共五十六页1、无条件转移指令、无条件转移指令 JMP2、条件转移指令条件转移指令 JZ/JNZ、JE/JN
19、E、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ 控制转移指令:控制转移指令:本讲稿第二十页,共五十六页例:写一程序,例:写一程序,例:写一程序,例:写一程序,从键盘输入一位数字,判断其奇偶性,若为从键盘输入一位数字,判断其奇偶性,若为从键盘输入一位数字,判断其奇偶性,若为从键盘输入一位数字,判断其奇偶性,若为奇数,在屏幕上输出字符串奇数,在屏幕上输出字符串奇数,在屏幕上输出字符串奇数,在屏幕上输出字符串“It is odd!”“It is odd!”;否则输出;否则输出;否则输出;否则输出“It is“It is even
20、!”even!”DATA SEGMENT ;定义数据段 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本讲稿第二十一页,共五十六页 MOV AH,01H ;调用1号DOS功能,从键盘上读入一个 ;字符,并将该字符回显在屏幕上 INT 21H CLC RCR AL,1 JNC EVN MOV DX,O
21、FFSET STRING1 ;将字符串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本讲稿第二十二页,共五十六页例:写一程序,由用户输入三个单字节无符号数且存放于例:写一程序,由用户输入三个单字节无符号数且存放于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=_本讲稿第二十三页,共五十六页DATA SEGMENTMSG1 DB Enter the first value(0-9):,$MSG2 DB 0DH,0AH,Enter the second value(0-9):
23、,$MSG3 DB 0DH,0AH,Enter 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本讲稿第二十四页,共五十六页 INT 21HMOV BL,AL
24、 MOV DX,OFFSET MSG2 ;读取第二个数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本讲稿第二十五页,共五十六页 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 21
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 汇编程序设计基本方法精选文档 汇编程序 设计 基本 方法 精选 文档
限制150内