内存空间分布:
一般从内存低地址到高地址,依次为:
代码段(code segment):储存代码
数据段(data segment):保存全局数据和静态数据
堆(heap):给动态分配内存。当使用malloc函数分配内存时,新分配的内存就被添加到堆上,
栈(stack):存放着局部变量和函数参数等
当我们用汇编语言写程序时,就要对各种段进行定义:
例如这个程序:在屏幕上显示一个字符串“Hello”
data segment
string db 'Hello',13,10,'' ;字符串以’’符号结尾,以单引号括起来
data ends
code segment
assume cs:code,ds:data
start:;程序的入口地址
push ds;save old data segment
sub ax,ax;ax寄存器清零,作为数据段0偏移地址
push ax;零偏移地址入栈
mov ax,data
mov ds,ax;把数据段地址装入数据段寄存器ds
lea dx,string;把字符串首地址装入dx寄存器,或写成mov dx, offset string
mov ah,9;DOS功能调用,在屏幕上显示字符串
int 21h;DOS中断
mov ah,4ch;return to DOS
int 21h
code ends
end start;汇编的结束,程序在此执行
0