寄存器——内存访问
内存中字的存储大小是16bit。
如果我们想要对内存进行访问,我们要知道一个寄存器。
DS——date segment.
比如我想访问10000h处的内存,我们需要设置ds的值为1000h。
先看程序:
mov ax,1000h
mov ds,ax
这样ds寄存器已经修改成了1000.
如果我们想要对1000:0000这块内存进行写入,看如下程序:
mov ax,1000h
mov ds,ax
mov bx,1234
mov [0000],bx
现在1000:0000这块地址的值已经被修改成了34,1000:0001的值已经被修改成了12。
这块地址的值已经修改了,我们现在把这块地址的值读取到dx。
mov ax,1000h
mov ds,ax
mov bx,1234
mov [0000],bx
mov dx,[0000]
可以看到,dx的值是1234。
可以知道,ds的内存大小是从1000:0000~1000:ffff。
处了对内存的管理,还可以对栈进行管理。
首先我们要知道,什么是“栈”。
“栈”就是先进后出,后进先出的数据结构。
我们使用哪些寄存器来管理栈?
使用:ss和sp来管理栈。
ss——stack segment
sp——stack point
使用:push和pop来修改ss和sp的值。
看如下程序:
mov ax,1000
mov ss,ax
mov sp,0010
mov bx,1234
push bx
mov bx,5678
push bx
pop ax
pop bx
add ax,bx
push ax
pop bx
当然,栈是有界限的,比如以上程序栈的界限是在1000:0000~1000:000f 的这个范围之内,所以,我们在使用栈的时候要注意栈的界限防止越界。