学习汇编基础

        我们知道,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.遇到莫名其妙的汇编操作时,可以运用反汇编的方法帮助理解。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

f1sh3r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值