汇编语言基础3
一个包含多个段的程序:
ds寄存器一般存放数据段的段地址,cs:ip这两个寄存器一般存放的是代段的具体地址,es 段一个可以使用的临时存放变量的寄存器,SS:SP一般存放的就是栈的具体地址,前者位栈的段地址后者为栈的偏移地址。一般程序都有代码段,数据段,文本段,我们希望CPU 从代码段读取指令,通过使用栈来对数据段的数据进行修改,那么程序的本质就能够体现了。
这个程序是将0123H 0456H 这两个数据进行交换
assume cs:code ,ds:data,ss:stack 伪指令定义三个段地址
data segment
dw 0123h,0456h 定义数据段
data ends
stack segment 定义栈段
dw 0,0
stack ends
start: mov ax,stack
mov ss,ax
mov sp,16 给栈段赋上集体的地址
mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
使用栈来进行交换
mov ax,4c00h
int 21h
code ends
end start
原文地址:http://blog.csdn.net/zmrlinux/article/details/46508537