鱼C论坛

 找回密码
 立即注册
查看: 2852|回复: 2

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

[复制链接]
发表于 2011-12-28 09:48:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 赵璐 于 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
stack  segment
dw     0,0,0,0,0,0,0,0
stack  ends
code   segment
start: mov ax,stack
       mov ss,ax
       mov sp,16
       mov ax,data
       mov ds,ax
      
       push ds:[0]
       push ds:[2]
       pop ds:[2]
       pop ds:[0]
       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
stack  segment
dw     0,0,0,0,0,0,0,0
stack  ends
code   segment
start: mov sp,16
       push ds:[0]
       push ds:[2]
       pop ds:[2]
       pop ds:[0]
       mov ax,4c00h
       int 21h
       code ends
       end start

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


求高手赐教!!!!!!!!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-28 17:33:13 | 显示全部楼层
我也新手,不过我感觉你debug一个程序的时候,初始时,ds:0指向的是程序的psp,所以要
mov ax,data
mov ds,ax
这样ds:0就指向第一个数据了。这样就不一样了啊。
ss.cs不一样就不知道了,可能系统分配给你放程序的地址空间不一样吧。
这只是我的理解,我也小菜鸟,望高手来…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-28 20:23:53 | 显示全部楼层
原来这样 , 害我纠结了这么多天 ,:D谢了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 14:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表