* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.F1BA(C)
|
:0001.F1A7 263A0F cmp cl , es:[bx]
:0001.F1AA 7510 jne F1BC ——不等则跳转
:0001.F1AC 2D0100 sub ax, 0001 ——计数
:0001.F1AF 83DA00 sbb dx, 0000 ——整理,被除数在AX,DX中是一个32位的数
:0001.F1B2 8AEC mov ch, ah
:0001.F1B4 0AE8 or ch, al
:0001.F1B6 0AEE or ch, dh
:0001.F1B8 0AEA or ch, dl
:0001.F1BA 75EB jne F1A7 ——反复去比较
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.F1AA(C)
|
:0001.F1BC 4F dec di
:0001.F1BD 75E5 jne F1A4
:0001.F1BF F7DA neg dx
:0001.F1C1 F7D8 neg ax
:0001.F1C3 83DA00 sbb dx, 0000
:0001.F1C6 B96E00 mov cx, 006E ——给除数赋值
:0001.F1C9 F7F1 div cx ——做除法,关键就在此!因为你的CPU过快,AX,DX的值过大,而DX值过小,得数无法放在AX中,所以出现除法溢出。我有奇怪的想法,要是CPU快到一定程度,就不会出现这种情况了。
:0001.F1CB 40 inc ax
:0001.F1CC A3B628 mov word ptr [28B6], ax
:0001.F1CF 1F pop ds
:0001.F1D0 07 pop es
:0001.F1D1 58 pop ax
:0001.F1D2 5B pop bx
:0001.F1D3 59 pop cx
:0001.F1D4 5A pop dx
:0001.F1D5 5F pop di
:0001.F1D6 C3 ret
知道问题所在修该的方法也很简单,用UE32等能以二进制方式打开文件并编辑的软件编辑FPW2.x的主文件,找F7 F1 40 改 90 90 40即可。