一、前言
直接寻址、间接寻址、立即寻址,只是CPU在通过总线与内存交互时的不同交互方法,而产生的三种概念词!
对于这些寻址方式,很多人没有听说过,但是对于学习汇编的同学来说,非常熟悉,很多书中都有提到过这几种寻址方式,但是没有细说,这里来给大家详细介绍一下这三种寻址方式的不同体现在哪里!
二、直接寻址
直接寻址即直接给出内存单元的物理地址/虚拟地址直接寻址!
详细说一下:
假如有一个内存,且大小是:0x00000000~0xFFFFFFFF
每个物理地址代表一个内存单元(这里抛开虚拟内存管理机制),那么我想要取得0x00000001地址里的数据,首先CPU需要通过地址总线找到该内存单元,然后通过控制总线确定操作方法,在通过数据总线将其数据送回来,便于处理!
那么我们要怎样将地址给CPU呢?
答:
放到CS段地址寄存器中,CS寄存器负责保存段地址,CPU会根据此段地址,去内存中将指令读取到CS:IP寄存器当中,然后执行!
假如我想要将0x00000001地址里的数据取出来,放到AX寄存器当中,那么需要在内存中写好指定代码:
MOVE AX,[DS:0x00000001H]
或
MOVE AX,[0x00000001H]
(AX内存=DS+0x00000001H)
DS是段寄存器
操作系统会自动帮我们把C