汇编学习记录之五

版权声明:转载请注明出处 https://blog.csdn.net/wjintao/article/details/84302559

资料来源:汇编语言第二版-王爽

1.段的综述

我们可以将一段内存定义为一个段,用一个段地址指示段,用偏移地址访问段内的单元,这完全是我们自己的安排。

我们可以用一个段来存放数据,将它定义为“数据段”,将它的段地址放在数据段寄存器ds中,用mov,add,sub等访问内存单元的指令时,CPU就会将我们定义的数据段中的内容当作数据来进行访问。

我们可以用一个段来存放代码,将它定义为“代码段”,将它的段地址放在代码段寄存器cs中,将代码段中第一条指令的偏移地址放在指令指针寄存器ip中,CPU就会将我们定义的代码段中的内容当作代码指令来执行。

我们可以用一个段当作栈,将它定义为“栈段”,将它的段地址放在栈段寄存器ss中,将栈顶单元的偏移地址放在栈顶指针寄存器sp中,这样CPU在执行push、pop指令时就会将我们定义的栈段当作栈空间来使用。

不管我们如何安排,CPU将内存中的某段内容当作代码,是因为cs:ip指向了那里;CPU将标段内存当作栈空间,是因为ss:sp指向了那里。

我们一定要清楚,什么是我们的安排,以及如何让CPU按照我们的安排行事。要非常的清楚CPU的工作原理,才能在控制CPU来按照我们的安排运行的时候做到游刃有余。

2.Debug的使用

(1)什么是Debug?

Debug是Dos、Windows都提供的实模式(8086方式)程序的调试工具。使用它可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

扫描二维码关注公众号,回复: 4254439 查看本文章

(2)常用的Debug功能指令

r 指令查看、改变CPU寄存器的内容

d 指令查看内存中的内容(数据)

e 指令改写内存中的内容(数据)

u 指令将内存中的机器指令翻译成汇编指令

t 指令执行一条机器指令

a 指令以汇编指令的格式在内存中写入一条机器指令

p 指令退出程序或者快速执行循环体

g 指令可以让CPU执行到指定位置

3.一个汇编源程序从写出到执行的过程

(1)编写汇编源程序:

在文本编辑器中使用汇编语言编写汇编源程序,生成一个存储汇编源程序文本文件(.asm)。

(2)对汇编源程序进行编译链接:

使用汇编语言编译程序对汇编源程序文件中的源程序进行编译,产生目标文件;

再用连接程序对目标文件进行连接,生成可以在操作系统中直接运行的可执行文件。

可执行文件中包含两部分内容:

(2.1)程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)

(2.2)相关的描述信息(比如,程序有多大、要占用多少内存空间等)

(3)执行可执行文件中的程序。

在操作系统中,执行可执行文件中的程序。操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置cs:ip指向第一条要执行的指令),然后由CPU执行程序。

有错误请指正,谢谢。

猜你喜欢

转载自blog.csdn.net/wjintao/article/details/84302559
今日推荐