学习汇编基础
2022/1/14 14:05:52
本文主要是介绍学习汇编基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我们知道,CPU 只负责计算,本身不具备智能。你输入一条指令,它就运行一次,然后停下来,等待下一条指令。
这些指令都是二进制的,称为操作码,比如加法指令就是00000011
。编译器的作用,就是将高级语言写好的程序,翻译成一条条操作码。
对于人类来说,二进制程序是不可读的,根本看不出来机器干了什么。为了解决可读性的问题,以及偶尔的编辑需求,就诞生了汇编语言。
<机器语言是机器指令的集合。电子计算机的机器指令是一系列二进制数字。计算机将之转换为一系列高低电平脉冲信号来驱动硬件工作的。>
<由于机器语言指令都是由01组成,难以编写,记忆和维护程序.所以汇编语言为了解决这一问题产生。汇编语言的主体是汇编指令,汇编指令是机器指令的助记符。
寄存器: CPU中存储数据的器件,一个CPU中有多个寄存器。>
<汇编语言是二进制指令的文本形式,与指令是一一对应的关系。比如,加法指令00000011
写成汇编语言就是 ADD。只要还原成二进制,汇编语言就可以被 CPU 直接执行,所以它是最底层的低级语言。>
一.理论
1.指令
机器指令:CPU能直接识别并执行的二进制编码。
汇编指令:汇编指令是机器指令的助记符,同机器指令一一对应。
指令:指令通常由操作码和地址码(操作数)两部分组成。
指令集:每种CPU都有自己的汇编指令集。
汇编语言由3类指令组成:
{
汇编指令:机器码的助记符,有对应的机器码。(汇编语言的核心是 汇编指令 ,它决定了汇编语言的特性)
伪指令:没有对应的机器码,由编译器执行,计算机并不执行
其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
}
编译器:够将汇编指令转换成机器指令的翻译程序每一种CPU都有自己的汇编指令集。
· 在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
2.存储器
随机存储器(RAM)在程序的执行过程中可读可写,必须带电存储
只读存储器(ROM)在程序的执行过程中只读,关机数据不丢失
3.总线
(见 王爽《汇编语言》)
4.寄存器
<说到汇编指令不得不提到寄存器,寄存器本身是用来存数据的,因为 CPU
本身只负责逻辑运算,数据需要单独储存在其他的地方,但是对于不熟悉寄存器的人来说会有疑惑,数据不是存在硬盘上吗?或者说数据不是存在内存中吗?这些想法都没错,那么寄存器是用来做什么的呢?
其实硬盘、内存都是用来存储数据的,但是 CPU 的运算速度远高于内存的读写速度,更不用说从硬盘上取数据了,所以为了避免被拖慢速度影响效率,CPU 都自带一级缓存和二级缓存,一些 CPU 甚至增加了三级缓存,从这些缓存中读写数据要比内存快很多,但是还是无法使用飞速运转的 CPU,所以才会有寄存器的存在。
寄存器不是后来增加的,在最初的计算中就已经设计出来,相比而言,多级缓存出现的更晚一些,通常那些最频繁读写的数据都会被放在寄存器里面,CPU 优先读写寄存器,再通过寄存器、缓存跟内存来交换数据,达到缓冲的目的,因为可以通过名称访问寄存器,这样访问速度是最快的,因此也被称为零级缓存。
我们可以知道存取速度从高到低(也是价格排行)分别:寄存器>1级缓存>2级缓存>3级缓存>内存>硬盘,(机械硬盘本质是电磁存储,固态则是半导体存储)
(寄存器与存储器的区别:
1、寄存器存在于CPU中,速度很快,数目有限; 存储器就是内存,速度稍慢,但数量很大; 计算机做运算时,必须将数据读入寄存器才能运算。
2、存储器包括寄存器, 存储器有ROM和RAM......)
CPU由运算器、控制器、寄存器等器件构成,这些器件靠片内总线相连。
运算器进行信息处理;控制器控制各种器件进行工作;寄存器进行信息存储;
8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW都是16位
16位结构CPU具有下面几方面的结构特性:
(运算器一次最多可以处理16位的数据;
寄存器的最大宽度为16位;
寄存器和运算器之间的通路为16位。)
8086CPU可以一次性处理以下两种尺寸的数据:
(字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。
字:记为word,一个字由两个字节组成,可以存在一个16位寄存器中(16位CPU))
8086采用小端模式:高地址存放高位字节,低地址存放低位字节。
(通用寄存器、段寄存器、8086CPU给出物理地址的方法...见 王爽《汇编语言》)
待补充......
二.实践
加载后,CPU的CS:IP指向程序的第一条指令(即程序的入口)
1.汇编环境安装(所用为Masm)
三.总结
1.本周进行入门汇编,要结合各方资料充分认识和学习汇编。
2.遇到莫名其妙的汇编操作时,可以运用反汇编的方法帮助理解。
这篇关于学习汇编基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南