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

汇编语言程序与高级语言程序的连接 连接中要解决的问题: 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语言编译系统对不同段的定位类型、组合类型及类别名规定 了统一的名称
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 徐州工程学院:《网页制作与网站建设》讲义.docx
- 《计算机进程管理》讲义.ppt
- 《计算机辅助设计——机电系统CAD》教学讲义教材:附录二 常见机械CAD软件简介.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:附录一 MATLAB 软件简介.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第八章 机电系统计算机辅助设计的发展.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第七章 机电系统的智能设计理论和方法.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第六章 产品数据管理技术.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第五章 机械产品模型理论及常用建模技术.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第四章 机电系统动态性能的计算机仿真.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第三章 机电系统的计算机辅助分析.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第二章 机电系统CAD算法基础.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第一章 绪论.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:目录.doc
- 《计算机组装与维护》第十章 电源和机箱.ppt
- 《计算机组装与维护》第四章 主板-教案.doc
- 《计算机组装与维护》第四章 主板-幻灯片.ppt
- 《计算机组装与维护》第六章 显示卡-幻灯片.ppt
- 《计算机组装与维护》第八章 声卡和音箱-幻灯片.ppt
- 《计算机组装与维护》第五章 外部存储器-幻灯片.ppt
- 《计算机组装与维护》第五章 外存储器-教案.doc
- 清华大学:《汇编语言程序设计》第一章 基础知识.ppt
- 清华大学:《汇编语言程序设计》第七章 高级汇编语言技术.ppt
- 清华大学:《汇编语言程序设计》第三章(3-1) 8086的寻址方式.ppt
- 清华大学:《汇编语言程序设计》第三章(3-2) 8086的指令系统.ppt
- 清华大学:《汇编语言程序设计》第三章(3-3) 逻辑指令.ppt
- 清华大学:《汇编语言程序设计》第九章 BIOS和DOS中断.ppt
- 清华大学:《汇编语言程序设计》第二章 80x86计算机组织.ppt
- 清华大学:《汇编语言程序设计》第五章 循环与分支程序设计.ppt
- 清华大学:《汇编语言程序设计》第八章 输入输出程序设计.ppt
- 清华大学:《汇编语言程序设计》第六章 子程序结构.ppt
- 清华大学:《汇编语言程序设计》第四章 汇编语言程序格式.ppt
- 清华大学:《汇编语言程序设计》绪论.ppt
- 《数据库原理与应用》ppt电子书.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第二章 C++基础知识.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第九章 多态性.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第十章 模板.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第四章 函数.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第十二章 异常处理.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第五章 类与对象.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第七章 动态内存分配.ppt