第06章 汇编语言程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第06章 汇编语言程序设计

例6.17(二) mov ax, seg string push ax ;入口参数1 mov ax, offset string push ax ;入口参数2 call strlen ;子程序调用 add sp, 4 ;释放入口参数 mov len, ax ;获取出口参数 exit: mov ah, 4ch int 21h 例6.17(三) strlen proc near push bp ;保存外层函数框架指针 mov bp,sp;设置本层函数框架指针 push ds push si mov ax, [bp+6] ;入口参数1 mov ds, ax mov si, [bp+4] ;入口参数2 mov al, 0 例6.17(四) strlen1: cmp al, [si] jz strlen2 inc si jmp strlen1 strlen2: mov ax, si sub ax, [bp+4] ;入口参数2 pop si pop ds pop bp ;恢复外层函数框架指针 ret strlen endp end start CALL后续区传递法 CALL后续区是指位于CALL指令之后的存储区域。主程序在调用子程序之前,把入口参数存入CALL指令后的存储单元中,子程序根据保存在堆栈中的返回地址找到入口参数。 利用CALL后续区传递参数的子程序必须修改返回地址。 这种方法把数据和代码混在一起,在X86系列汇编语言中使用很少。 有关代码、数据和堆栈段调用过程示意图。 调用前 调用中 修改返回地址 6.2.5 DOS功能调用和基本输入输出系统BIOS 操作系统的功能 处理器管理、存储管理、设备管理、文件管理和作业管理。 DOS功能调用:DOS为设备管理、文件管理、存储管理等功能提供了一组子程序,亦称系统调用。 BIOS功能调用:固化在ROM中的为基本I/O设备提供的服务程序。 应用程序、DOS、BIOS和外部设备接口之间的关系。 如图6.6所示。 DOS功能调用 DOS功能调用的一般方法: 填写系统功能调用的入口参数。 把功能调用号送AH寄存器。 发软中断指令INT 21H。 如: mov al, 0 ;返回参数 mov ah, 4ch ;调用功能号 int 21h ;发中断指令 BIOS功能调用 基本输入输出BIOS可分为: 显示器驱动程序(INT 10H) 磁盘驱动程序(INT 13H) 键盘驱动程序(INT 16H) 打印机驱动程序(INT 17H) 通信驱动程序(INT 14H) 读当前时钟(INT 1AH) 检测系统配置(INT 11H) 检测存储器容量(INT 12H) 引导程序(INT 19H) 启动ROM BASIC程序(INT 18H) 例6.8 流程图 例6.8 源程序(一) .model small .stack 200h .data buffer db 82h,34h,03h .code start: mov ax, @data mov ds, ax mov si, offset buffer mov al, [si] mov bl, [si+1] mov cl, [si+2] cmp al, bl jae next1 xchg al, bl 例6.8 源程序(二) next1: cmp al, cl jae next2 xchg al, cl next2: cmp bl, cl jae next3 xchg bl, cl next3: mov [si], al mov [si+1], bl mov [si+2], cl mov ah, 4ch int 21h end start -◇- 图6.3的另一种表示方法 多分支结构(地址表) 地址表也称散列表,它存放了所有分支的入口地址,将变量的取值对应到相应的序号,程序中再用序号作为索引值来查找地址表,从而获得某分支的入口地址。 高级语言如C语言中的switch-case结构常用地址表技术来实现。 使用switch-case结构的C程序(例6.9)。 用“TCC –ms –S C源文件名”编译后生成的汇编代码。 C语言中switch-case语句会被编译器编译成不同类型的分支结构。当分支较少时,编译器会将其编译成多个简单分支的组合;当分支较多且序号连续时,采用地址表;当分支较多且序号有间隔时,除用地址表外,还要对变量的每个值也建

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档