编译、连接(MASM.EXE,生成目标文件, LINK.EXE, 生成可执行文件 )
assume cs:codesg
codesg segment // 代码段
start: mov ax, 0123H
mov bx, 0456H
add ax, bx
add ax, ax
mov ax, 4c00h
int 21h
codesg ends
end
XXX segment // 定义一个段
XXX ends // 段结束
一个汇编程序由多个段组成, 用来存放代码、数据、栈
assume cs:codesg // 将cs和代码段关联
一个程序结束后将CPU的控制权交给使它得以运行的程序--程序返回
mov ax, 4c00H
int 21H // 中断
当源程序很大时, 可以将他们分为多个源程序文件来编译, 每个源程序编译成目标文件后, 再用链接程序将他们链接到一起, 生成一个可执行文件
将机器码目标文件中的一些不能直接用来生成可执行文件的部分处理成可执行信息
操作系统是由多个功能模块组成的庞大、复杂的软件系统。任何通用的操作系统, 都要提供一个称为shell(外壳)的程序, 用户通过这个程序来操作计算机系统工作。
DOS中有一个程序command.com, 称为命令解析器
command设置CPU的CS:IP指向程序的第一条指令, 从而使程序得以运行
程序运行结束后, 返回到command中, CPU继续运行command
debug将程序载入内存, 设置CS:IP指向程序入口, debug不放弃对CPU的控制, 就可以用debug相关命令单步执行程序, 查看每条指令的执行结果
1.找到一段起始地址SA:0000的容量足够的内存
2.前256个字节, PSP, DOS要利用PSP来和加载程序通信
这个内存区前256字节存放PSP, dos用来和程序进行通信
显示program termainated normally, 返回到debug中