8086汇编(一)架构基础

最近在学习《汇编语言(第三版)》,将一些知识点记录在此。

1. 8086架构

  • 16位处理器:寄存器均为16位
  • 20位地址总线,内存地址1MB
  • 16位数据总线

内存地址空间布局如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 ------------      00000
|            |
|   RAM      |
|            |
|            |
 ------------      9FFFF
|            |     A0000
| 显存地址空间|
|            |
 ------------      BFFFF
|   ROM      |     C0000
|            |
 ------------      FFFFF

  • RAM: 640kB空间
  • 显存地址空间:128kB空间,写入后会在控制台显示
  • ROM地址空间:256kB空间,不可写入

2. 寄存器和指令

  • 通用寄存器:ax, bx, cx, dx
  • 段寄存器:cs, ss, gs, x

段寄存器的值只能由其它寄存器给出,不能由立即数给出。

2.1. 物理地址计算

\[物理地址 = 段地址 x 16 + 偏移地址\]

段地址由cs给出,64kB大小,偏移地址由ip给出

  • jmp 段地址:偏移地址,例如jmp 2AE3:3
  • jmp 某一合法寄存器

2.2. 内存访问

读写的内存单元数据段地址由ds给出

  • mov 寄存器名, 内存单元地址([...])

2.3. 栈

栈段由ss给出,栈顶地址由sp给出

  • push
    1. SP = SP - 2
    2. 向SS:SP中写入数据
  • pop
    1. 从SS:SP中读取数据
    2. SP = SP + 2

可以给出下列指令

  • push/pop 寄存器
  • push/pop 段寄存器
  • push/pop 内存单元