当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

清华大学:《汇编语言程序设计》汇编语言程序与高级语言程序的连接

资源类别:文库,文档格式:PPT,文档页数:6,文件大小:81KB,团购合买
连接中要解决的问题: 1.存储器分配问题 2.两种语言之间的控制传送问题 3.变量传送问题
点击下载完整版文档(PPT)

汇编语言程序与高级语言程序的连接 连接中要解决的问题: 1.存储器分配问题 两种语言之间的控制传送问题 3.变量传送问题 调用协议: 1.用于C/C++语言的C语言调用协议 2.用于 BASIC、 PASCAL、 FORTRAN语言的 PASCAL语言调用协议

1 汇编语言程序与高级语言程序的连接 连接中要解决的问题: 1. 存储器分配问题 2. 两种语言之间的控制传送问题 3. 变量传送问题 调用协议: 1. 用于C/C++语言的C语言调用协议 2. 用于BASIC、PASCAL、FORTRAN语言的 PASCAL语言调用协议

C语言和汇编语言混合编程 (一)C语言程序中直接嵌入汇编代码 内嵌汇编语言格式 asm<操作码〉<操作数〉<或换行符〉 例:test1.C #include <stdio. h maino t asm mov ah, 2 asm moy d.* asm int 21h: printf( test

2 C 语言和汇编语言混合编程 (一) C 语言程序中直接嵌入汇编代码 内嵌汇编语言格式: asm 例:test1.c #include main() { asm mov ah,2; asm mov dl,'*'; asm int 21h; printf("test\n"); }

二)在C程序中直接调用汇编子程序 例:cmax,C→ sm max.asm. model smal code pub_max_num #include max num proc near extern int maxnum (int count, i push p int vl, int v2. int v3 mov bp, sp mov CX, [bp+4] int v4, int v5, int v6) dec Cx main JCxZ exIt I int i; mov ax, [bp+6] Comp add bp. 2 i= max num(6,-35,17,0 cmp ax, [bp+6 63,-121,112); Jge gtest printf( "max is %d",1); mov ax, [bp+6] gtest: loop comp exi t. pop bp ret lax_num endp end

3 (二) 在C 程序中直接调用汇编子程序 .model small .code public _max_num _max_num proc near push bp mov bp,sp mov cx,[bp+4] dec cx jcxz exit mov ax,[bp+6] comp: add bp,2 cmp ax,[bp+6] jge gtest mov ax,[bp+6] gtest: loop comp exit: pop bp ret _max_num endp end #include extern int max_num(int count, int v1,int v2,int v3, int v4,int v5,int v6); main() { int i; i= max_num(6,-35,17,0, 63,-121,112); printf("max is %d",i); } 例:c_max.c asm_max.asm

参数传递: C程序调用汇编子程序时,参数是通过堆栈传递给汇编子程序的 并且参数入栈的顺序是从右到左 BP→ BP 低地址 返回地址 BP+4→ BP+6→ 6—v—vyv 1—2-3—4-5 v V6 高地址

4 参数传递: C 程序调用汇编子程序时,参数是通过堆栈传递给汇编子程序的, 并且参数入栈的顺序是从右到左 V6 高地址 v5 v4 v3 v2 BP+6 → v1 BP+4 → 6 返回地址 BP → BP 低地址

汇编语言子程序的返回值: 当被调用的汇编子程序有值返回给调用它的C程序时,这个值通过 AX和DX寄存器进行传递 数据类型 数据长度 (字节) C语言 汇编语言 char DB int DW long int /float DD double DQ 变量的数据类型 5

5 汇编语言子程序的返回值: 当被调用的汇编子程序有值返回给调用它的C 程序时,这个值通过 AX 和 DX 寄存器进行传递。 数 据 类 型 数据长度 (字节) C语言 汇编语言 char DB 1 int DW 2 long int / float DD 4 double DQ 8 变量的数据类型

汇编子程序框架: 只有严格按照C语言编译系统要求编制的汇编孑程序才能被 C程序正确调用。 C语言编译系统将不同类型的变量存放在不同的段中,并且把 DATA、 CONST、BSS和 STACK段组合成一个 DGROUP 段组 2.C语言编译系统对不同段的定位类型、组合类型及类别名规定 了统一的名称

6 汇编子程序框架: 只有严格按照C 语言编译系统要求编制的汇编子程序才能被 C程序正确调用。 1. C语言编译系统将不同类型的变量存放在不同的段中,并且把 _DATA、CONST、_BSS 和 STACK 段组合成一个 DGROUP 段组。 2. C语言编译系统对不同段的定位类型、组合类型及类别名规定 了统一的名称

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有