收藏 分销(赏)

汇编程序设计基本方法.pptx

上传人:天**** 文档编号:4224636 上传时间:2024-08-26 格式:PPTX 页数:56 大小:873.40KB
下载 相关 举报
汇编程序设计基本方法.pptx_第1页
第1页 / 共56页
汇编程序设计基本方法.pptx_第2页
第2页 / 共56页
汇编程序设计基本方法.pptx_第3页
第3页 / 共56页
汇编程序设计基本方法.pptx_第4页
第4页 / 共56页
汇编程序设计基本方法.pptx_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 5.汇编程序设计基本方法汇编程序设计基本方法5.1 汇编语言程序结构汇编语言程序结构 5.2 子程序设计与调用子程序设计与调用5.3 DOS功能调用功能调用 (补充补充)汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 前面几章主要介绍了指令系统中的各种指令,这些指前面几章主要介绍了指令系统中的各种指令,这些指令是编写汇编程序的工具。本章将学习编写汇编程序。令是编写汇编程序的工具。本章将学习编写汇编程序。序言:序言:(

2、1)分析问题,明确要求;分析问题,明确要求;(2)建立数学模型:即将解决问题的方法用数学语言表达出来建立数学模型:即将解决问题的方法用数学语言表达出来(3)确定算法:即转化为计算机解法;确定算法:即转化为计算机解法;(4)画出程序流程图;画出程序流程图;(5)编码,调试;编码,调试;(6)整理资料,投入使用。整理资料,投入使用。汇编程序设计基本过程:汇编程序设计基本过程:汇编程序设计特点:汇编程序设计特点:模块化、结构化模块化、结构化汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 本章学习要求本章学习要求1 1、掌握三种结构程序

3、的设计方法,领会结构、掌握三种结构程序的设计方法,领会结构化程序设计的思想。化程序设计的思想。3 3、掌握几种、掌握几种DOSDOS功能调用,了解功能调用,了解BIOSBIOS功能调用,功能调用,能从功能调用表中查找到满足自己要求的能从功能调用表中查找到满足自己要求的DOSDOS功能并给出正确的调用参数。功能并给出正确的调用参数。2 2、掌握子程序设计和调用方法。、掌握子程序设计和调用方法。汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 5.1 5.1 汇编语言程序结构汇编语言程序结构分支结构分支结构 子程序结构子程序结构复合结

4、构:多种程序结构的组合复合结构:多种程序结构的组合 顺序结构顺序结构 循环结构循环结构汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 一、顺序结构程序设计一、顺序结构程序设计例:例: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 A

5、X,24ADD 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+2

6、W,W+2单元单元单元单元汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 二、循环结构程序设计二、循环结构程序设计 循环结构:循环结构:包括包括当型当型和和直到型直到型两种。两种。WHILE 结构结构 DO-UNTIL 结构结构控制条件控制条件初始化初始化循环体循环体YN控制条件控制条件初始化初始化循环体循环体YN汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 循环类型:循环类型:循环结构的组成部分:循环结构的组成部分:初始化部分:初始化部分:设置循环的初始状态。

7、设置循环的初始状态。类似类似C语言语言for(int i=1;i10;i+)中的中的int i=1 循环体部分:循环体部分:循环工作的主体部分。循环工作的主体部分。调整部分:调整部分:调整循环的次数。调整循环的次数。类似类似C语言语言for(int i=1;i10;i+)中的中的i+控制部分:控制部分:控制循环的结束。控制循环的结束。类似类似C语言语言for(int i=1;i10;i+)中的中的i10 单重循环单重循环 嵌套循环嵌套循环(多重循环多重循环):即循环结构内又有循环即循环结构内又有循环汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013

8、春季学期春季学期 四条循环控制指令:四条循环控制指令:循环指令:循环指令:LOOP OPR 循环判断条件:循环判断条件:(CX)0 为零或相等时循环指令:为零或相等时循环指令:LOOPZ/LOOPE OPR 循环判断条件:循环判断条件:ZF=1 且且(CX)0 不为零或不相等时循环指令:不为零或不相等时循环指令:LOOPNZ(LOOPNE)OPR 循环判断条件:循环判断条件:ZF=0 且且(CX)0LOOP OPR DEC CX JNZ OPR因此,用跳转指令也能实现循环因此,用跳转指令也能实现循环汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013

9、春季学期春季学期 单重循环程序举例单重循环程序举例例例例例:试试试试编编编编制制制制一一一一个个个个程程程程序序序序把把把把BXBXBXBX寄寄寄寄存存存存器器器器中中中中的的的的二二二二进进进进制制制制数数数数以以以以十十十十六六六六进进进进制制制制数数数数的的的的形形形形式显示在屏幕上。式显示在屏幕上。式显示在屏幕上。式显示在屏幕上。分析:分析:BXBX1234汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 画流程图:画流程图:汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春

10、季学期春季学期 ASCII码表码表汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 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

11、 push ax ;0 push 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,

12、3ah cmp al,3ah ;判断是否是大于;判断是否是大于9 9 jl printit jl printit add al,7h add al,7h ;AF ASCII 41H46H;AF ASCII 41H46H汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 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个数

13、字个数字 jnz rotate jnz rotate ret retmain endpmain endpprogram endsprogram endsendend汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 例例例例:试试试试编编编编制制制制一一一一程程程程序序序序实实实实现现现现从从从从键键键键盘盘盘盘输输输输入入入入一一一一行行行行字字字字符符符符,要要要要求求求求第第第第一一一一个个个个键键键键入入入入的的的的字字字字符符符符必必必必须须须须是是是是空空空空格格格格符符符符,如如如如不不不不是是是是,则则则则退退退退出

14、出出出程程程程序序序序;如如如如是是是是,则则则则开开开开始始始始接接接接收收收收键键键键入入入入的的的的字字字字符符符符并并并并顺顺顺顺序序序序存存存存放放放放在在在在首首首首地地地地址址址址为为为为BUFFERBUFFER的的的的缓缓缓缓冲冲冲冲区区区区中中中中(空空空空格格格格符符符符不不不不存存存存入入入入),直到接收到第二个空格符时退出程序。,直到接收到第二个空格符时退出程序。,直到接收到第二个空格符时退出程序。,直到接收到第二个空格符时退出程序。汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 Data segment

15、Data 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,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,

16、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汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 next:mov ah,01 ;next:mov ah,01 ;调用调用DOS 1DOS 1号子功能号子功能 int 21h ;int 21h ;从键盘接收一个字符从键盘接收一个字符 test flag,01h t

17、est 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 exit mov bx,al ;mov bx,al ;置入缓冲区置入缓冲区 inc bx inc bx jmp next jmp nextexit:ret ;return to DOSexit:r

18、et ;return to DOSmain endpmain endpPrognam endsPrognam endsend startend start汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 多重循环程序举例多重循环程序举例例例例例:有有有有一一一一个个个个首首首首地地地地址址址址为为为为A A的的的的字字字字类类类类型型型型数数数数组组组组,试试试试编编编编制制制制程程程程序序序序使使使使该该该该数数数数组组组组中中中中的的的的数按从小到大排序。设数组中的元素为数按从小到大排序。设数组中的元素为数按从小到大排序。设数

19、组中的元素为数按从小到大排序。设数组中的元素为3232,8585,1616,1515,8 8序号 地址 数比 较 遍 数12341 A 322 A+2 853 A+4 164 A+6 155 A+8 8321615885161583285158163285815163285冒泡法排序算法冒泡法排序算法汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 mov cx,5 mov cx,5 ;元素个数元素个数 dec cx dec cx ;比较遍数比较遍数Loop1Loop1:mov di,cx mov di,cx ;比较次数比较次数

20、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 汕头大学工学院汕头大学工学院 微机与单片机系统及应用

21、微机与单片机系统及应用 2012-2013 春季学期春季学期 三、分支结构程序设计三、分支结构程序设计(选择结构程序设计选择结构程序设计)选择结构:选择结构:程序中存在判断,并根据判断结果转向不同程序中存在判断,并根据判断结果转向不同 的处理的处理 选择结构包括了选择结构包括了二路分支二路分支和和多路分支多路分支?case 1 case 2 二路分支二路分支 IF-ELSE case 1 case 2 case n多路分支多路分支 SWITCH实现多路分支结构的实现多路分支结构的方法:方法:跳转表法跳转表法关键字法关键字法汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应

22、用 2012-2013 春季学期春季学期 1、无条件转移指令、无条件转移指令 JMP2、条件转移指令条件转移指令 JZ/JNZ、JE/JNE、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ 控制转移指令:控制转移指令:汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 例:写一程序,例:写一程序,例:写一程序,例:写一程序,从键盘输入一位数字,判断其奇偶性,从键盘输入一位数字,判断其奇偶性,从键盘输入一位数字,判断其奇偶性,从键盘输入一位数字,判断其奇偶性,若为奇数

23、,在屏幕上输出字符串若为奇数,在屏幕上输出字符串若为奇数,在屏幕上输出字符串若为奇数,在屏幕上输出字符串“It is odd!”“It is odd!”;否则输;否则输;否则输;否则输出出出出“It is even!”“It is 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 ;实现段与段寄存器之间的对

24、应 ;关系 MOV DS,AX汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 MOV AH,01H ;调用1号DOS功能,从键盘上读入一个 ;字符,并将该字符回显在屏幕上 INT 21H CLC RCR AL,1 JNC EVN MOV DX,OFFSET STRING1 ;将字符串Sting1的偏移地址 ;赋给DX CALL DISPMESSEVN:MOV DX,OFFSET STRING2 CALL DISPMESS DISPMESS PROC ;定义一个过程,用于输出字符串 MOV AH,9 ;调用9号子功能 INT 21

25、H ;返回DOS MOV AH,4CH ;结束程序 INT 21HDISPMESS ENDPCODE ENDS END START汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 例:写一程序,由用户输入三个例:写一程序,由用户输入三个单字节无符号数且存放单字节无符号数且存放于于BUFFER开始的缓冲区中,开始的缓冲区中,用户每输入一位数前屏幕用户每输入一位数前屏幕显示:显示:Enter the first value(0-9):_ Enter the second value(0-9):_ Enter the third val

26、ue(0-9):_程序将这三个数按从大到小排序。排完序后,显示如下程序将这三个数按从大到小排序。排完序后,显示如下 After sorting.Num1=_ Num2=_ Num3=_汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 DATA SEGMENTMSG1 DB Enter the first value(0-9):,$MSG2 DB 0DH,0AH,Enter the second value(0-9):,$MSG3 DB 0DH,0AH,Enter the third value(0-9):,$MSG4 DB 0DH

27、,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汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 INT 21HMOV BL,AL MOV DX,OFFSET M

28、SG2 ;读取第二个数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汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 JAE NEXT1 ;等价于JNBXCHG BL,CLNEXT1:CMP BL,BHJAE NEXT2XCHG BL,BHNEXT2:CMP CL,BHJAE DISPLAYXCHG CL,BHDISPLAY:MOV DX,O

29、FFSET MSG4 MOV AH,9 INT 21H MOV DX,OFFSET NUM1 MOV AH,9 INT 21H MOV AH,02H MOV DL,BL INT 21H汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 MOV DX,OFFSET NUM2MOV AH,9INT 21H MOV AH,02HMOV DL,CLINT 21H MOV DX,OFFSET NUM3MOV AH,9INT 21HMOV AH,02HMOV DL,BHINT 21HMOV AH,4CHINT 21HCODE ENDSEND S

30、TART汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 5.2 5.2 子程序设计与调用子程序设计与调用 子程序的作用:子程序的作用:减少编程工作量;减少编程工作量;节省存储空间;节省存储空间;模块化,使程序结构清晰,便于调试;模块化,使程序结构清晰,便于调试;汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 一、过程一、过程(子程序子程序)定义伪指令定

31、义伪指令 过程名过程名 PROC NEAR(FAR)PROC NEAR(FAR)过程名过程名 ENDPENDP(1 1)NEARNEAR属性:调用程序和子程序在同一代码段中属性:调用程序和子程序在同一代码段中 (段内调用)(段内调用)(2 2)FARFAR属性:调用程序和子程序不在同一代码段中属性:调用程序和子程序不在同一代码段中 (段间调用)(段间调用).汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 code segmentcode segment main proc farmain proc far call subr1c

32、all subr1 ret retmain endpmain endpsubr1 proc nearsubr1 proc near ret retsubr1 endpsubr1 endpcode endscode endssegx segmentsegx segmentsubt proc farsubt proc far ret retsubt endpsubt endp call subtcall subt segx endssegx endssegy segmentsegy segment call far ptr subtcall far ptr subt segy endssegy e

33、nds汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 二、子程序的调用和返回二、子程序的调用和返回子程序调用:子程序调用:隐含使用堆栈保存返回地址隐含使用堆栈保存返回地址 call near ptr subpcall near ptr subp (1)保存返回地址保存返回地址 (2)转子程序转子程序 call far ptr subpcall far ptr subp (1)保存返回地址保存返回地址 (2)转子程序转子程序子程序返回:子程序返回:ret ret (返回地址出栈)返回地址出栈)(SP)(IP)(IP)(CS)(SP

34、)回顾伪指令部分!回顾伪指令部分!汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 三、子程序说明信息三、子程序说明信息为了能正确使用子程序,在给出子程序代码的时候,最为了能正确使用子程序,在给出子程序代码的时候,最好是能给出说明信息,包括:好是能给出说明信息,包括:子程序名;子程序名;功能描述;功能描述;入口和出口参数;入口和出口参数;汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 四、寄存器的保存和恢复四、寄存器的保存和恢复(保护现场保护现场)方法:方法:把需要

35、保护的寄存器的内容,在程序中压入和弹把需要保护的寄存器的内容,在程序中压入和弹出堆栈。出堆栈。subt proc farsubt proc far push ax push ax push bx push bx push cx push cx push dx push dx pop dx pop dx pop cx pop cx pop bx pop bx pop ax pop ax ret retsubt endpsubt endp汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 五、子程序的参数传送五、子程序的参数传送 参数类

36、型:参数类型:主程序在调用子程序时,经常需要向子程序传递一些参主程序在调用子程序时,经常需要向子程序传递一些参数;子程序执行完后,也需要向主程序返回一些数据。数;子程序执行完后,也需要向主程序返回一些数据。入口参数:入口参数:相当于相当于C语言函数的实际参数语言函数的实际参数 出口参数:出口参数:相当于函数返回值相当于函数返回值 参数传递的方法:参数传递的方法:通过寄存器传送参数;通过寄存器传送参数;通过存储器传送参数;通过存储器传送参数;通过地址表传送参数地址;通过地址表传送参数地址;通过堆栈传送参数或参数地址;通过堆栈传送参数或参数地址;汕头大学工学院汕头大学工学院 微机与单片机系统及应用

37、微机与单片机系统及应用 2012-2013 春季学期春季学期 例:十六进制到十进制的转换例:十六进制到十进制的转换例:十六进制到十进制的转换例:十六进制到十进制的转换(通过寄存器传送参数通过寄存器传送参数)hexidec segment ;1610 assume cs:hexidec main proc farstart:push ds sub ax,ax push axrepeat:call hexibin ;162 call crlf call binidec ;210 call crlf jmp repeat retmain endphexidec ends end start汕头大学工

38、学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 hexibin proc nearhexibin proc near mov bx,0mov bx,0newchar:mov ah,1 int 21h sub al,30h jl exit cmp al,10 jl add_to sub al,27h cmp al,0ah jl exit cmp al,10h jge exitadd_to:mov cl,4 shl bx,cl mov ah,0 add bxbx,ax jmp newchar exit:rethexibin endphexib

39、in endpbinidec proc nearbinidec proc near mov cx,10000d call dec_divcall dec_div mov cx,1000d call dec_divcall dec_div mov cx,100d call dec_divcall dec_div mov cx,10d call dec_divcall dec_div mov cx,1d call dec_divcall dec_div retbinidec endpbinidec endpdec_div proc neardec_div proc near mov ax,mov

40、ax,bxbx mov dx,0 mov dx,0 div cx div cx mov mov bxbx,dx,dx mov dl,al mov dl,al add dl,30h add dl,30h mov ah,2 mov ah,2 int 21h int 21h ret retdec_div endpdec_div endp汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 例:累加数组中的元素例:累加数组中的元素例:累加数组中的元素例:累加数组中的元素(通过存储器传送参数通过存储器传送参数)data segment ary

41、dw 1,2,3,4,5,6,7,8,9,10 count dw 10 sum dw?data endscode segmentmain proc far assume cs:code,ds:data mov ax,data mov ds,ax call proaddcall proadd mov ax,4c00h int 21hmain endpcode ends end mainproadd proc nearproadd proc near push ax push cx push si lea si,aryary mov cx,countcount xor ax,axnext:add

42、ax,si add si,2 loop next mov sumsum,ax pop si pop cx pop ax retproadd endpproadd endp汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 例:累加数组中的元素例:累加数组中的元素例:累加数组中的元素例:累加数组中的元素(通过地址表传送参数地址通过地址表传送参数地址)data segment ary dw 10,20,30,40,50,60,70,80,90,100 count dw 10 sum dw?table dw 3 dup(?);地址表dat

43、a endscode segmentmain proc far assume cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,ax mov table,offset ary mov table+2,offset count mov table+4,offset sum mov bx,offset table call proadd retmain endp 汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 proadd proc nearproadd pro

44、c near push ax push cx push si push di mov si,bx mov di,bx+2 mov cx,di mov di,bx+4 xor ax,axnext:add ax,si add si,2 loop next mov di,ax pop di pop si pop cx pop ax retproadd endpproadd endpcode ends end main 30d 40d 50d 60d 70d 80d 90d100d 10d ary 20d 10dcountsumtable00000000001400140016001600180018

45、000000000014001400160016(bx)(bx)(si)(si)(di)(di)550d550d汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 六、嵌套子程序六、嵌套子程序 子程序的嵌套:子程序的嵌套:在一个子程序中调用到另一个子程序的在一个子程序中调用到另一个子程序的结构,称为嵌套。结构,称为嵌套。注意:注意:此时要注意寄存器的保护和恢复。此时要注意寄存器的保护和恢复。汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 子程序的嵌套:子程序的嵌套:主

46、主程程序序 子子程程序序A A 子子程程序序B B call call proc_Aproc_Aproc_Aproc_A call call proc_Bproc_BCall Call proc_Aproc_Aretretproc_Bproc_B retret汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 六、递归子程序六、递归子程序 子程序的递归:子程序的递归:在子程序中调用到自身,称为递归。在子程序中调用到自身,称为递归。例如:阶乘!例如:阶乘!汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 20

47、12-2013 春季学期春季学期 例:递归子程序实现:例:递归子程序实现:例:递归子程序实现:例:递归子程序实现:n!n(n-1)(n-2)1fact proc nearfact proc near push ax push ax push bp push bp mov bp,sp mov bp,sp mov ax,bp+6mov ax,bp+6 cmp ax,0 cmp ax,0 jne fact1 jne fact1 inc ax inc ax jmp exit jmp exitfact1:dec axfact1:dec ax push ax push ax call factcall f

48、act pop axpop ax mul word ptrbp+6 mul word ptrbp+6exit:exit:mov bp+6,ax mov bp+6,ax pop bp pop bp pop ax pop ax ret ret fact endpfact endp汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 5.3 DOS5.3 DOS功能调用功能调用MS-DOS将许多涉及设备驱动和文件管理等操作编写成子程将许多涉及设备驱动和文件管理等操作编写成子程序存储起来,每个子程序对应一个编号,程序员通过调用这序存储起来,每

49、个子程序对应一个编号,程序员通过调用这些子程序来实现所需要的功能。些子程序来实现所需要的功能。DOS功能调用分类:功能调用分类:设备驱动设备驱动(基本基本I/O)文件管理文件管理 其他其他(内存管理、终止程序等内存管理、终止程序等)汕头大学工学院汕头大学工学院 微机与单片机系统及应用微机与单片机系统及应用 2012-2013 春季学期春季学期 DOS功能调用的步骤:功能调用的步骤:准备入口参数准备入口参数(有些功能调用无需入口参数有些功能调用无需入口参数);子程序的编号送子程序的编号送AH寄存器;寄存器;发软中断指令发软中断指令INT 21H;例:例:例:例:MOV DL,07H MOV DL

50、,07H MOV DL,07H MOV DL,07H ;准备入口参数;准备入口参数;准备入口参数;准备入口参数MOV AH,2 MOV AH,2 MOV AH,2 MOV AH,2 ;置子程序编号;置子程序编号;置子程序编号;置子程序编号INT 21H INT 21H INT 21H INT 21H ;软中断指令,实施调用;软中断指令,实施调用;软中断指令,实施调用;软中断指令,实施调用2号子功能能实现在屏幕上输出字符,但当号子功能能实现在屏幕上输出字符,但当DL=07H时,并不输出时,并不输出字符,而是发出嘟的一声。字符,而是发出嘟的一声。汕头大学工学院汕头大学工学院 微机与单片机系统及应用

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服