我是牛牛,双号 发表于 2013-12-18 22:59:45

菜鸟的汇编问题,王爽习题求解


这量题目
assume cs:codesg
codesg segment
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
    dw 0,0,0,0,0
start:mov ax,cs
    mov ss,ax
    mov sp,1ah
    mov ax,0
    mov ds,ax
    mov bx,0
    mov cx,8
s:push ds:
    pop cs:
    add bx,2
    loop s
    mov ax,4c00h
    int 21h
codesg ends
end start

我是这么填的debug的时候,看了下内存中的内容和预一样

但执行到push命令前,本来5个0的地方都变成有数了

不过这还好,但push以后,上图画线的地方数字变了,而且原来没变的地方也变了,为什么?



霸气外露 发表于 2013-12-20 00:34:01

首先你这个答案填错了,亲。运行肯定一定错误。

霸气外露 发表于 2013-12-20 01:09:55

本帖最后由 霸气外露 于 2013-12-20 01:11 编辑

正确的是,mov ax,cs
mov sp,36
pop cs:
然后你在调试。

我是牛牛,双号 发表于 2013-12-20 23:32:14

这三行让我加哪里,我写的应该没有错,执行的结果是对的。
但是在执行的过程中,修改了原来数据段中的内容。我是这点弄不明白。

lcwwq 发表于 2013-12-21 22:42:04

本帖最后由 lcwwq 于 2013-12-22 02:59 编辑

我Copy楼主的程序进行调试,结果确实和楼主的现象一样。不过程序执行完成时,结果是正确的。不过按道理0C77:000E这个字单元不应为0,而是原来的0987H。到底是什么原因?是不是这个程序不够完整?严谨?


我是牛牛,双号 发表于 2013-12-24 21:00:14

lcwwq 发表于 2013-12-21 22:42 static/image/common/back.gif
我Copy楼主的程序进行调试,结果确实和楼主的现象一样。不过程序执行完成时,结果是正确的。不过按道理0C77 ...

你也是这样的,至少说明是有规律的~:lol:

我是牛牛,双号 发表于 2013-12-24 21:01:02

ryan0632 发表于 2013-12-23 18:40 static/image/common/back.gif
我是打酱油的,鱼C有你更精彩

我看好你哦

sokou001 发表于 2013-12-28 19:52:53

本来就是让0:0—0:15单元的内容修改原来程序中的数据啊   !

sokou001 发表于 2013-12-28 20:00:13

你看一下70页 3.19的问题 貌似很想 我感觉是吧寄存器的内容入栈了 - - 不过也不明白 书上说后面会懂

我是牛牛,双号 发表于 2013-12-28 23:29:09

sokou001 发表于 2013-12-28 20:00 static/image/common/back.gif
你看一下70页 3.19的问题 貌似很想 我感觉是吧寄存器的内容入栈了 - - 不过也不明白 书上说后面会懂

谢谢哥们,好像看出点什么,cs,ip栈了,还有什么没看出来. 我跳着看的

你要看到了说明,记录给我留个言,thanks
页: [1]
查看完整版本: 菜鸟的汇编问题,王爽习题求解