进一步学习通用寄存器

寄存器的种类

现代计算机中,寄存器都是由CPU提供的,寄存器就在cpu里面。
计算器按照存储宽度可以划分如下:


寄存器的分类

说明几点

1.不同的寄存器有不同的功能,这个我们暂时先不用管

  1. 寄存器是随着硬件不断发展变化的。现在已经有64位的寄存器了,将来可能还会有128位的寄存器

寄存器的结构

寄存器的结构

可以看到,32位的寄存器中是嵌套着1个16位的寄存器,16位的寄存器嵌套着两个八位的寄存器。

大家可以找找规律,16位的寄存器名称就是把32位寄存器名称中的E给去掉了。而8位的寄存器,把16位寄存器划分为高位和低位,高位用H(high)表示,低位用L(lower)表示。

为什么要设计成这种嵌套关系?

1.硬件不断发展的原因。将来要增加64位的寄存器,直接套在32位上就可以。既可以保持兼容,有可以自由扩展

  1. 存储不浪费。寄存器已经到32位了,我要存储8位的数据,那我们使用8位寄存器就可以。剩下的空间就可以给其他数据使用。

演示

我们可以通过mov指令来演示一下这种嵌套关系

#指定一次如下
mov eax,0xAAAAAAAA
mov ax,0xBBBB
mov al,0xEE
mov ah,0xHH
image.png

连续4次F8,执行4次。结果以此如下图:


image.png


image.png

image.png

根据这个实验,大家就能形象出寄存器的结构

mov指令的用法

立即数的概念

通常把在立即寻址方式指令中给出的数称为立即数。
立即数可以是8位、16位或32位,该数值紧跟在操作码之后
mov eax,0xAAAAAAAA0xAAAAAAAA就是立即数

mov指令的用法

image.png

根据语法,我们可以写这样的指令
mov eax,0xAAAAAAAA
还可以写这样的指令
mov eax,ebx

image.png

注意这里的mov和我们linux系统的mov是不一样的,linux系统的move是移动,而这里mov是拷贝

几个简单指令

ADD 指令:加
SUB 指令:减
AND指令:逻辑与
OR指令:逻辑或
NOT指令:逻辑非
XOR指令:逻辑异或

ADD指令演示

ADD指令是源操作数与目标操作数进行逻辑与运算,运算结果再放到目标地址中
我们写这样两条命令

image.png

按F8后,发现eax中值为2,符合我们的预期

再按F8后

是没有执行吗?
不是,如图

我们可以再增加一体语句or eax,3
image.png

执行后结果如图:
image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 组件 计算机是一种数据处理设备,它由CPU和内存以及外部设备组成。CPU负责数据处理,内存负责存储,外部设备负责数...
    哆啦灬少A梦阅读 5,540评论 1 2
  • 1.地址总线,数据总线,控制总线在哪里,它们有什么作用?答:它们都是cpu连接外部组件的线路。地址总线:地址总线A...
    MagicalGuy阅读 5,464评论 0 1
  • 2.4通用寄存器下 本节必须掌握的知识点: u掌握DTDebug界面、并熟练使用 u熟记汇编窗口的组成及寄存器窗口...
    编程达人阅读 4,638评论 0 0
  • 汇编(通用寄存器_内存读写)寄存器分为64位 32位 16位 8位寄存器,现阶段最多的就是64位寄存器,不过好多程...
    池寒阅读 7,573评论 0 1
  • 上班第一周,一直感觉没有睡够。今天去做艾灸,趴着灸大椎的时候睡着了,朦胧中听到窸窸窣窣的声音。第一反应是儿子醒了,...
    __viky维阅读 949评论 0 0