内存空间分布:
一般从内存低地址到高地址,依次为:
代码段(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
Posted in K60

Leave a Comment:

电子邮件地址不会被公开。