传说。 发表于 2014-5-12 22:30:52

监测点10.5

assume cs:code
stack segment
        dw 8 dup (0)
stack ends
code segment
start:        mov ax,stack
                mov ss,ax
                mov sp,16
                mov ds,ax
                mov ax,0
                call word ptr ds:
                inc ax
                inc ax
                inc ax
                mov ax,4c00h
                int 21h
code ends
end start

这题问的是执行后ax的值。 为什么调试的时候IP的值我怎么看怎么不对。
CPU对这个程序到底是怎么执行的。

gone0308 发表于 2014-5-13 04:17:26

call指令下面的那条指令的IP(inc ax 的偏移地址)才是入栈的IP,因为ds与ss指的是同一段内存,所以call word ptr ds:就是call word ptr ss:, 也就是刚入栈的ip(即,inc ax,程序跳到了这里),然后一直往下执行,共执行了3个inc ax, 所以,ax = 3

gone0308 发表于 2014-5-13 04:21:08

http://bbs.fishc.com/thread-15505-1-1.html

gone0308 发表于 2014-5-13 04:22:21

这里有习题答案,以及题目的解答!

传说。 发表于 2014-5-13 23:16:58

gone0308 发表于 2014-5-13 04:22 static/image/common/back.gif
这里有习题答案,以及题目的解答!

感激。。。。。。。

www5956 发表于 2014-5-21 11:37:49

本帖最后由 www5956 于 2014-5-23 11:53 编辑

传说。 发表于 2014-5-13 23:16 static/image/common/back.gif
感激。。。。。。。
.................................

传说。 发表于 2014-5-21 17:46:52

www5956 发表于 2014-5-21 11:37 static/image/common/back.gif
狗垃圾挺会装比的嘛怒你妈废物的中国狗

这年头干啥都不容易。 灌水也要专业点啊。
页: [1]
查看完整版本: 监测点10.5