1调用协定在语言编译程序调用函数时遵循一个调用协定[1],协定规定语言主函数调用子函数时传递参数以及返回函数值的方式:一般编译程序使用堆栈传递参数,用寄存器返回函数值。协定还规定哪些寄存器的内容需保存,哪些寄存器可以自由使用。只有在编写程序时遵守协定,汇编程序才可以与语言程序正确连接。1)参数传递。语言主程序在调用函数时,把参数按从右到左的顺序存入堆栈,例如,调用函数(,,)时,先入栈,依次是,最后是.2)函数值的返回。一般汇编子程序返回结果时,采用以下方法:当返回值为16位数据时,返回值放在寄存器中;当返回值为32位数据时,返回值放在:中,放高16位,放低16位;当返回指针时,对小模式,16位偏移地址放中,对大模式,段地址放中,偏移地址放中。3)使用寄存器的约定。当汇编程序用到,,时,必须在使用前保存其内容,在函数返回前恢复其内容,通用寄存器,,,及标志寄存器的内容可改变;段寄存器及一般不作改动。对小模式,中模式而言,使用近指针时,不改动;对大模式而言,使用远指针时,使用前保存内容,返回前恢复。2汇编函数代码的生成在这里使用命令行方式的-编译选项生成代码[1],通过以下例子来说明。首先建立汇编程序函数的框架,再加入实现函数功能的指令序列。例如,实现两数相加,返回和的函数:(,){//函数框架}使用-选项编译该文件(文件名为.),生成一汇编文件(文件名为.),文件代码如下:,:,:@@@;(,):,;{};@@@在语句“,”之后加入下列指令:,[+4],[+6]再建立主函数:(){,;(“%%”,,);(“%”,(,));}3汇编程序与程序的连接1)直接对源程序连接[2]命令格式:1.2.1,2分别为语言程序和汇编程序的源文件名。2)用对目标文接连[2]命令格式:-1.2.…其中可以为,,,,,分别对应小模式,紧凑模式,中模式,大模式,极大模式。在这种方法时下,需要先对各模块分别编译(利用的编译器和)。3)利用对目标文件连接[2]命令格式:,,[],<>其中为,,,,中的一个;.是各目标文件名,是可执行文件的文件名;[]是镜像文件名,可省略;<>是用户的库文件名汇编语言与TurboC语言的混合编程方法@李驰新$兰州工业高等专科学校计算机工程系!甘肃兰州730050
@权晓红$兰州工业高等专科学校计算中心!甘肃兰州730050接口;;编译;;连接一般有两种方法实现汇编语言程序与C语言连接:一种是分别编写汇编程序与C程序,然后连接;另一种是使用关键字“asm”把汇编程序嵌入C程序中。本文将讨论第一种方法,并介绍一种简单的方法生成汇编程序代码[1]徐金梧.TurboC实用大全[M].北京:机械工业出版社,1996.
[2]王永山.微型计算机原理及应用[M].西安:西安电子科技大学出版社,1996.12