内存访问首先要有地址,8086pc中的段地址存放在 ds 寄存器中(ds 和 cs是不一样的,cs是定位地址用于读取内存中的指令或者数据,而ds是读取内存中的数据时使用,下面我们会明白区别)
将内存中的数据写入寄存器:
mov bx,1000H
mov ds,bx
mov al,[0]
第一句是把1000H给bx(寄存器),第二句把bx中的值给ds(段地址寄存器),第三句从1000:0H中读取数据给al(寄存器ax的低8位);至于为什么不直接把段地址1000H给ds,这是8086硬件设计的问题,咱只能这么做了。
把最后一句改成 mov [0],al 意思就是把寄存器ax的低8位写入内存地址1000:0H处。
可以做以下例子:
mov ax,1000H
mov ds,ax
mov ax,11316
mov [0],ax
mov bx,[0]
sub bx,[2]
mov [2],bx
内存中的数据:
10000H:23
10001H:11
10002H:22
10003H:11
最后的结果会让你吃惊的,想知道的话就留言吧。
原文地址:http://blog.csdn.net/qq_20480611/article/details/45850925