|
发表于 2018-8-13 16:26:16
|
显示全部楼层
1、CS和DS都是段寄存器
2、
/*
物理地址:内存单元在计算机中的唯一编号,CPU根据物理地址才能找到 对应 的 内存单元,内存单元中存着数据。
8086中的 物理地址 = 基础地址(段地址 * 16 ) + 偏移地址
计算机中的内存被人为看成是一维的连续内存块。内存单元中存储的数据的本质都是二进制。但是有些是代码,有些是数据。
所以就人为的设置那个段是代码段,那个段是数据段。CPU设计上也就有了 CS和DS。
CS:代码段寄存器 (存放着代码段的 段地址)
DS:数据段寄存器 (存放着数据段的 段地址)
*/
3:
/*
1: MOV BX 1000H
2: MOV DS BX
3: MOV AL [0]
*/
//上述中的1、2、3数字实际代码中不存在,仅表示行号。
//1:把 物理地址为 1000H 的 内存单元中的数据 送入 BX
//2:把 BX中存放数据的地址 送入DS,因为DS只能存放数据段地址
//3:[] 在mov 指令中标表示一个 内存单元,里面的 0 表示偏移地址。这里没有给出段地址,MOV 就无法根据物理地址做操作,CPU这时候就会默认自动去
DS中取段地址。取的地址为 1000H:0 ,然后MOV根据这个物理地址,找到对应内存单元中的数据,将这个数据送入AL寄存器中。
注:8086微处理器不支持直接将数据送入段寄存器,所以用BX作为中间变量。
纯手打,希望能采纳!
|
|