- 1
- 0
- 约1.18万字
- 约 64页
- 2024-01-18 发布于广西
- 举报
第6讲由机器语言到高级语言---程序编写编译6.1混合编程6.2C/C++的嵌入式汇编6.3用C/C++调用汇编
6.1混合编程
混合编程即由高级语言来调用或嵌入汇编语言子程序,或用汇编语言调用或嵌入高级语言子程序。汇编程序常以过程的形式同高级语言(如C/C++、BASIC、PASCAL、DELPHI等)一起使用。
6.1混合编程
高级语言和汇编语言连接很容易,因为在高级语言编译后生产的编译程序是一个.OBJ的文件,这与汇编程序输出的目标文件一样都是机器语言程序。那么我们就可以利用link将高级语言程序产生的.OBJ程序与汇编程序产生的.OBJ程序连接起来,形成一个.EXE的可执行文件。
6.1混合编程高级语言与汇编语言的连接应注意下面几个问题:1、两种语言之间的控制传输问题2、参数的传递3、存储分配问题
6.2C/C++的嵌入式汇编在C/C++与汇编语言的混合编程过程中,C/C++调用汇编代码常有两种方法:一、直接在C/C++程序中嵌入汇编语句;二、C/C++调用汇编语言子程序。
6.2C/C++的嵌入式汇编在C或者C++中进行嵌入式汇编需要注意以下要点:嵌入式汇编语言代码支持INTEL80X86CPU的全部32位指令系统,但是不能使用伪指令与宏指令语句,也不能使用结构〔STRUCT〕和记录〔RECORD〕;嵌入式汇编语言可以使用C++程序中标识符,包括标号、变量、函数名、常量、宏、类型名、结构和联合的成员以及类对象的公有〔PUBLIC〕成员变量等;嵌入式汇编语言代码中可以使用汇编语言格式的常数〔131AH〕,也可以使用C++格式的常数〔0X131A〕;嵌入式汇编语言不能使用C++语言的运算符;嵌入式汇编语言代码中的转移指令和C++中的GOTO语句都能跳转到汇编语言或者C++定义的标号;嵌入式汇编语言定义的函数返回值的传递方法与预模块调用汇编中汇编语言程序返回值的传递方法相同,在C++程序编译时会产生“NORETURNVALUE〞警告,可以使用#PRAGMAWARNING(DISABLE:4035)预编译语句禁止该警告。
7.2C/C++的嵌入式汇编
在C/C++程序中嵌入汇编语句在嵌入式汇编中访问C/C++的数据汇编语言程序段编写C函数汇编程序调用C/C++函数
在C/C++程序中嵌入汇编语句第一种方式在C/C++程序中嵌入汇编语句_ASM操作码操作数;或换行操作码是处理器指令或假设干伪指令;操作数是操作码可接受的数据。内嵌的汇编语句可以用分号“;〞结束,也可以用换行符结束;一行中可以有多个汇编语句,相互间用分号分隔,但不能跨行书写。嵌入汇编语句的分号不是注释的开始;要对语句注释,应使用C的注释,如/*…*/。
在C/C++程序中嵌入汇编语句第二种方式,_ASM{汇编程序段}采用花括号的汇编语言程序段形式。_ASM{汇编程序段}如下所示:_ASM{MOVAX,15HMOVCX,9HADDAX,CX}
在C/C++程序中嵌入汇编语句包含在括号中的汇编代码必须按照特定的格式:1〕指令必须括在引号里。2〕如果包含的指令超过一条,那么必须使用新行字符分隔汇编语言代码的每一行。通常,还包含制表符帮助缩进汇编语言代码,使代码行更容易阅读。
例:显示1到1000中任一个数的二进制到十六进制数。#INCLUDEIOSTREAM.HCHAR*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{JMPTOP2}TOP4:;}VOIDMAIN(VOID){INTI;COUTBUFFER;CIN.GET(A);WHILEA=’0’A=’9’){_ASM{SUBA,30H}B=B*10+A;CIN.GET(A);}FOR(I=2;I17;I++){COUTBUFFER1;DISPS(10,I);COUT(CHAR)(0X20);DISPS(I,B);CO
您可能关注的文档
- 人口与劳动力就业(补).ppt
- 关系规范化理论与数据库设计.ppt
- 第1课俄国十月革命(闽).ppt
- 硅半导体材料基础.ppt
- 1.3运动学中的两类问题1.4相对运动.ppt
- 第1课汽油机燃油控制原理.ppt
- 程序设计语言.ppt
- 山东德州20MWp光伏发电项目安全文明施工二次策划.doc
- ——模拟电子技术基础(第4版).ppt
- 证书系统与身份确认.ppt
- 高中生对AI在太空材料中超导材料研发的认知调查课题报告教学研究课题报告.docx
- 高中生基于表面增强拉曼光谱法测定自来水中余氯含量的实验探究课题报告教学研究课题报告.docx
- 中职电子商务专业实操技能竞赛与课程内容对接研究课题报告教学研究课题报告.docx
- 法学顾问岗职位介绍与模拟题目.docx
- 高中数学竞赛课程与常规教学融合的实践探索与启示论文.docx
- 高中足球课程教学资源开发与利用策略研究论文.docx
- 急性中耳炎的临床护理.pptx
- 基于思维导图的小学语文阅读教学情境创设策略研究教学研究课题报告.docx
- 中职生对现代服务业技能培训需求与就业适应性研究课题报告教学研究课题报告.docx
- 小学化学趣味实验与科学兴趣培养的实践研究课题报告教学研究课题报告.docx
最近下载
- 一种融合热红外的稀土矿开采区识别方法、系统和介质.pdf VIP
- 上海交通大学学生生存手册.PDF
- 一种矿山开采原始数字高程模型重建方法、系统和介质.pdf VIP
- 公路工程质量检测收费项目和收费标准(附交通建设工程质量检测和工程材料试验收费标准).pdf VIP
- 止动片冲压模具设计..doc VIP
- 计算机组成原理(修订版)张功萱习题参考答案.pdf
- 字节跳动泛舆情域智能监控中台架构解读及实践.pdf VIP
- 欧科 EKAC230BR1LH-FAA、EKAC250BR1LH-FAA 安装使用维修说明书.pdf
- 2024-2025学年广东省深圳市龙岗区多校三年级上册期中模拟数学试卷含答案.pdf VIP
- 2021年六年级语文上学期开学测试试卷-人教版A卷-(附解析).doc VIP
原创力文档

文档评论(0)