|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 阿西吧 于 2017-7-3 16:31 编辑
第二十课
汇编语言编译的过程:源程序-》编译-》目标文件-》连接-》EXE
assume(假设) cs:codeseg (将codeseg指向cs段)
codeseg segment
xxxx
xxxx
mov ax,4c00h
int 21h (这是程序返回的代码,DOS下是单任务系统,所以要返回给另一个程序(command))
codeseg ends(这是一个段结束的标志)
end (编译结束的标志)
第二十二课
编译连接过程(MASM来编译,LINK来连接)
DOS命令c:\>cd xx 是打开xx文件夹
MASM编译生成.OBJ的目标文件
LINK连接将.BOJ生成为exe文件
简化编译连接可以在c:\masm 1.asm;(加上分号就可以直接编译)
用ML 1.asm直接编译连接成exe
第二十三课
在DOS单任务系统下,是command将程序加载入内存,然后command将cs和ip指向程序的第一条命令,程序结束后,command又将继续运行.
程序加载过程:
1.找到一段足够大的空闲地址空间(SA:0000)。
2.在这个空间的前256个字节中创建一个PSP的程序段前缀的数据区用来和DOS通信
3.所以程序的开始地址就是SA+10H:0000,psp和程序起始地址一样,但是段地址不一样
4.ds会指向PSP的段地址(SA),初始化后会设置CS:IP指向SA+10H : 0000这个地址
用debug加载程序的格式:c:\debug 1.exe
debug记载程序之后cx存放的是程序的长度(机器码所占的字节数)
Debug调试程序时候,到int 21指令时要用p命令来调试,不能用t了
|
评分
-
查看全部评分
|