NO1-高校汇编语言精讲课件.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NO1-高校汇编语言精讲课件

子程序设计 课前思考 子程序调用和返回时需要保护与恢复哪些寄存器? 子程序的参数传送有几种方法? 如何采用增强功能的过程定义伪操作编制子程序? 子程序嵌套与递归的区别? 学习目标 了解子程序的构成 学会运用多种方法在调用程序与子程序之间传递参数。 掌握递归子程序的编程技巧。 学习指南和难重点 【学习指南】   熟悉堆栈的运行过程对学习这一章至关重要。 【难重点】   子程序的调用和返回。保护与恢复寄存器。子程序的参数传送。嵌套与递归子程序。DOS系统功能调用。 子程序的设计方法 过程定义伪操作 过程定义伪操作(续) 过程定义伪操作(续) 过程定义伪操作(续) 子程序的调用和返回 保存与恢复寄存器 子程序的参数传送 例1 主程序--用寄存器传参数 例1 子程序--用寄存器传参数 子程序的参数传送(续) 例2 通过存储单元传递参数 例2 通过存储单元传递参数 子程序的参数传送(续) 例3 主程序 子程序的参数传送(续) 子程序的嵌套与递归调用 例4 嵌套子程序-1/2 例4 嵌套子程序-2/2 例5 子程序递归(求阶乘)-1/2 例5 子程序递归(求阶乘)-2/2 子程序举例 ; 定义子程序hexibin(十六进制转换成二进制,结果在bx中) hexibin  proc near     mov bx,0 newchar: mov ah,key_in     int  doscall  ; 键盘输入单个字符     sub  al,30h     jl   exit     cmp  al,10d     jl   add_to   ; 0~9之间转add_to ; 判断是否a~f之间(‘a’的ASCII码为61h)     sub  al,27h     cmp  al,0ah     jl   exit     cmp  al,10h     jge  exit (待续) (续) ; 0~9或a~f add_to:     mov cl,4     shl bx,cl   ; (bx)*16     mov ah,0     add bx,ax     jmp newchar exit:     ret hexibin  endp ; 定义子程序binidec(二进制转换成十进制) binidec proc near mov cx,10000d    call dec_div    ; bx被10000除    mov cx,1000d    call dec_div    ; bx被1000除    mov cx,100d    call dec_div    ; bx被100除    mov cx,10d    call dec_div    ; bx被10除    mov cx,1d    call dec_div    ; bx被1除    ret ; 定义子程序dec_div(十进制除) dec_div proc near mov ax,bx    mov dx,0 ; 被除数在dx:ax中    div cx    mov bx,dx    ; 余数送bx    mov dl,al    ; 商送dl    add dl,30h    mov ah,display    int doscall   ; 显示单个字符    ret dec_div  endp binidec  endp ; 定义子程序crlf crlf proc near mov dl,0ah mov ah,display int doscall     mov dl,0dh    mov ah,display    int doscall    ret crlf endp    hexidec ends    end start 例7 本例为一个简单的信息检索系统。在数据区里,有10个不同的信息,编号为0~9,每个信息包括30个字符。现在要求编制一个程序:从键盘接收0~9之间的一个编号,然后在屏幕上显示出相应编号的信息内容。 datarea    segment thirty    db    30  ; 信息表 msg0 db ‘I like my IBM-PC---------------------------------------’ msg1 db ‘8088 programming is fun--------------------------------’ msg2 db ‘Time to buy mor

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档