实模式的寻址
希望,记录
1. nasm的数据类型
2. X86的字节顺序是小端(little-endian)
3. 寄存器的种类
4. 线性地址
物理内存是CPU的源泉
在实模式下,只有1M寻址,而且是线性的
概括图:
1. nasm的数据类型
名称 | 位数 | 定义初始化常量(.data) | 定义非初始化(.bss) |
byte | 8 | db | resb |
word | 16 | dw | resw |
dword | 32 | dd | resd |
qword | 64 | dq | resq |
tword | 80 | dt | rest |
oword | 128 | do | reso |
yword | 256 | dy |
resy
|
2. X86的字节顺序是小端(little-endian)
所以,如果ax=0x5678,那么mov [0], al, mov [1], ah 与 mov [0], ax是等价的
3. 寄存器的种类
[16bit]
通用寄存器
AX accumulator
BX base
CX count
DX data
SP stack pointer
BP base pointer
DI destination index
SI source index
段寄存器
CS code segment
DS data segement
SS stack segement
ES extra segment
专用寄存器
IP instruction pinter
SP stack pointer
FLAGS或PSW program status word
其实,它的英文全称已经很好描述它的用途
段寄存器与偏移地址的缺省关系:
段 | 偏移 |
CS | EIP |
SS | ESP or EBP |
DS | EAX, EBX, ECX, EDX, EDI, ESI, 8位数或32位数 |
ES | EDI(用于串指令) |
FS | |
GS |
4. 线性地址
物理地址 = 16d x 段寄存器 + 偏移地址
范围 2^20(1M)
如:
ds: 200H, bx: 100H,那么[ds:bx]=10H x 200H + 100H = 2100H