码迷,mamicode.com
首页 > 编程语言 > 详细

【汇编语言】——第四章课后总结

时间:2018-11-25 17:46:13      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:结构   使用   程序   ram   masm   文件加载   写入   com   segment   

1.源程序

assume cs:codesg
codesg segment
  mov ax,0123h
  mov bx,0456h
  add ax,bx
  add ax,ax
mov ax,4c00h
int 21h
codesg ends
end

①伪指令:没有对应的机器指令,最终不被CPU所执行

如上述程序segment和ends是一对成对使用的伪指令,可以用来定义一个段;一个有意义的汇编程序中至少有一个段,这个段用来存放代码。

②end

end是一个汇编程序结束的标记,ends是“end segment”这里要记清楚

③assume

假设某一段寄存器和程序中的 某一segment...ends定义的段相关联。

2. 源程序中的“程序”

汇编指令:指源程序中最终由计算机执行、处理的指令或数据(汇编指令经编译、连接后转变为机器码)

3. 标号

一个标号指代了一个地址。例如code在segment的前面作为一个段的名称,此名称最终会被编译、连接处理为一个段的段地址

4. 程序的结构

 ①先定义一个段,名称为code

 ②在此段中写入汇编指令

 ③指出程序在何处结束,利用end

 ④用assume将段和其功能相关联的段寄存器联系起来

5. 程序返回

一个程序结束后,将CPU的控制权交还给使它得以运行的程序

上述程序中的

mov ax,4c00h

int 21h

这两条指令实现的功能就是程序的返回

6.程序编辑,编译,连接和执行

以上述程序为例:

①编写源程序,保存为test.asm:

技术分享图片

 ②编译,打开masm汇编编译器,进入目录运行上述保存文件:

技术分享图片

③我们已经通过编译得到obj文件,再通过连接得到exe文件:

技术分享图片

④最后执行这个文件:

技术分享图片

7.程序执行过程的跟踪

① 使用debug观察程序运行过程:debug p1.exe

②用r查看各个寄存器:CX存放的是程序的长度

③dos系统中.exe文件加载的过程:

    (1)程序加载后,ds保存程序所在内存区的段地址,偏移地址为0,此程序所在的内存区的地址为ds:0;

    (2)此内存区的前256个字节中存放的是PSP(程序段前缀——记录了返回地址,程序数据大小等信息,dos用来和程序通信)

    (3)从256个字节处向后的空间存放的是程序,物理地址为 ds+10h(ds和cs的值总相差10h,ds=cs+10h)

④可以用U命令查看其他指令

⑤用t单步执行,会显示“Program terminated normally”

⑥程序加载的顺序:(1)command加载debug,debug加载p1.exe;返回的顺序:(2)从p1.exe中的程序返回到debug,从debug返回到command

【汇编语言】——第四章课后总结

标签:结构   使用   程序   ram   masm   文件加载   写入   com   segment   

原文地址:https://www.cnblogs.com/hongyezhu/p/10016107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!