收藏 分享(赏)

《汇编语言程序设计》第9章汇编语言与高级语言的连接.ppt

上传人:dreamzhangning 文档编号:3369946 上传时间:2018-10-19 格式:PPT 页数:25 大小:184.50KB
下载 相关 举报
《汇编语言程序设计》第9章汇编语言与高级语言的连接.ppt_第1页
第1页 / 共25页
《汇编语言程序设计》第9章汇编语言与高级语言的连接.ppt_第2页
第2页 / 共25页
《汇编语言程序设计》第9章汇编语言与高级语言的连接.ppt_第3页
第3页 / 共25页
《汇编语言程序设计》第9章汇编语言与高级语言的连接.ppt_第4页
第4页 / 共25页
《汇编语言程序设计》第9章汇编语言与高级语言的连接.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、第九章,汇编语言与高级语言的连接,第9章汇编语言与高级语言的连接,9.1 与C语言的连接 9.2 与PASCAL语言的连接,第9章汇编语言与高级语言的连接,汇编语言的编写、调试比较复杂,不具有可移植性,因此,在软件开发中往往使用高级语言。但是,汇编语言又有着高级语言所不具有的优点:占有存储空间小,运行速度快,能直接控制硬件。因而经常是程序的大部分用高级语言编写,而在某些关键部分,对速度要求很高的部分,运行次数很多的部分,直接控制硬件的部分,则用汇编语言编写。这就提出了汇编语言与高级语言的连接问题。,第9章汇编语言与高级语言的连接,一般说来,连接中要解决以下三个问题: (1)存储器分配问题 (2

2、)两种语言之间的控制传送问题 (3)变量传送问题,第9章汇编语言与高级语言的连接,9.1 与C语言的连接 9.2 与PASCAL语言的连接,9.1 与C语言的连接,TURBO C调用汇编子程序 TURBO C行间嵌入汇编,TURBO C调用汇编子程序,9.1 与C语言的连接,1.TURBO C与汇编语言的接口方法当TURBO C调用汇编语言程序时,汇编程序指令序列应当具备一定的顺序,这种顺序可描述为: 正文段描述段模式组描述进栈程序体退栈正文段结束,TURBO C调用汇编子程序,9.1 与C语言的连接,C语言程序中使用汇编语言程序定义的变量和函数时,在C语言程序中应该用extern说明,在汇编

3、语言程序中应该用PUBLIC说明。 汇编语言程序结束时应该用RET指令返回,而且由于采用堆栈来传送参数,因而返回时往往采用带参数的返回指令,以便跳过参数区。 组描述是用GROUP伪指令把几个段组合成一组,这些段具有共同的起始地址。这样就允许通过用同一段寄存器访问一组中的各段。 进.退栈操作是为了保存现场。另外,如果汇编语言程序中需要用到某些寄存器,则需将这些寄存器压入堆栈,待程序将要结束时,再退出堆栈。,TURBO C调用汇编子程序,9.1 与C语言的连接,参数传递包括两个方面,一个是从TURBO C语言程序向汇编子模块传递参数,另一个是从汇编语言向TURBO C调用程序返回参数。TURBO

4、C程序向汇编语言程序的参数传递是通过栈操作进行的。先传递的参数被最后压入堆栈,即参数按从右到左的顺序被压入堆栈(这与C语言的版本有关)。 汇编语言程序中的结果返回给TURBO C主程序是通过AX和DX寄存器来完成的。,TURBO C调用汇编子程序,9.1 与C语言的连接,例9.1 设有一个TURBO C程序从键盘上获得两个数,将其传给汇编子程序AS-MADD.ASM完成两个数相加并返回和,然后在TURBO C的程序中将结果显示在屏幕上。,TURBO C调用汇编子程序,9.1 与C语言的连接,TURBO C调用汇编子程序,9.1 与C语言的连接,TURBO C调用汇编子程序,9.1 与C语言的连

5、接,2.编译、连接、运行接口程序首先用宏汇编程序MASM.EXE编译汇编程序,键入:MASM ASMADD.ASM编译后生成一个目标文件ASMADD.OBJ。建立一个工程文件名为CADD.PRJ,内容如下:CADD.CASMADD.OBJ然后按Alt+P进入Project菜单,选中Project name,输入CADD.PRJ,回车。按Ctrl+F9编译TURBO C主程序,编译后自动与汇编模块ASMADD.OBJ进行连接生成可执行文件CADD.EXE。该文件可在DOS下独立执行。,TURBO C行间嵌入汇编,9.1 与C语言的连接,当汇编语言程序段较短时,用TURBO C调用汇编子模块的方法

6、就显得比较繁琐,这时,可以使用TURBO C的嵌入式汇编功能。,TURBO C行间嵌入汇编,9.1 与C语言的连接,1.嵌入规则 (1)行间汇编语句前必须有asm关键字,其后是汇编语句。 (2)可以与TURBO C语句混用。可以使用TURBO C的语句分隔符“;”,也可以使用换行符进行分隔。 (3)不能把汇编语言中的分号作为注释分界符,而必须用TURBO C语言的注释分界符“.*”和“*.”。,TURBO C行间嵌入汇编,9.1 与C语言的连接,例9.2 对两数求和。,TURBO C行间嵌入汇编,9.1 与C语言的连接,TURBO C行间嵌入汇编,9.1 与C语言的连接,第9章汇编语言与高级语

7、言的连接,9.1 与C语言的连接 9.2 与PASCAL语言的连接,9.2 与PASCAL语言的连接,连接规则 编译、连接、运行接口文件,连接规则,9.2 与PASCAL语言的连接,汇编语言程序作为PASCAL语言程序的一个外部过程,所以汇编语言程序的写法应该与一般外部调用的过程相同:汇编语言程序的开始有PUBLIC 汇编语言过程名在段定义时加上PUBLIC组合型说明,过程结束时用RET返回。,连接规则,9.2 与PASCAL语言的连接,例9.3 用PASCAL语言编写一个能发出声音的程序。,连接规则,9.2 与PASCAL语言的连接,连接规则,9.2 与PASCAL语言的连接,编译、连接、运行接口文件,9.2 与PASCAL语言的连接,建立包括(1)、(2)两部分的PASCAL文件PSOUND.PAS和汇编语言文件PORTOUT.ASM之后,分别编译、汇编后形成两个OBJ文件,再用LINK程序把它们连接起来形成PSOUND.EXE文件,就可以在机器上执行了。具体操作过程如下:Cpas 1 soundCpas 2 psoundCasm portoutClink psound+portoutCpsound,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报