汇编基础(二)

寒假看B站小甲鱼视频的笔记二

CPU概述

一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。

内部总线和外部总线

内部总线

实现CPU内部各个器件之间的联系。

外部总线

实现CPU和主板上其他器件的联系。

寄存器概述

8086CPU有14个寄存器,其中有8个通用寄存器。

通用寄存器

8086CPU有14个寄存器,都是16位的,每个寄存器可以存放两个字节,即一个字。

什么是通用寄存器

AX、BX、CX、DX通常用来存放一般性数据,称为通用寄存器。

8086上一代CPU中的寄存器都是8位的,所以为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用。

AX可以分为AH和AL,分别是高位和低位。其他三个通用寄存器同理。

如何兼容:AH都为0,单独拿个AL来用。

==兼容应该是指编写的在8位寄存器上运行的汇编代码可以在16位寄存器上运行吧?==

通用寄存器的结构

以AX为例

16位:从低地址到高地址分别是0-15。

16位数据在寄存器中的存放情况

数据 二进制表示 在寄存器AX中的存储
18 10010 0000000000010010
20000 100111000100000 0100111000100000

一个16位寄存器所能存储的数据的最大值:2^16-1

字在寄存器中的存储

一个字是两个字节。

字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。

几条汇编指令

汇编指令不区分大小写!

汇编指令 高级语言描述
mov ax,18 ax=18
add ax,bx ax=ax+bx

在进行数据传送或运算时,要注意指令的两个操作对象的位数应该是一致的。

如果加法结果超出最大值,会存储低位,但多出来的位也没有扔掉。

AL也遵循上边的规则,多出来的位不会在AH里。

物理地址

所有的内存单元构成的存储空间是一个一维的线性空间。

CPU访问内存单元时要给出内存单元的地址。

这个唯一的地址就是物理地址。

16位结构的CPU

特征

运算器一次最多可以处理16位的数据。

寄存器的最大宽度为16位

寄存器和运算器之间的通路是16位的

8086地址加法器工作原理

物理地址=段地址*16+偏移地址

段地址*16 二进制表示的话 :段地址左移四位 十六进制表示的话 段地址左移一位

一个数的X进制左移n位,相当于乘以$X^n$。

段的概念

看P9吧,没看呢


作者:@臭咸鱼

转载请注明出处:https://chouxianyu.github.io

欢迎讨论和交流!