实验三 编程,编译,连接,跟踪

实验内容:

(1)将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe

assume  cs:codesg

codesg  segment

      mov  ax , 2000H

      mov  ss , ax

      mov  sp , 0

      add  sp , 10

      pop  ax

      pop  bx

      push  ax

      push  bx

      pop  ax

      pop  bx

      mov  ax , 4c00H

      int  21H

codesg  ends

end

具体操作如下:

a.在Edit中编辑程序,然后保存文件D:t1.asm后,退出Edit

b.对程序进行编译

c.对程序进行连接和执行

(2)用Debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

具体操作如下:

a.Debug将程序从t1.exe中加载入内存,然后用r命令查看一下寄存器的设置情况再用u命令查看一下其他指令

b.然后开始进行跟踪,用t命令单步执行程序中的每一条指令,并观察每条指令的执行结果,直到得到int 21

c.最后,用p命令执行int 21

 (3)PSP的头两个字节1是CD 20,用Debug加载t1.exe,查看PSP的内容。

具体操作如下:

注:最后是使用q命令退出

实验总结:

1.汇编程序从写入到执行的过程:编程(Edit)~ t1.asm ~ 编译(masm)~ t1.ojb ~ 连接(link)~ t1.exe ~ 加载(command)~ 内存中的程序 ~ 运行(CPU)

2.在DOS中用“debug t1.exe”运行Debug对t1.exe进行跟踪时,程序加载顺序是:command加载Debug,Debug加载t1.exe

   返回顺序是:从t1.exe中的程序返回到Debug,从Debug返回到command

猜你喜欢

转载自www.cnblogs.com/ZR-1997/p/9889396.html