shuiyu 发表于 2017-6-29 22:39:40

《零基础入门学习汇编语言》实验二

本帖最后由 shuiyu 于 2017-6-29 22:45 编辑

小白刚学,不对的请各位大佬指正,谢谢{:10_254:}

由于鱼C论坛的回档,我昨天的笔记消失了.... 所以今天先补回昨天的两个笔记。

实验二

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

mov ax,ffff

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

mov ax,    ;ax= 5BEAH

add ax,    ;ax= 5CCAH

mov bx,    ;bx= 30F0H

add bx,    ;bx= 6027H

push ax       ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 5CCAH

push bx       ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6027H

pop ax      ;sp= 00FEH ,ax= 6027H

pop bx      ;sp= 0100H ,bx= 5CCAH

push       ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 30F0                 内容是根据前面的mov bx,    ;bx= 30F0H 得到的因为都是这个内存单元的数据

push       ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 2F37                内容是根据前面的add bx,    ;bx= 6027H得到的,用结果减掉前面bx的值就得到内容了

我的一些操作见下图:



(2)
仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
书本给出的答案:
答:因为在debug使用T等指令引发了中断造成的,中断过程使用当前栈空间存放cpu关键数据,所以,你的栈里就有些不是你操作的数据了。
这个问题后面会学到,不过这里也要有个印象,因为如果是在中断过程中压栈是栈越界的话,在windows下的命令窗口会强制关闭的。这个可能在你跟踪一些程序的时候会遇到,到时候有个思考方向。

自己的理解:当使用T命令引起中断,这其实也是一个异常(就是出错的意思);而一旦发生异常,CPU会调用某些程序,某些命令或机制去处理这些异常,或许也不是CPU主动的去调用,也可能是被动的要去调用执行。调用这些肯定要占用内存,刚好我们使用的内存段就在这;所以我们的内存段被占用了,从而发生了改变。

谢谢小甲鱼带来的视频教程,感谢!! {:10_303:}


   
本节结束,多谢览阅!
小白刚学,不对的请各位大佬指正,谢谢{:10_254:}

BellXu 发表于 2017-7-9 14:40:05

本帖最后由 BellXu 于 2017-7-9 14:42 编辑

为什么我内存里FFFF:0000开始的内容不一样呢?

我是大神哥哥 发表于 2017-7-9 15:10:00

BellXu 发表于 2017-7-9 14:40
为什么我内存里FFFF:0000开始的内容不一样呢?

每个计算机的内存地址都不一样,王爽汇编语言前面提到过。

shuiyu 发表于 2017-7-9 23:44:34

BellXu 发表于 2017-7-9 14:40
为什么我内存里FFFF:0000开始的内容不一样呢?

每一个电脑的内存里的数据都不一定是一样的哦{:10_254:},所以我们的答案都是不一样的,这题没有标准答案

BellXu 发表于 2017-7-10 20:05:23

我是大神哥哥 发表于 2017-7-9 15:10
每个计算机的内存地址都不一样,王爽汇编语言前面提到过。

明白了 感谢!

BellXu 发表于 2017-7-10 20:05:56

shuiyu 发表于 2017-7-9 23:44
每一个电脑的内存里的数据都不一定是一样的哦,所以我们的答案都是不一样的,这题没有标准答案

明白了 感谢!

我是大神哥哥 发表于 2017-7-15 17:30:32

       为什么2000:0~2000:F中的内容会发生改变?      这个问题我也思考了一下,首先栈段是自己安排的,CPU并不会由于这种安排,就在执行push、pop等栈操作指令时自动地将我们定义的栈段当作栈空间来访问。这段话,可以在王爽汇编语言第三版,第三章 栈段   找到。
       可想而知,当时设计人员为了不使出错,所以出现中断这么一个说法。具体想要了解得更清楚,所以需要学习到中断哪里。

shuiyu 发表于 2017-7-15 22:32:26

我是大神哥哥 发表于 2017-7-15 17:30
为什么2000:0~2000:F中的内容会发生改变?      这个问题我也思考了一下,首先栈段是自己安排的 ...

嗯嗯{:5_106:}毕竟现在知识有限,自己也不好多加推断和评论{:5_109:}

华灯初上7923 发表于 2017-10-27 10:16:04

为什么我的 mov ax, 老是提示错误啊

shuiyu 发表于 2017-10-27 13:54:13

华灯初上7923 发表于 2017-10-27 10:16
为什么我的 mov ax, 老是提示错误啊

问题解决了吗?没有的话截图发上来我帮你看看呗{:5_109:}

华灯初上7923 发表于 2017-10-31 21:18:09

shuiyu 发表于 2017-10-27 13:54
问题解决了吗?没有的话截图发上来我帮你看看呗

好像说什么是软件版本之类的问题?   ERROR- -09E7    我至今搞不明白课本上例程的相关软件怎么弄。。。老是各种非法命令、、、{:5_100:}

华灯初上7923 发表于 2017-10-31 21:22:12

shuiyu 发表于 2017-10-27 13:54
问题解决了吗?没有的话截图发上来我帮你看看呗

华灯初上7923 发表于 2017-10-31 21:22:51

shuiyu 发表于 2017-10-27 13:54
问题解决了吗?没有的话截图发上来我帮你看看呗

我用QQ的快捷键截图了但好像传不上来啊。。。

shuiyu 发表于 2017-11-1 16:49:27

华灯初上7923 发表于 2017-10-31 21:22
我用QQ的快捷键截图了但好像传不上来啊。。。

额。。。你是在32位系统里面运行的吗?我用的是XP的{:10_312:}

华灯初上7923 发表于 2017-11-2 15:24:42

shuiyu 发表于 2017-11-1 16:49
额。。。你是在32位系统里面运行的吗?我用的是XP的

后来加进群里有一位老铁帮我解决了兄弟加个Q以后和你探讨探讨 792355718{:5_100:}
页: [1]
查看完整版本: 《零基础入门学习汇编语言》实验二