汇编语言与C语言的混合程序设计技术研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
www�ele169�com | 63
计算机教学
0 引言
在软件开发设计的过程中,不仅可以使用某一个编程语
言进行单独编程,也可以使用某两种不同的编程语言进行混合编程。
汇编语言与C 语言在计算机编程语言中各具特色,将这种编程语言混合在一起进行编程,可以在维护软件性能的基础上,最大程度地提高软件的工作效率,拓展软件的其他性能,因此在软件开发设计的过程中,汇编语言与C 语言
混合程序,是高级编程过程中应用最广泛的混合语言之一。
1 汇编语言与C 语言程序的设计技术方法
■1.1 C 语言程序设计方法及方法
C 语言是目前软件开发设计的过程中应用最为广泛的一
种编程语言,相比较其它编程语言,C 语言的功能性较优,灵活性较强。
之所将二者进行混合编程,是因为的在C 语言的程序设计技术中,可以确定汇编程序的常、变量。
其次,在C 语言程序设计中可以实现增加语句编辑,以此对硬件进行良好的控制。
最后,在C 语言程序设计中还可以通过
内部函数的使用加入汇编语言中相应的编程语句。
■1.2 汇编程序设计方法及技术
而在汇编程序设计方法及技术中,可以直接编写代码,
且不使用分号,但是需要注意的是,如果想要将一组汇编语句融入到C 语言程序中,汇编编程语句必须要括到括号{}中。
汇编语言与C 语言程序的混合设计主要包括四种类型,分
别为:一般指令、跳转指令、串联指令和局部定义指令。
和C 语言相比,汇编程序设计完成后,软件的运算速度较快,
而且通过汇编程序设计,可以有效提升储存器的储存空间。
将这两者进行有效的结合,可以充分利用二者的优势,高质量、高效率的完成软件工作任务[1]。
2 汇编语言与C 语言的混合编程方法分析
在混合程序设计技术编程的过程中,需要根据实际软件
的具体需求,判断汇编语言与C 语言那一个需要调用的指令较多,根据具体的情况,选择不同的混合编程方法。
■2.1 C 语言调用汇编语言子程序
C 语言调用汇编语言子程序,指的就是在混合程序设计
技术编程中,需要调用的汇编语言指令较多。
但是需要注意的是,在采用C 语言进行软件开发设计的过程中,C 语言编译系统属于固定成型的编程语言段落组合,因此C 语言调用汇编语言子程序设计的过程中,必须要保证每一个调用的汇编语言指令都符合C 语言编译系统,要根据C 语言编译系统的编译要求、组合顺序进行调用。
以函数显示为例,汇编语言的子程序在调用到C 语言编译系统中时,必须要严格遵守约定,或者是按照规定,采用“EXTERN”来显示函数。
在此基础上,才能够将这段汇编语言的子程序作为C 语言调用汇编语言子程序的接口。
在这个过程中还需要注意,显示出来的函数的下划线格式也要进行设置。
除此之外,保证每一个调用的汇编语言指令都符合C 语言编译系统这一要
求还体现在内部参数顺序的设置过程上,在设置汇编语言子程序的内部参数顺序时,必须要采用反向顺序,也就是说,要将汇编语言子程序原有的标准顺序作反向运动。
然后才能够将汇编语言子程序的参数设置以此的嵌入C 语言编译系统中。
这一点在代码段说明中也有一定的体现,在C 语言调用汇编语言子程序中,必须要根据“-TEXT”这一命名原则,对汇编语言子程序内的代码段进行命名[2]。
C 语言程序调用
过程中软件的堆栈分配具体如图1所示。
汇编语言与C 语言的混合程序设计技术研究
王照
(河南护理职业学院,河南安阳,455000)
摘要:汇编语言与C语言是计算机编程语言中两种不同类型的语言,这两种编程语言可以混合编程使用,而且通过汇编语言与C语言的混合程序,还可以进一步提高程序的安全稳定性。
本文首先简单了解了混合程序设计技术的设计技术方法,然后从C语言调用汇编语言、汇编语言调用C语言、C语言程序嵌入汇编语言这三个方面入手展开分析,最终简单概述了混合程序设计技术需要注意的关键性问题。
关键词:汇编语言;C语言;混合程序;参数传递
图1 堆栈分配结构
64 | 电子制作 2019年05
月
一步提高软件的工作效率,可以利用汇编语言主程序中的
“CALL”语句来调用C 语言子程序,具体如图2所示[3]。
图2 汇编语言为主的混合程序设计技术编程函数
■2.3 C 语言程序嵌入汇编语言程序中
汇编语言为主的混合程序设计技术编程中还有一种是将
汇编语言与C 语言进行嵌入式的混合编程方法具体内容如下:第一,基于C 语言调用汇编语言子程序展开的嵌入方式。
在这种混合编程方法中,必须要严格遵循混合程序设计技术编程的模块划分原则,实现混合程序设计技术编程的合理搭配,保证设计要求得到满足[4]。
在这种嵌入方式下,每个模
块的体现形式都是函数表现形式,或者是过程表现形式,会在这一编写语言的基础上进行程序编写。
需要注意的是,如果主程序中含有较多的C 语言部分,那么在编写模块的过程中,就必须要选择汇编语言,以此凸显出主程序以及模块各自的特点。
在此基础上,就可以根据特点形成特定的目标代码模块,最终将目标代码模块进行连接,从而形成相应的的设计过程中,想要进一步保证混合编程的质量,保证软件的功能性和稳定性,就要对汇编语言与C 语言连接注意的关键问题进行全面的分析,以此有效弥补两种语言存在的不
足之处。
■3.1 参数传递
参数传递是汇编语言与C 语言进行混合编程过程中的
主要问题,一般情况下,混合编程设计在参数传递方面,都是采用堆栈的方式。
也就是说,在C 语言调用汇编语言子程序过程中,将调用的汇编语言子程序存储到堆栈成的储存器中,然后将BP 基址作为原有数据的存储器。
在此基础上,就可以利用BP 基址实现参数的传递和使用,具体的使用方法的如下,在C 语言的BP 基址上加入不同的偏移量,就可以实现参数的传递使用任务[5]。
■3.2 调用关系
调用关系在汇编语言与C 语言的混合编程设计中具有
着十分重要的作用,是实现混合编程设计的重要基础。
因此,在汇编语言与C 语言的混合编程设计中必须要明确确定在汇编语言与C 语言的调用关系。
第一种,是要在调用之前进行明确,并且建立恰当的调用关系,基于调用关系确定被调用的编程程序、以及程序中函数的外部类型、和程序中需要引用的外部模块。
第二种,是根据具体的储存模式确定汇编语言程序的具体格式,然后进一步确定两者之间的调用关系。
■3.3 模块连接
选择在汇编语言与C 语言的混合编程设计,就是为了
提高软件设计的正确性和有效性,而在混合编程设计过程中除了上述两点需要注意之外,还需要注意的是模块储存方式和模块连接方式。
只有保证模块储存方式和模块连接方式的
一致性,并且在实际命名过程中,严格遵守有关约定,才能够保证连接质量。
第一,汇编语言程序模块和C 语言程序模块必须要相互遵守彼此的编程规则。
(下转第57页)
计算机教学
CAPTCHA正是基于这一理论基础开发的,其验证原理并不需要用户精准的识别并输出每个字符,而只需要使用触摸屏对其进行精准的划分。
2.2.2 机制设计
Slide-CAPTCHA的图片大多数截取自谷歌的reCAPTCHA 并进行了适当的裁剪及放大,同时将键盘输入的响应模式改变为滑动分割的响应模式。
Slide-CAPTCHA的具体响应模式可以分为如下四个步骤:
(1)系统显示一个包含扭曲字符串的图片;(2)用户识别图片中的文本;(3)用户通过触摸响应划分字符;(4)用户提交验证结果,后台对结果进行检测,若正确则通过验证,若不正确则重新进行验证;
同时,Slide-CAPTCHA还有三个关键的实行机制,分别是:加工机制、验证界面生成机制和验证机制。
其中,加工机制负责截取reCAPTCHA(Ver1.0)中的验证码文本,通过人工识别后与图片一并录入数据库;验证界面生成机制确保用户能顺畅的进行验证和选择操作;验证机制由于暂时没有相关算法进行实现,暂时采用人工判定的方法,但是并不影响对机制最后实验数据的统计与对比。
其中,我们制定了一些需要严格遵守的判定依据:
(1)需明确划分出字母之间粘连的部分;(2)划分轨迹不得穿过字母非粘连部分;(3)划分结果英语答案一致;(4)划分结果有歧义时以标准答案为准;(5)任何正确划分方法之外的多划、少划均视为错误并且统计错误次数。
■2.3 测试结果及用户反馈
由我们随机选取的志愿者参与的调查结果显示,若计算不刷新次数,Slide-CAPTCHA比Type-CAPTCHA成功次数多48次,占Type-CAPTCHA总成功次数的25.1%、而如果计算刷新次数,Slide-CAPTCHA的正确率则比Type-CAPTCHA高出12.8%;综合用户反馈数据来看,采用Slide-CAPTCHA的验证方式时,即使用户难以识别文本,也会尝试着将文本验证码进行划分,这也与我们“无需辨别字符,只需正确划分即可通过测试”的初衷相符合。
同时,用户反馈的一些问题同样值得注意:比如字母之间的间隙过小容易误操作、较为粗大的手指容易挡住视线从而不宜进行准确的划分等。
这也是我们后期将要考虑的问题。
3 总结及展望
本文首先回顾了验证码的发展历史,其中重点介绍了文本验证码的发展与威胁,由此提出了一种适用于移动端的文本验证码响应方式:Slide-CAPTCHA。
Slide-CAPTCHA针对文本验证码在移动端可用性下降的问题,旨在保证文本验证码安全性不下降的前提下,提高文本验证码在移动端的可用性。
实验结果表明,Slide-CAPTCHA所采用的滑动分割响应方式在移动端带来了可用性的极大提高。
提取Slide-CAPTCHA的滑动特征,结合人类滑动操作的不确定性和机械操作的规律分析滑动特征,从而辅助Slide-CAPTCHA进行验证,以达到提高Slide-CAPTCHA的成功率,带来更好的可用性。
参考文献
* [1]李凯胜.中文验证码识别技术研究[D].西安:西安电子科技大学,2014.
* [2]尹龙,尹东,张荣,等. 一种扭曲粘连字符验证码识别方法[J]. 模式识别与人工智能,2014,27.
* [3]殷光, 陶亮. 一种SVM验证码识别算法[J].计算机工程与应用,2011, 47(18): 188-190.
* [4]王璐.验证码识别技术研究[D].合肥:中国科学技术大学,2010.
* [5]张亮, 黄曙光, 石昭祥, 等.基于LSTM型RNN的CAPTCHA 识别方法[J].模式识别与人工智能, 2011, 24(1): 40- 47.
4 总结
想要有效提高软件开发效率,加强软件开发编程的安全性以及实用性,就要在软件开发设计的过程中或者是计算机编程的过程中,采用汇编语言与C语言的混合程序进行设计。
借助汇编语言与C语言两种语言的优势,形成互补,但是在实际使用的过程中,必须要对其中关键性问题引起注意。
参考文献
* [1]罗珈. 汇编语言与C语言的混合程序设计技术[J]. 信息与电
脑(理论版), 2017(11):90-91.
* [2]李明阳. 基于汇编语言与C/C++语言混合编程的设计研究[J]. 电子世界, 2017(3):188-189.
* [3]张丽. 汇编语言和C语言的混合编程方法分析[J]. 电脑编程技巧与维护, 2016(19):21-22.
* [4]程和生, 程和侠, 刘路路. 汇编语言与C语言混合编程教学初探[J]. 合肥师范学院学报, 2016(6):84-86.
* [5]刘兆津. 多断口真空开关同步控制系统的研究和设计[D]. 大连工业大学,2016(6):65
(上接第64页)
www�ele169�com | 57。