计算机基础知识(1)——汇编语言基础入门(C语言转汇编方法)

汇编指令格式
生成汇编方法

1、 汇编指令格式

在去看汇编指令前,我们来看下 CPU 是如何执行我们的程序的,如下图所示,我们编译后
的可执行程序,也就是 main.exe,是放在代码段的,PC 指针寄存器存储了一个指针,始终指向要执行的指令,读取了代码段的某一条指令后,会交给译码器来解析,这时候译码器就知道要做什么事情了,CPU 中的计算单元 加法器不能直接对栈上的某个变量 a,直接做加 1 操作的,需要首先将栈,也就是内存上的数据,加载到寄存器中,然后再用加法器做加 1 操作,再从寄存器搬到内存上去。
CPU 读写寄存器的速度比读写内存的速度要快很多!
在这里插入图片描述
操作码字段:表征指令的操作特性与功能 (指令的唯一标识) 不同的指令操作码不能相同
地址码字段:指定参与操作的操作数的地址码

指令中指定操作数存储位置的字段称为地址码,地址码中可以包含存储器地址。也可包含寄存器编号。指令中可以有一个、两个或者三个操作数,也可没有操作数,根据一条指令有几个操作数地址,可将指令分为零地址指令。一地址指令、二地址指令、三地址指令。

零地址指令:只有操作码,没有地址码(空操作 停止等)
一地址指令:指令编码中只有一个地址码,指出了参加操作的一个操作数的存储位置,如
果还有另一个操作数则隐含在累加器中
eg: INC AL 自加指令
二地址指令:指令编码中有两个地址,分别指出了参加操作的两个操作数的存储位置,结
果存储在其中一个地址中(op a1,a2) a1 和 a2 的操作结果放入 a1
eg: MOV AL,BL
ADD AL,30
三地址指令:指令编码中有 3 个地址码,指出了参加操作的两个操作数的存储位置和一个
结果的地址(考研很少考)
(op a1,a2,a3: a1 和 a2 的结果放入 a3)

二地址指令格式中,从操作数的物理位置来说有可归为三种类型
1.寄存器-寄存器(RR)型指令:需要多个通用寄存器或个别专用寄存器,从寄存器中取操作数,把操作结果放入另一个寄存器,机器执行寄存器-寄存器型的指令非常快,不需要访存。
寄存器-存储器(RS)型指令:执行此类指令时,既要访问内存单元,又要访问寄存器。
存储器-存储器(SS)型指令:操作时都是涉及内存单元,参与操作的数都是放在内存里,从内存某单元中取操作数,操作结果存放至内存另一单元中,因此机器执行指令需要多次访问内存。

寄存器英文:register
存储器英文:storage

复杂指令集:变长 x86 CISC Complex Instruction Set Computer
精简指令集:等长 arm RISC Reduced Instruction Set Computin

2、 生成汇编方法

编译过程
第一步:main.c–>编译器–》main.s 文件(.s 文件就是汇编文件,文件内是汇编代码)
第二步:我们的 main.s 汇编文件—》汇编器—》main.obj
第三步:main.obj 文件–》链接器–》可执行文件 exe

CLion 生成汇编的步骤

1、首先我们需要设置环境变量,对此电脑右键点击,选择属性
2、点击高级系统设置
在这里插入图片描述
3、点击环境变量
在这里插入图片描述
4、双击path这一条路径
在这里插入图片描述
5、新建C:\mingw64\bin(前提是这个环境就安装在C盘)
在这里插入图片描述

首先要完成C语言的编写

把自己想要转汇编的代码写进main.c中,然后点击下端的终端。
在这里插入图片描述
然后再终端窗口中输入 gcc -S -fverbose-asm main.c 就可以生成汇编文件 main.s,如下
在这里插入图片描述
如下所示,输入 asm,安装 MC68000 插件,可以实现汇编代码高亮显示
在这里插入图片描述
显示效果如下:
在这里插入图片描述

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值