<bochs:12>
在0x90281既是do_move处下断点,此时0x10000处有system,0x0处没有。
do_move之后,0x0处有了system。下面是对应的do_move的代码。
00090281: ( ): mov es, ax ; 8ec0
00090283: ( ): add ax, 0x1000 ; 050010
00090286: ( ): cmp ax, 0x9000 ; 3d0090
00090289: ( ): jz 0x298 ; 740d
0009028b: ( ): mov ds, ax ; 8ed8
0009028d: ( ): sub di, di ; 29ff
0009028f: ( ): sub si, si ; 29f6
00090291: ( ): mov cx, 0x8000 ; b90080
00090294: ( ): rep movs word ptr [di], word ptr [si] ; f3a5
00090296: ( ): jmp 0x281 ; ebe9
00090298: ( ): mov ax, 0x9020 ; b82090
0009029b: ( ): mov ds, ax ; 8ed8
0009029d: ( ): lidt [ds:0x12c] ; 0f011e2c01
000902a2: ( ): lgdt [ds:0x132] ; 0f01163201
000902a7: ( ): call 0x309 ; e85f00
dozones()函数地址 0x64327
scanzone()函数地址 0x62518
<bochs:10> b 0x62518
<bochs:11> c
(0) Breakpoint 2, 0x62518 in ?? ()
Next at t=37613377
(0) [0x00062518] 6000:2518 (unk. ctxt): push bp ; 55
<bochs:12> info r
eax 0x0 0
ecx 0xd0000 851968
edx 0x84d8 34008
ebx 0xdbf6 56310
esp 0xdbc2 0xdbc2
ebp 0xdbd6 0xdbd6
esi 0x771 1905
edi 0x84d8 34008
eip 0x2518 0x2518
eflags 0x2c6 710
cs 0x6000 24576
ss 0x6000 24576
ds 0x6000 24576
es 0x6000 24576
fs 0x0 0
gs 0x0 0
<bochs:13> x /10 0x6dbc2
[bochs]:
0x0006dbc2 <bogus+ 0>: 0xdbf6434b 0x00070000 0x000025b2