第四章 第一个程序
assume cs:codesg
codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,bx
mov ax,4c00H
int 21H
codesg ends
end
- 定义一个代码段
xxx segment
...
xxx ends
end
汇编语言的结束标记assume 寄存器:代码段
假设某一段寄存器和程序定义的段相关联mov ax,4c00H
int 21H
这两条指令实现程序的返回功能
编辑源程序
- 配置在任意目录下运行
debug
相关命令
如果是通过本记录安装的汇编编译环境-win汇编环境搭建(dosbox自动脚本+debug),将启动配置的最后一个debug
移除,增加path=path;c:/debug
(启动配置其实就是cmd
命令) - 使用
vscode
编写汇编源程序
官方下载地址
安装插件
- 为了保持一个干净的目录,新建一个文件夹,下面是我的目录结构(源代码放在debug相同的磁盘分区上,因为前面我们对debug所在的磁盘进行了挂载,可以在dosbox中访问到)
- demo-asm
- demo001
- 1.asm
- 编辑1.asm,进行代码的编写
- 编译 链接 调试执行
masm 1;
link 1;
debug 1.exe
4.9 程序执行过程的跟踪
- 程序加载后,ds中存放着程序所在的内存区的段地址,偏移地址为0
- 这个内存区的前256个字节中存放的是PSP,256个字节之后存放的是程序
- 前16段,每段的内存范围是16,为256字节,比如ds中的内存地址为
0000
,前16段为0010
,偏移地址为一个16进制
- 程序的物理地址段为
(ds+10H)*16