正在加载图片...
1.入口参数传递规则 (1)C语言调用协议 (2) Pascal语言调用协议 2.返回值传递规则 (1)如果返回值为单字节数则放入AL (2)如果返回值为单字则放入AX (3)如果返回值为双字则放入DX:AR,其中D中存放高字,AX中存放低字 (4)如果返回值大小超过双字则存放在系统静态变量存储区中,指向这个静态变量 存储区的指针值在AX(近指针)或者DX:AX(远指针)内 (5)在子程序完成预先定义的功能返回主程序时,C语言调用协议是由主程序来完 成参数出栈,而Paca语言调用协议却是由子程序来完成参数出栈工作的 3.寄存器保护规则 寄存器保护规则把CPU内部寄存器分为如下4类 (1)CS, IP, SS, SP, FLAGS (3)BP, SI, DI: (4)AX, BX, CX, DX 9.3.2汇编语言与c语言的接口 1.模块连接法 所谓模块连接法是指分别编译/汇编C语言源程序和汇编语言源程序,然后再将目标 文件进行连接,最终形成可执行文件的混合编程方法 (1)在TC中调用汇编子程序和变量 要使汇编语言模块和TC模块正确地连接到一起,必须处理好两点: D汇编模块必须采用和TC模块一致的存储模式; ②汇编模块还必须遵守与TC兼容的命名约定,命名约定包括段组命名约定和函数变 量命名约定。 TC调用汇编语言子程序的主要步骤。 a.在汇编语言编程方面 ①使用和C相同的存储模式定义各个段空间,没有用到的段可以不定义。 ②在汇编语言源程序中用 PUBLIC伪指令声明C需要引用的子函数和变量 ③按照C语言调用协议从堆栈中取得入口参数。 ④对参数进行处理,实现相应的功能 ⑤将返回值送入AX或者DX:AX中返回。 ⑥使用汇编程序MASM汇编源程序形成目标文件。 b.在T编程方面 ①在C语言源程序中用 extern语句声明汇编语言子函数和变量。 ②在程序中像引用本地函数和变量一样,引用这些汇编语言子函数和变量1. 入口参数传递规则 (1)C 语言调用协议 (2)Pascal 语言调用协议 2. 返回值传递规则 (1)如果返回值为单字节数则放入 AL; (2)如果返回值为单字则放入 AX; (3)如果返回值为双字则放入 DX:AX,其中 DX 中存放高字,AX 中存放低字; (4)如果返回值大小超过双字则存放在系统静态变量存储区中,指向这个静态变量 存储区的指针值在 AX(近指针)或者 DX:AX(远指针)内。 (5)在子程序完成预先定义的功能返回主程序时, C 语言调用协议是由主程序来完 成参数出栈,而 Pascal 语言调用协议却是由子程序来完成参数出栈工作的。 3. 寄存器保护规则 寄存器保护规则把 CPU 内部寄存器分为如下 4 类: (1)CS,IP,SS,SP,FLAGS: (2)DS,ES,FS,GS: (3)BP,SI,DI: (4)AX,BX,CX,DX: 9.3.2 汇编语言与 C 语言的接口 1. 模块连接法 所谓模块连接法是指分别编译/汇编 C 语言源程序和汇编语言源程序,然后再将目标 文件进行连接,最终形成可执行文件的混合编程方法。 ⑴在 TC 中调用汇编子程序和变量 要使汇编语言模块和 TC 模块正确地连接到一起,必须处理好两点: ①汇编模块必须采用和 TC 模块一致的存储模式; ②汇编模块还必须遵守与 TC 兼容的命名约定,命名约定包括段组命名约定和函数/变 量命名约定。 TC 调用汇编语言子程序的主要步骤。 a. 在汇编语言编程方面 ①使用和 C 相同的存储模式定义各个段空间,没有用到的段可以不定义。 ②在汇编语言源程序中用 PUBLIC 伪指令声明 C 需要引用的子函数和变量。 ③按照 C 语言调用协议从堆栈中取得入口参数。 ④对参数进行处理,实现相应的功能。 ⑤将返回值送入 AX 或者 DX:AX 中返回。 ⑥使用汇编程序 MASM 汇编源程序形成目标文件。 b. 在 TC 编程方面 ①在 C 语言源程序中用 extern 语句声明汇编语言子函数和变量。 ②在程序中像引用本地函数和变量一样,引用这些汇编语言子函数和变量
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有