能力值:
( LV2,RANK:10 )
|
-
-
2 楼
什么意思??
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
!!!!!难到DEBUG检验不出mov cx,3 !!! 不会是PS过的吧!!!我用XP SP2没有这个问题。
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
不懂,
不过对3楼的头像感兴趣.
是甘地吗?
|
能力值:
( LV9,RANK:290 )
|
-
-
5 楼
绝对没有PS过,我还没想明白为什么!郁闷!
|
能力值:
(RANK:10 )
|
-
-
6 楼
看光标的位置,1后面有什么不干净的东西吧
|
能力值:
( LV9,RANK:420 )
|
-
-
7 楼
这个有什么错误?
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
NTVDM遇到一个硬错误
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
自动退回cmd命令行,
|
能力值:
( LV8,RANK:130 )
|
-
-
10 楼
以楼主的数据为例
1000 < 13BA
1000段里的数据是不能随意修改的,比如它可能是debug本身的执行体
|
能力值:
( LV9,RANK:290 )
|
-
-
11 楼
多谢兄弟指迷津!
|
能力值:
( LV8,RANK:130 )
|
-
-
12 楼
debug的T命令我记得应该是会产生int1中断的,中断是需要使用的当前堆栈的,根据你当时的情况中断需要3个WORD堆栈,sp会跨越0边界,在int1的处理中可能会找不准flags或返回地址
|
能力值:
( LV9,RANK:290 )
|
-
-
13 楼
跟踪了一下,的确是这个的!
t 命令的时候,会产生int1中断,在本程序的堆栈中的前6个字节保存现场,3个Word各是什么意思到是不知道,由于我的sp=4,push的时候就覆盖了返回地址,要想这种情况不要发生,
只要将sp= 0ah就行(2次push), 刚好不覆盖.
这么写就行了.
assume cs:codesg
codesg segment
mov ax,2000h
mov ss,ax
mov sp,0
add sp,0ah ;这里改成OAH
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
codesg ends
end
另外问一个问题.这个程序运行的时候是没有问题的,但是不知道正常不正常.
运行的时候由于没有使用T命令,所以不用怕覆盖返回地址,mov sp,4 刚好够需求.是这个原因吗?
十分感谢heXer!
|
能力值:
( LV8,RANK:130 )
|
-
-
14 楼
运行的时候也有出问题的可能,定时器中断int08如果刚好在那个时刻触发,也是一样的道理
你在debug下输入d 40:6C看看,数值每次都变化,说明int08在工作
|
能力值:
( LV9,RANK:290 )
|
-
-
15 楼
看了,嘿嘿!
40:6c字单元的确在变化,前后都没变! ,谢谢!~~~~~~~~
|
能力值:
( LV9,RANK:290 )
|
-
-
16 楼
也就是说,运行是否会出问题,是看定时器中断int08是否刚好在那个时刻触发.
就是说,是否成功运行是随机的,不确定的?
|
能力值:
( LV6,RANK:90 )
|
-
-
17 楼
vista下似乎不存在第一个问题.........
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
|
|
|