x86汇编
8086汇编
ATampT汇编
Intel汇编
ARM汇编
子程序进入到时,直接返回地址保存在LR寄存器中,返回有两种做法:
将LR然后赋给PC:MOVPC,LR
直接跳转:BXLR
虽然说汇编是一门单独的的语言,C也一门单独的的语言,它们看上去并没有什么联系,但是学习汇编这个可以帮助我们分析什么C语言程序的设计原理。要想精通C语言,需要先自学汇编才是正确的学习顺序。
举例说明:【“Hello World!”程序使用汇编表现】
建议使用“Hello World!”程序详细介绍,如图3-5-1所示。
图3-5-1中,我们只看见了C语言代码,并没有什么看见了汇编,我们该咋查看呢?在VisualC开发工具中,反汇编窗口,不需要下断点、按F7编译、按F5调试运行才能可以切换到反汇编窗口。该如何下断点哪?选中后“intmain(void)”这一行按F9,会在这一行代码前出现一个黄色的圆点,只能说明巳经断下断点,有图3-5-2所示。【注:按F9下断点只是在VisualC开发工具中不使用】
按F9下断点后,我们随即按F7,让程序编译,程序实际编译后再按F5现场调试,会再次出现如图3-5-3所示。
出现图3-5-3的界面之后,我们然后点击鼠标左键,又出现如图3-5-4界面。
中,选择Go ToDisassembly,会出现如图3-5-5的界面,说明成功可以切换到反汇编窗口,按F10一步一步地想执行。
下面的图片3-5-5中,有追加代码示例:
以上是一个求完整的函数调用,都是“Hello World!”程序的运行原理。
我们也也可以在C语言程序中合成一体汇编,我们一般称内联汇编。接下来的介绍内联汇编。
3.5.2【内联汇编】
内联汇编格式:
__asm
{
}
我们在里面添加一些代码:
#includeltstdio.hgt
intmain(void)
{
__asm
{
moveax,eax
movecx,eax
movedx,ecx
}
return0
}
我们在VisualC中输入代码示例CH03_5_1,如图3-5-6所示。
在main函数前下断点,我们切换到到反汇编窗口打开系统,如图3-6-7所示。
图3-6-7中的C语言代码和汇编代码追加:
1:#includeltstdio.hgt
2:intmain(void)
3:{
00401010pushebp
00401011movebp,esp
00401013subesp,40h
00401016pushebx
00401017pushesi
00401018pushedi
00401019leaedi,[ebp-40h]
0040101Cmovecx,10h
00401021moveax,0CCCCCCCCh
00401026repstosdwordptr[edi]
4:__asm
5:{
6:moveax,eax
00401028moveax,eax
7:movecx,eax
0040102Amovecx,eax
8:movedx,ecx
0040102Cmovedx,ecx
9:}
10:return0
0040102Exoreax,eax
11:}
00401030popedi
00401031popesi
00401032popebx
00401033addesp,40h
00401036cmpebp,esp
00401038call__chkesp(00401050)
0040103Dmovesp,ebp
0040103Fpopebp
00401040ret
总结“Hello World!”程序总共只写了9行代码,而编译器批量生成了很多汇编指令,同样“CH03_5_1”中的程序也只有一短短的11行代码,编译器也自动导入了很多汇编指令,毕竟汇编指令是可以让我们明白自己写的程序运行过程的原理,可是没有C语言更比较直观的可以体现出我们是想的结果。简单说来,汇编语言更妄想于详细解释程序启动的过程,C语言更被害妄想于具体解释结果。
如果没有我们把程序运行的过程弄清,这样当然能结论出程序的结果,反之,如果只清楚程序的结果并到底程序运行中是整样一步步利用的,那只能说我们并没有什么完全的学会了C语言。所以我这那是我们课程为啥学习汇编,我想知道为什么把汇编放进C语言之前讲的原因。
肯定这只不过在下一己之见,希望能大家一起来讨论。
苹果12pro max如何设置照片像素?拍照的话可以直接把相机模式调到专业模式,然后把对焦模式调到最高分辨率的自动对焦像素。苹果相机怎么设置4比3?iPhon:3的视频。IPhonviviv3max怎么设置拍照显示时间?如果拍照时想显示照片
win11唤醒屏幕需要密码怎么设置?w7沉睡中屏幕显示需要密码设置快速方法:1、首先直接点击系统托盘“macos品牌logo”直接打开工具栏。2、接着打开中的的“s”选项。3、然后再点击右边的“账户”进入。4、再可以找到下方其他设置中的“你
在使用WPS WORD编辑文档时,有时我们需要在表格中将首行标题在每一页都重复显示,以方便阅读和查看。下面将介绍如何通过简单的操作实现这一功能: 选择文档首行标题首先,打开包含表格的文档,在表格中找到你想要在每页重复显示的首行标题。 进入表
使用BAT批处理文件可以轻松地执行一些批量处理任务,但有时候我们也需要在其中弹出一个图形界面的对话框来进行提示或其他操作。本文将介绍如何制作一个自定义的对话框程序,并在BAT文件中调用该对话框。 制作BAT文件并添加自定义对话框程序首先,在
作为一款常用的输入法工具,QQ五笔提供了丰富的功能和设置选项,其中编码逐键提示是一个非常实用的功能。下面小编将详细介绍如何设置QQ五笔的编码逐键提示。一、选择输入法图标首先,在电脑上下载并安装QQ五笔输入法后,打开桌面右下角的输入法处。在输
? 正文: 一、引言 华为手机作为一款领先的智能手机品牌,提供了许多实用的功能和应用。其中,桌面计步器是一个非常有用的工具,可以帮助用户记录日常步数并监测运动情况。本文将详细介绍华为
钉钉作为一款领先的企业级沟通和协作工具,扫一扫功能为用户提供了便捷的信息交互方式。本文将从如何打开钉钉的扫一扫功能开始,结合实际操作,详细介绍如何使用扫一扫功能,并探讨其优势。一、打开钉钉的扫一扫功能1. 打开钉钉应用,进入主页面。2. 在
mtb88vip闪退怎么进不去直接闪退?Mtb88vip can t闪回,但可以 t直接闪回。点击88会员打开淘宝,进入我的淘宝选择88vip会员中心。2.点击管家进入,选择右上角专属管家。3.点击退款进入自助服务,选择申请退款。4.确认
红米2a定制机怎么变成非定制机?1.用移动叔叔刷第三方recovery。2.下载纯净卡刷包到手机上,网上大把的。3.先打开recovery,双清后刷入卡刷包。4.重起可以了。我刷过一次红米,搞得定再问我。小米单次授权安装也没法使用怎么办?小
蚂蚁庄园怎么让好友小鸡不来你家?你可以免费给你的朋友一份鸡饲料,它赢了 别来了。支付宝雇佣小鸡有什么用?1.雇鸡后,自家庄园的鸡和鸡会一起用饲料,然后把吃的饲料变成肥料。2.雇鸡会给你更多的生产力和更多的肥料,可以提高肥料的生产速度和产量。