《汇编语言第三版》王爽著 ------读书笔记
6.1 在代码段中使用数据
在规范的角度来讲,应该由系统来为我们分配内存空间.
伪汇编指令(编译器识别)
db: 定义字节类型变量
程序
assume cs:code
code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h'
start: mov bx,0
mov ax,0
mov cx,8
s:add ax,cs:[bx]
add bx,2
loop s
mov 4c00h
int 21h
code ends
end start
可执行程序
由 描述信息 和 程序 组成,
描述信息: 主要是编译,连接程序对源程序中相关伪指令进行处理得到的信息
程序: 来自于 源程序中的汇编指令 和定义的数据;
伪指令 end 的作用
end 除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方
例:end start 指明了程序的入口在标号 start处,标号 start 是一个地址
在编译、连接后,由 " end start " 指明的程序入口,被转化为一个入口地址,
存储在可执行文件的描述信息中
当程序被加载进内存后,加载者从程序的可执行文件的描述信息读到程序的入口地址,
设置CS:IP
assume cs:code
code segment
...数据...
start:
...代码...
code ends
end start
6.2 在代码段中 使用 栈
回顾第三章 栈的知识点
6.3 将数据,代码,栈放入不同的段
原因:
1)放到同一个段中使程序显得混乱
2)在8086模式中,一个段的容量 不能大于 64KB程序框架:
assume cs:code
data segment
dw 0123h,0456h
data ends
stack segment
dw 0,0,0,0
stack ends
code segment
start: 第一条命令
code ends
end start