| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2758 人关注过本帖, 1 人收藏
标题:[求助]王爽《汇编语言》第六章测试点6.1第二题
只看楼主 加入收藏
skybluechen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-2
收藏(1)
 问题点数:0 回复次数:11 
[求助]王爽《汇编语言》第六章测试点6.1第二题

题目要求:
下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内,完成程序:
assume cs:codesg
codesg segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
dw 0,0,0,0,0
start: mov ax,___
mov ss,ax
mov sp,___
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
_________
add bx,2
loop s

mov ax,4c00H
int 21H
codesg ends
end start
我写出的第一个程序为:
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,26
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
pop cs:[bx]
add bx,2
loop s

mov ax,4c00H
int 21H
codesg ends
end start
程序的运行结果如下图:

图片附件: 游客没有浏览图片的权限,请 登录注册

从上图可以看出,程序只在第一次循环时实现数据传送。这是为什么呢?还有一个问题让我不解,某个网友给出的参考答案跟我的答案是一致的。换言之,该网友使用上述源代码在其电脑上实现了程序预期的功能。难道问题出在我的电脑上,而不是我所写的源代码?
在我看来,初时ss:sp指向栈底,push [bx]指令让一个字的数据入栈,pop [bx]指令让一个字的数据出栈。这样一进一出,也就是循环一次后,ss:sp依然指向栈底。根据这种思路,栈空间的大小为一个字就足够了。根据这种思路,我将程序修改如下:
assume cs:codesg
codesg segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
dw 0
start: mov ax,cs
mov ss,ax
mov sp,18
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
pop cs:[bx]
add bx,2
loop s

mov ax,4c00H
int 21H
codesg ends
end start
程序的运行结果如下图:

图片附件: 游客没有浏览图片的权限,请 登录注册

从上图可以看出,我的思路有误。
以上问题,敬请高手指教,小弟不胜感激!

搜索更多相关主题的帖子: 王爽 汇编语言 
2007-08-03 00:43
skybluechen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-2
收藏
得分:0 
各位兄弟姐妹,这可是我的精心打造的求助贴哦?
怎么全是看客,没人回帖呢?
期待ing……

不愿灵魂被屠杀; 不愿思想被强奸; 不愿生活被蹂躏;
2007-08-03 14:52
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
看了好半天也没看出什么毛病来 唉 水平有限

win32汇编
病毒 加密
目前兴趣所在
2007-08-03 16:50
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
在我这里运行是正确的,没有问题呀
图片附件: 游客没有浏览图片的权限,请 登录注册

[此贴子已经被作者于2007-8-3 18:07:42编辑过]


其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2007-08-03 18:07
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2007-08-03 18:14
skybluechen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-2
收藏
得分:0 

非常感谢版主!!!!!!
看来问题真的出在我的系统上。
兄弟,再麻烦你一下,不知你没有测试一下我第二种思路是否行得通?
就是只用一个字的栈空间。
再次感谢!!!!!


不愿灵魂被屠杀; 不愿思想被强奸; 不愿生活被蹂躏;
2007-08-04 22:09
skybluechen
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用无理取闹在2007-8-3 16:50:31的发言:
看了好半天也没看出什么毛病来 唉 水平有限

至少你认真看了,谢谢哈
如果你愿意,我们交个朋友,一起搞定汇编,嘿嘿……


不愿灵魂被屠杀; 不愿思想被强奸; 不愿生活被蹂躏;
2007-08-04 22:12
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
我汇编也在学习中
来这里学习的大家都是朋友啊

win32汇编
病毒 加密
目前兴趣所在
2007-08-05 07:52
hkbyest
Rank: 1
等 级:新手上路
威 望:2
帖 子:30
专家分:0
注 册:2007-6-14
收藏
得分:0 

LZ的第一个程序代码是正确的,至于显示为什么不正确可能跟你的系统环境有关,可以用command命令进入虚拟8086环境试试看。

第二个程序代码总体上来说思路是正确的,如果你不用debug的话数据应该会正确显示,问题出在我们debug调试时产生了单步中断,会把flag寄存器,ip,cs压桟,所以我们需要额外的空间来容纳。你可以试试设置4个字单元的桟空间看看就明白了。

2007-08-11 18:16
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
第二个程序在我这里运行也不正确,可能就是楼上说的原因

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2007-08-12 20:48
快速回复:[求助]王爽《汇编语言》第六章测试点6.1第二题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028945 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved