汇编语言篇——8086CPU的栈机制,掌握栈的使用

2023-11-30 23:45:47 浏览数 (1)

实验目的和要求

1、熟悉并掌握debug工具的使用;

2、理解8086CPU的工作过程;

3、理解8086CPU的栈机制,掌握栈的使用。

实验环境

Debug

实验内容及结果

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

mov ax,ffff

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

mov ax,[0]          ;ax=C0EAH

add ax,[2]          ;ax=C0FCH

mov bx,[4]          ;bx=30F0H

add bx,[6]          ;bx=6021H

push ax              ;sp=00FEH; 修改的内存单元地址是0100H内容为C0FCH

push bx              ;sp=00FCH; 修改的内存单元地址是00FEH内容为6021H

pop ax               ;sp=00FEH; ax=6021H

pop bx               ;sp=0100H; bx=C0FCH

push [4]             ;sp=00FEH; 修改的内存单元地址是0100H内容为30F0H

push [6]             ;sp=00FCH; 修改的内存单元地址是00FEH内容为2F31H

在debug里面运行截图

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

实验分析

(1).第一条指令使ax的内容修改为ffff,然后使ds指向ax,再通过ax将ss修改为2200,sp修改为0100再将ax改为0地址字单元对应的内容,ax的值再加上2地址字单元对应的值,bx的值修改为4地址字单元对应的值,bx的值再加上6地址字单元对应的值;最后将ax,bx的值 push进栈,再把ax,bx pop出栈,最后再把4地址字单元和6地址字单元对应的值push进栈;由于进栈的话sp的值会-2,出栈的时候,sp的值会 2由此可以得出每执行一步对应寄存器的值如上

(2).我感觉由于修改了ss的值则可能引发其他位置的值发生对应的变化

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞