前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇编语言篇——8086CPU的栈机制,掌握栈的使用

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

原创
作者头像
会洗碗的CV工程师
发布2023-11-30 23:45:47
2190
发布2023-11-30 23:45:47
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料

实验目的和要求

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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 实验目的和要求
  • 二 实验环境
  • 三 实验内容及结果
  • 四 实验分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档