赵璐 发表于 2011-12-28 09:48:18

汇编实验5中的问题 求高手赐教!!!!!!!!!!!!!!!!!!!!

本帖最后由 赵璐 于 2011-12-28 22:00 编辑

今天刚学到汇编第六章的实验五
其中有一题代码如下
(程序1)
assume cs:code,ds:data,ss:stack
data      segment
dw         0123h,0456h,0789h,0abch,0defh,0cbah,987h
data   ends
stacksegment
dw   0,0,0,0,0,0,0,0
stackends
code   segment
start: mov ax,stack
       mov ss,ax
       mov sp,16
       mov ax,data
       mov ds,ax
      
       push ds:
       push ds:
       pop ds:
       pop ds:
       mov ax,4c00h
       int 21h
怎么不直接这样
(程序2)
assume cs:code,ds:data,ss:stack
data   segment
dw   0123h,0456h,0789h,0abch,0defh,0cbah,987h
data   ends
stacksegment
dw   0,0,0,0,0,0,0,0
stackends
code   segment
start: mov sp,16
       push ds:
       push ds:
       pop ds:
       pop ds:
       mov ax,4c00h
       int 21h
       code ends
       end start

这两种写法有什么区别我试了一下好像在当步执行时程序1和程序2的cs,ds,ss值不一样。为什么,什么造成的


求高手赐教!!!!!!!!!!!!!!!!!!!!

415968430 发表于 2011-12-28 17:33:13

我也新手,不过我感觉你debug一个程序的时候,初始时,ds:0指向的是程序的psp,所以要
mov ax,data
mov ds,ax
这样ds:0就指向第一个数据了。这样就不一样了啊。
ss.cs不一样就不知道了,可能系统分配给你放程序的地址空间不一样吧。
这只是我的理解,我也小菜鸟,望高手来…

赵璐 发表于 2011-12-28 20:23:53

原来这样 , 害我纠结了这么多天 ,:D谢了。
页: [1]
查看完整版本: 汇编实验5中的问题 求高手赐教!!!!!!!!!!!!!!!!!!!!