实验2 用机器指令和汇编指令编程

Posted zsznb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验2 用机器指令和汇编指令编程相关的知识,希望对你有一定的参考价值。

实验二 用机器指令和汇编指令编程

实验任务

(1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

mov ax, ffff

mov ds,ax

mov ax,2200

mov ss,ax 

mov sp,0100

mov ax,[0]

add ax,[2]

mov bx,[4]

add bx,[6] 

push ax

push bx

pop ax

pop bx 

push [4]

push [6]

代码截图:

技术分享图片

技术分享图片

实验结果:

技术分享图片

技术分享图片

技术分享图片

 

分析:此实验使用栈实现了寄存器值的交换,语句mov ss,ax和语句mov sp,0100在使用t命令单步执行时,同时进行。

 

2.仔细观察图3.19中的实验过程,然后分析,为什么2000:0~2000~f中的内容会发生改变?

 

 技术分享图片

 

分析:经过对图3.19的观察和实践,我们在2000H内存段创建了一个栈,栈的最大空间是10H,ss:sp指向了栈顶2000:10H,表面栈空,给ax赋值后压栈。 初始没有执行这段代码时,我们使用d命令观察2000:00内存,都是00,怎么创建栈结构指向这段内存时,我们发现有些数据改变了。这些数据是什么?我们发现这里面有cs值、ip值、ax值(这个容易看出来),还有bp值(00 00),还有flag的值。t命令实际是引发了单步中断,执行中断例程时,CPU会将一些中断例程使用的的寄存器变量自动压栈到栈中,此例中就包括了上述的寄存器变量的值。我们可以不必理会这些寄存器的变量,我们只关心sp就可以了。有它指示,我们就可以对栈进行操作了。而此时的sp是正确的, 注意:这个栈和我们创建的栈是同一个栈结构(为什么,ss=2000H了),由于t命令必须保存寄存器变量的值(这个是中断程序定义的。)它也占用一定的空间。可能我们定义的栈空间比较小;频繁的使用push指令,为了避免栈顶超界,我们尽量使栈空间大些,就像此程序,设定栈空间是100H。

 

以上是关于实验2 用机器指令和汇编指令编程的主要内容,如果未能解决你的问题,请参考以下文章

实验2 用机器指令和汇编指令编程

汇编实验二 用机器指令和汇编指令编程

汇编语言实验2 用机器指令和汇编指令编程

汇编实验2 用机器指令和汇编指令编程

汇编语言实验1 查看CPU和内存,用机器指令和汇编指令编程

[汇编语言]实验一:查看CPU和内存,用机器指令和汇编指令编程。