




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机接口技术
(汇编与接口)第四章汇编语言程序设计4主要内容:汇编语言源程序的结构汇编语言语句格式伪指令功能调用汇编语言程序设计第4章:4.6子程序设计把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就形成子程序子程序可以实现源程序的模块化,可简化源程序结构,可以提高编程效率主程序(调用程序)需要利用CALL指令调用子程序(被调用程序)子程序需要利用RET指令返回主程序第4章:子程序编写注意事项⑴子程序要利用过程定义伪指令声明⑵子程序最后利用RET指令返回主程序,主程序执行CALL指令调用子程序⑶子程序中对堆栈的压入和弹出操作要成对使用,保持堆栈的平衡⑷子程序开始应该保护使用到的寄存器内容,子程序返回前相应进行恢复⑸子程序应安排在代码段的主程序之外,最好放在主程序执行终止后的位置(返回DOS后、汇编结束END伪指令前),也可以放在主程序开始执行之前的位置第4章:例4.15用dos功能调用输出一个字符的子程序
;主程序
movdl,‘?’
;主程序提供显示字符
calldpchar
;调用子程序
;子程序:显示AL中的字符dpchar proc
;过程定义,过程名为dpchar
pushax
;顺序入栈,保护寄存器
pushbx movah,02h ;输出一个字符功能
int21h
popbx
;逆序出栈,恢复寄存器
popax
ret
;子程序返回dpchar endp
;过程结束第4章:例4.15源程序SsesegmentstackDb30dup(?)SseendsCodesegmentAssumecs:code,ss:ssestart:movax,23h
movdl,‘?’;主程序提供显示字符
calldpchar
;调用子程序
movax,4c00h int21h主程序部分本程序不需要数据段第4章:子程序编写注意事项(续)⑹子程序允许嵌套和递归⑺子程序可以与主程序共用一个数据段,也可以使用不同的数据段(注意修改DS),还可以在子程序最后设置数据区(利用CS寻址)⑻子程序的编写可以很灵活,例如具有多个出口(多个RET指令)和入口,但一定要保证堆栈操作的正确性⑼处理好子程序与主程序间的参数传递问题⑽提供必要的子程序说明信息(子程序名,入口参数,出口参数,功能,程序)第4章:例4.16显示以“0”结尾字符串的嵌套子程序
;数据段msg db'Well,Imadeit!',0
;代码段(主程序)
movsi,offsetmsg
;主程序提供显示字符串
calldpstri
;调用子程序第4章:例4.16子程序;子程序dpstri:显示DS:SI指向的字符串(以0结尾)
dpstri proc pushaxdps1: movdl,[si] ;取显示字符
incsi cmpdl,0 ;是结尾,则显示结束
jzdps2
calldpchar
;调用字符显示子程序
jmpdps1dps2: popax
retdpstri endp;子程序dpchar:入口参数:寄存器DS:SI,传地址出口参数:无第4章:多出口子程序;子程序HTOASC:十六进制数转换为ASCII码HTOASC proc andal,0fh cmpal,9 jbehtoasc1 addal,37h ;是A~F,加37H ret ;子程序返回htoasc1: addal,30h ;是0~9,加30H
ret ;子程序返回HTOASC endp第4章:参数传递主程序与子程序间一个主要问题是参数传递入口参数(输入参数):主程序调用子程序时,提供给子程序的参数出口参数(输出参数):子程序执行结束返回给主程序的参数参数的具体内容传数值:传送数据本身传地址:传送数据的主存地址常用的参数传递方法寄存器共享变量(存储单元)堆栈第4章:4.6.2用寄存器传递参数最简单和常用的参数传递方法是通过寄存器,只要把参数存于约定的寄存器中就可以了由于通用寄存器个数有限,这种方法对少量数据可以直接传递数值,而对大量数据只能传递地址采用寄存器传递参数,注意带有出口参数的寄存器不能保护和恢复,带有入口参数的寄存器可以保护、也可以不保护,但最好能够保持一致dpchardpstriHTOASC第4章:4.6.4用堆栈传递参数参数传递还可以通过堆栈这个临时存储区。主程序将入口参数压入堆栈,子程序从堆栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们采用堆栈传递参数是程式化的,它是编译程序处理参数传递、以及汇编语言与高级语言混合编程时的常规方法第4章:4.7宏(Macro)汇编宏是具有宏名的一段汇编语句序列宏需要先定义,然后在程序中进行宏调用由于形式上类似其他指令,所以常称其为宏指令宏指令实际上是一段代码序列的缩写;在汇编时,汇编程序用对应的代码序列替代宏指令因为是在汇编过程中实现的宏展开,所以常称为宏汇编第4章:1.宏定义宏定义由一对宏汇编伪指令MACRO和ENDM来完成,格式如下:
宏名
MACRO[形参表]
……
;宏定义体
ENDM其中宏名是符合语法的标识符,同一源程序中该名字定义唯一。宏定义体中不仅可以是硬指令序列,还可以是伪指令语句序列可选的形参表给出了宏定义中用到的形式参数,每个形式参数之间用逗号分隔第4章:宏的实例1dispchar macrochar ;;宏定义
movah,2 ;;宏定义体
movdl,char int21h
endm
… dispchar‘?’ ;宏调用(宏指令)
…
1
movah,2 ;宏展开
1
movdl,’?’1 int21h第4章:宏的实例2dispmsg macromessage ;;宏定义
movah,9 ;;宏定义体
leadx,message int21h
endm
… dispmsgstring ;宏调用(宏指令)
…
1
movah,9 ;宏展开
1
leadx,string1 int21h第4章:宏与子程序的比较比较仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变通过形参、实参结合实现参数传递,简捷直观、灵活多变还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢需要利用寄存器、存储单元或堆栈等传递参数宏子程序第4章:教学要求掌握常量表达、变量定义及应用、变量和标号的属性及操作符掌握汇编语言源程序的编辑、汇编、连接和调试的开发方法掌握基本伪指令和操作符:EQU/=;+-*/;DB/DW/DD、?/DUP;ORG/$、OFFSET/SEG/P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省阆中市阆中中学2025届高三考前突击模拟试卷化学试题试卷(1)含解析
- 湖北生物科技职业学院《工程结构加固》2023-2024学年第二学期期末试卷
- 厦门兴才职业技术学院《大学语》2023-2024学年第一学期期末试卷
- 江苏省淮安市盱眙县2025年新初三摸底考试化学试题含解析
- 遵义师范学院《中国戏剧影视音乐作品赏析》2023-2024学年第一学期期末试卷
- 重庆三峡职业学院《写意山水写生与水墨表现》2023-2024学年第二学期期末试卷
- 江苏省连云港等四市2025年高三下学期化学试题期末联考试题含解析
- 采购合同履行保密保密地点重点基础知识点
- 如何做好电话销售
- 韶关市高一上学期第一次月考地理试题
- GB/T 15496-2017企业标准体系要求
- GB/T 15098-2008危险货物运输包装类别划分方法
- 中班科学课件:《彩色的世界》
- 德勤业务管理流程优化咨询报告课件
- 深静脉导管维护流程
- 录音证据文字模版
- DL∕T 617-2019 气体绝缘金属封闭开关设备技术条件
- 冲压作业机械类作业活动风险分级管控清单
- TCVN-2622-越南建筑防火规范(中文版)
- 不负韶华只争朝夕-一模考试反思 课件-2021-2022学年高中主题班会(共17张PPT)
- 什么是管壁厚度号Sch
评论
0/150
提交评论