汇编语言第7章 汇编语言与高级语言接口

汇编语言第7章 汇编语言与高级语言接口

ID:39302460

大小:231.50 KB

页数:64页

时间:2019-06-30

汇编语言第7章 汇编语言与高级语言接口_第1页
汇编语言第7章 汇编语言与高级语言接口_第2页
汇编语言第7章 汇编语言与高级语言接口_第3页
汇编语言第7章 汇编语言与高级语言接口_第4页
汇编语言第7章 汇编语言与高级语言接口_第5页
资源描述:

《汇编语言第7章 汇编语言与高级语言接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章汇编语言与高级语言接口7.1混合编程7.2C/C++的嵌入式汇编7.3用C/C++调用汇编7.1混合编程混合编程即由高级语言来调用或嵌入汇编语言子程序,或用汇编语言调用或嵌入高级语言子程序。汇编程序常以过程的形式同高级语言(如C/C++、BASIC、PASCAL、DELPHI等)一起使用。7.1混合编程高级语言和汇编语言连接很容易,因为在高级语言编译后生产的编译程序是一个.OBJ的文件,这与汇编程序输出的目标文件一样都是机器语言程序。那么我们就可以利用link将高级语言程序产生的.OBJ程序与汇编程序产生的.OBJ程序连接起来,形成一个.EXE的可

2、执行文件。7.1混合编程高级语言与汇编语言的连接应注意下面几个问题:1、两种语言之间的控制传输问题2、参数的传递3、存储分配问题7.2C/C++的嵌入式汇编在C/C++与汇编语言的混合编程过程中,C/C++调用汇编代码常有两种方法:一、直接在C/C++程序中嵌入汇编语句;二、C/C++调用汇编语言子程序。7.2C/C++的嵌入式汇编在C或者C++中进行嵌入式汇编需要注意以下要点:嵌入式汇编语言代码支持INTEL80X86CPU的全部32位指令系统,但是不能使用伪指令与宏指令语句,也不能使用结构(STRUCT)和记录(RECORD);嵌入式汇编语言可以使用

3、C++程序中标识符,包括标号、变量、函数名、常量、宏、类型名、结构和联合的成员以及类对象的公有(PUBLIC)成员变量等;嵌入式汇编语言代码中可以使用汇编语言格式的常数(131AH),也可以使用C++格式的常数(0X131A);嵌入式汇编语言不能使用C++语言的运算符;嵌入式汇编语言代码中的转移指令和C++中的GOTO语句都能跳转到汇编语言或者C++定义的标号;嵌入式汇编语言定义的函数返回值的传递方法与预模块调用汇编中汇编语言程序返回值的传递方法相同,在C++程序编译时会产生“NORETURNVALUE”警告,可以使用#PRAGMAWARNING(DIS

4、ABLE:4035)预编译语句禁止该警告。7.2C/C++的嵌入式汇编7.2.1在C/C++程序中嵌入汇编语句7.2.2在嵌入式汇编中访问C/C++的数据7.2.3汇编语言程序段编写C函数7.2.4汇编程序调用C/C++函数7.2.1在C/C++程序中嵌入汇编语句第一种方式7.2.1在C/C++程序中嵌入汇编语句_ASM操作码操作数<;或换行>操作码是处理器指令或若干伪指令;操作数是操作码可接受的数据。内嵌的汇编语句可以用分号“;”结束,也可以用换行符结束;一行中可以有多个汇编语句,相互间用分号分隔,但不能跨行书写。嵌入汇编语句的分号不是注释的开始;要对

5、语句注释,应使用C的注释,如/*…*/。7.2.1在C/C++程序中嵌入汇编语句第二种方式,_ASM{汇编程序段}采用花括号的汇编语言程序段形式。_ASM{汇编程序段}如下所示:_ASM{MOVAX,15HMOVCX,9HADDAX,CX}7.2.1在C/C++程序中嵌入汇编语句包含在括号中的汇编代码必须按照特定的格式:1)指令必须括在引号里。2)如果包含的指令超过一条,那么必须使用新行字符分隔汇编语言代码的每一行。通常,还包含制表符帮助缩进汇编语言代码,使代码行更容易阅读。例:显示1到1000中任一个数的二进制到十六进制数。#INCLUDE

6、EAM.H>CHAR*BUFFER="ENTERANUMBERBETWEEN0AND1000:";CHAR*BUFFER1="BASE";INTB=0;CHARA;VOIDDISPS(INTBASE,INTDATA){INTTEMP;_ASM{MOVAX,DATAMOVBX,BASEPUSHBXTOP1:MOVEDEX,0DIVBXPUSHDXCMPAX,0JNZTOP1TOP2:POPDXCMPDX,BXJETOP4ADDDX,30HCMPDX,39HJBETOP3ADDDX,7TOP3:MOVTEMP,EX}COUT<<(CHAR)TEMP;_ASM

7、{JMPTOP2}TOP4:;}VOIDMAIN(VOID){INTI;COUT<=’0’&&A<=’9’){_ASM{SUBA,30H}B=B*10+A;CIN.GET(A);}FOR(I=2;I<17;I++){COUT<

8、rn;操作数是操作码可接受的数据:立即数、寄存器名,还可以是C/C++程序中的常

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。