单⽚机基础之汇编语⾔⼊门学习(四)物理地址逻辑地址段寄存器与逻辑段
⼀个存储单元有⼀个物理地址,还有多个逻辑地址
物理地址:
就是⼀个存储单元的编号;
每个物理存储单元都有⼀个20位编号;
8086CPU物理地址范围:00000H~FFFFFH (16进制)
(寻址空间:2^20 = 1M)(2^10 = 1024b = 1kb)
逻辑地址:
在⽤户编程时,采⽤逻辑地址,形式为:
段基地址:段内偏移地址
物理地址:将逻辑地址左移4位,加上偏移地址就得到20位物理地址
例如
逻辑地址: 1230:100
物理地址: 12400(1230*10H+100)
为什么左移4位是x10H?
1111 1111
1111 1111 (左移4位即2^4= 16 ⽤16进制来表⽰就是10)
段寄存器与逻辑段:
**8086CPU有4个段寄存器,每个段寄存器⽤来确定⼀个逻辑段的起始位置,每种逻辑段均有各⾃的⽤途**
CS(代码段):指明代码的起始位置
利⽤CS:IP来取得下⼀条要执⾏的指令
SS(栈堆段):指明栈堆段的起始位置
利⽤SS:SP操作堆栈顶的数据
DS(数据段):指明数据的起始位置
利⽤DS:EA存取数据段中的数据
ES(附加段):指明附加段的起始位置汇编语言要什么基础
利⽤ES:EA存取附加段中的数据
注意:
EA是偏地址,称之为有效地址EA
若操作数在主存中,存取的⽅法有直接寻址⽅式,寄存器间接寻址⽅式,寄存器相对寻址⽅式,基址变址寻址⽅式和相对基址变址寻址⽅式
没有指明段前缀时,⼀般的数据访问在DS(数据)段
例如:
MOV AX,[1000H]; = MOV AX,DS:[1000H] (加粗部分其实也就是逻辑地址)
从默认的DS段中取出数据
MOV AX,CS:[1000H]
从指定的CS段中去除数据
(’[ ]'内指得就是偏移地址,“:”前⾯就是段的基地址,没有就是默认为DS)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论