CelestialCosmic / themeblog

blog articles by Celestial_Cosmic,source code by chanshiyucx
0 stars 0 forks source link

汇编笔记(一) #21

Open CelestialCosmic opened 2 years ago

CelestialCosmic commented 2 years ago

2021/12/22

数据类型

比特(bit):最基础的组成单位,即 0、1

字节(byte):一类由 8 比特组成的数据,可以存在 8 位寄存器中,其最大值为 255

字(word):一类由 2 字节组成的数据,可以存在 16 位寄存器中,其最大值为 65535

四个通用寄存器

16位寄存器 AX、BX、CX、DX,都能存 16 字节的信息,也能分成 2 个独立的 8 位寄存器使用,此时 AX 前 8 字节叫 AH、后 8 字节叫 AL。

在逻辑上,寄存器中的字节自右向左排列,最右的是 0。

汇编指令

指令形式

mov ax,18为例

mov 叫“指令”,ax,18 叫“操作数”

指令或寄存器的名字不区分大小写

mov ax,18等价于MOV AX,18

mov 指令

赋值:将操作数(也可以是另一个寄存器中的数)送入寄存器

add 指令

相加:将寄存器中的数与操作数(也可以是另一个寄存器中的数)相加,结果存在左寄存器中

操作数是十进制的,相加时,会转换为十六进制。如果最高位发生进位,其进位的值会“丢失

物理地址标记

物理地址实际由“段地址”与“偏移地址”在地址加法器中合成

$$物理地址 = 段地址 \times 16 + 偏移地址$$

段与段寄存器

段是一片内存(由 CPU 定义),它的起始地址叫做“段地址”,该片内存的物理地址可以用段地址 + 偏移量来表示

段同样需要寄存器来存储,这些寄存器叫做“段寄存器”,分别是 CS DS SS ES。

内存存储

任意一节内存中,一个字使用两个字节存储,从右向左读,即从高位内存向低位内存存储。