鱼C论坛

 找回密码
 立即注册
查看: 5902|回复: 16

汇编检测点6.1第二题

[复制链接]
发表于 2011-7-3 21:23:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 张国祥 于 2011-7-5 18:31 编辑

汇编检测点6.1第二题的第二个空,小甲鱼栈顶偏移地址是不是设置错了?
QQ截图20110703212258.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-3 21:40:11 | 显示全部楼层
按道理说,sp应该先设置为36=24H,但是也不对,我单步跟踪了下,第三次入栈时,数据就不对了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-3 22:14:56 | 显示全部楼层
我在网上找了些资料,明白了第一个疑问,小甲鱼之所以写1ah是因为书的版本不同,小甲鱼的答案是第一版的,而我的书是第二版的
但是,我单步跟踪多次,问题还是没有解决,每到第三次入栈,就会出错,网上说:
   
      估计是栈空间太小,调用Int 21h中断各种压栈把正确结果覆盖了吧!

但是,我把栈调到更大后,还是有问题,望知道的人帮我解惑,谢谢!~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-3 22:32:39 | 显示全部楼层
你想转换多少字节的数据 就定义能放多少字节的栈不就得了 你把栈空间设置大了 也许你是找错栈的偏移地址出现数据转换的错误呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-4 02:57:12 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-7-4 02:57 编辑

你应该把你写的代码发上来,这样很难明白你的意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-4 10:29:24 | 显示全部楼层

绝对没错,你可以单步跟踪试试,而且小甲鱼的源码也不行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-4 10:32:04 | 显示全部楼层
本帖最后由 张国祥 于 2011-7-4 10:32 编辑
king嗜血法师 发表于 2011-7-4 02:57
你应该把你写的代码发上来,这样很难明白你的意思。


这个是我写的:
assume cs:codesg

codesg segment

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

dw 0,0,0,0,0,0,0,0,0,0 ;10个字单元做栈空间

start: mov ax,cs
mov ss,ax
mov sp,36 ;设栈顶

mov ax,0
mov ds,ax
mov bx,0 ;DS:[BX]=0:0

mov cx,8

s: push [bx]
pop cs:[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,0,0,0,0,0,0,0,0,0,0,0,0           ;增加的栈空间

start:        mov ax,cs
                mov ss,ax
                mov sp,50      ;设栈顶
                
                mov ax,0
                mov ds,ax
                mov bx,0         ;DS:[BX]=0:0
                
                mov cx,8
                
   s:        push [bx]
                pop cs:[bx]
                add bx,2
                loop s
                
                mov ax,4c00h
                int 21h
                
codesg ends
end start



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-4 17:55:39 | 显示全部楼层
你写的我试过了能正常显示结果,可能是你的系统或编译器的问题。
其实这题不用栈的空间太大,2个字节就够了,因为是重复使用着2个字节,push SP-2 pop SP+2。
dw 0 就够用了,并不存在会越栈的可能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-4 19:12:13 | 显示全部楼层
king嗜血法师 发表于 2011-7-4 17:55
你写的我试过了能正常显示结果,可能是你的系统或编译器的问题。
其实这题不用栈的空间太大,2个字节就够了 ...

你的说法让我想起了汇编语言(第一版),当时题目设了dw 0,0,0,0,0
但是第二版却设为了dw 0,0,0,0,0,0,0,0,0,0
我想还是有关系的,我又做了一遍,结果还是很奇怪……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-4 19:13:15 | 显示全部楼层
这是我今天又做了一遍的实验:结果如初:
无标题.jpg



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-5 13:15:45 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-7-5 13:19 编辑

感觉是你电脑的问题,建议你直接把SS:SP指向20:10(基本系统不会用到的区域)
如果没错的话,应该是其他什么的修改了那个地址的内容。
你数据段依然那样写,并且观察里面的改动,是否还是00 00 00 00.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-5 18:25:10 | 显示全部楼层
king嗜血法师 发表于 2011-7-5 13:15
感觉是你电脑的问题,建议你直接把SS:SP指向20:10(基本系统不会用到的区域)
如果没错的话,应该是其他 ...

彻底晕菜鸟……我重装系统,把安全空间做栈,结果数据还是不对……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-5 21:37:53 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-7-5 21:40 编辑

为了这个居然把系统都重新装了,精神可嘉啊。
栈既然指向了安全空间,像你说的第3次入栈,栈里的数据还是错误的吗?
单步调试,查看栈和数据段的变化,应该不难找到原因的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-6 13:51:56 | 显示全部楼层
king嗜血法师 发表于 2011-7-5 21:37
为了这个居然把系统都重新装了,精神可嘉啊。
栈既然指向了安全空间,像你说的第3次入栈,栈里的数据还是错 ...

一步一步循环,就在第三次push后,栈内的数据就是不对……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-6 18:15:08 | 显示全部楼层
纳尼???????

评分

参与人数 1鱼币 -2 收起 理由
loop -2 无意义回复~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-6 20:54:42 | 显示全部楼层
123640287 发表于 2011-7-6 18:15
纳尼???????

你想表达什么……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-8 16:29:07 | 显示全部楼层
这样来实验
用-u
找到这条指令   mov  ax,4c00h  的偏移地址
-g 偏移地址
然后  
-d 0:0 f
0000:0000  xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx
-d cs:0 f
c  s : 0000  xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 00:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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