Вот параметры с которыми вызываю DOS. В первом случае падает, во втором нет.
Как видно параметры одинаковы. Единственное, что не проверил это если в памяти что-то побилось.
Но мой код только читает и не пишет! Есть идеи что проверить?
Падает строчек через 720 если трейсить со всеми вхождениями.
Код:
C:\Program Files\Bochs-2.5.1>cd "C:\Program Files\Bochs-2.5.1\dlxlinux"
C:\Program Files\Bochs-2.5.1\dlxlinux>..\bochsdbg -q -f bochsrc.bxrc
========================================================================
Bochs x86 Emulator 2.5.1
Built from SVN snapshot on January 6, 2012
Compiled on Jan 6 2012 at 21:37:53
========================================================================
00000000000i[ ] reading configuration from bochsrc.bxrc
00000000000i[ ] Stopping on magic break points
00000000000i[ ] installing win32 module as the Bochs GUI
00000000000i[ ] using log file bochsout.txt
Next at t=0
(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ; ea5b
e000f0
<bochs:1> c
Next at t=147538254
(0) [0x00000000000fff53] f000:ff53 (unk. ctxt): iret ; cf
<bochs:2> c
Next at t=212800000
(0) [0x00000000000ffe8d] f000:fe8d (unk. ctxt): call .-21510 (0x000faa8a) ; e8fa
ab
<bochs:3> modebp
mode switch break enabled
<bochs:4> c
(0) Caught mode switch breakpoint switching to 'protected mode'
Next at t=238098807
(0) [0x0000000000021f0a] 2123:0000000000000cda (unk. ctxt): mov bx, 0x0010
; bb1000
<bochs:5> x 0x84
[bochs]:
0x0000000000000084 <bogus+ 0>: 0x1b17048b
<bochs:6> c
(0) Caught mode switch breakpoint switching to 'real mode'
Next at t=238098812
(0) [0x0000000000021f16] 2123:0ce6 (unk. ctxt): call .-177 (0x00021e68) ; e84f
ff
<bochs:7> b 0x1b17:0x048b
<bochs:8> c
(0) Breakpoint 1, 0x000000000001b5fb in ?? ()
Next at t=238711927
(0) [0x000000000001b5fb] 1b17:048b (unk. ctxt): cmp ah, 0x4b ; 80fc
4b
<bochs:9> r
rax: 0x00000000_534d3d00 rcx: 0x00000000_00000000
rdx: 0x00000000_534d3cf5 rbx: 0x00000000_00003be6
rsp: 0x00000000_00003be2 rbp: 0x00000000_00003bea
rsi: 0x00000000_000e3c03 rdi: 0x00000000_00003cf4
r8 : 0x00000000_00000000 r9 : 0x00000000_00000000
r10: 0x00000000_00000000 r11: 0x00000000_00000000
r12: 0x00000000_00000000 r13: 0x00000000_00000000
r14: 0x00000000_00000000 r15: 0x00000000_00000000
rip: 0x00000000_0000048b
eflags 0x00007046: id vip vif ac vm rf NT IOPL=3 of df if tf sf ZF af PF cf
<bochs:10> sreg
es:0x23d5, dh=0x00009302, dl=0x3d50ffff, valid=7
Data segment, base=0x00023d50, limit=0x0000ffff, Read/Write, Accessed
cs:0x1b17, dh=0x00009301, dl=0xb170ffff, valid=1
Data segment, base=0x0001b170, limit=0x0000ffff, Read/Write, Accessed
ss:0x23d5, dh=0x00009302, dl=0x3d50ffff, valid=7
Data segment, base=0x00023d50, limit=0x0000ffff, Read/Write, Accessed
ds:0x23d5, dh=0x00009302, dl=0x3d50ffff, valid=1
Data segment, base=0x00023d50, limit=0x0000ffff, Read/Write, Accessed
fs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=3
Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed
gs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=1
Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed
ldtr:0x0000, dh=0x00008200, dl=0x0000ffff, valid=1
tr:0x0000, dh=0x00008b00, dl=0x0000ffff, valid=1
gdtr:base=0x00000000000235e2, limit=0x1f
idtr:base=0x0000000000000000, limit=0x3ff
<bochs:11>
========================================================
Код:
mode switch break enabled
<bochs:22> c
(0) Caught mode switch breakpoint switching to 'protected mode'
Next at t=482164769
(0) [0x0000000000021e60] 2123:0000000000000c30 (unk. ctxt): mov bx, 0x0010
; bb1000
<bochs:23> c
(0) Caught mode switch breakpoint switching to 'real mode'
Next at t=482164774
(0) [0x0000000000021e6c] 2123:0c3c (unk. ctxt): call .-177 (0x00021dbe) ; e84f
ff
<bochs:24> b 0x1b17:0x048b
<bochs:25> c
(0) Breakpoint 2, 0x000000000001b5fb in ?? ()
Next at t=482946496
(0) [0x000000000001b5fb] 1b17:048b (unk. ctxt): cmp ah, 0x4b ; 80fc
4b
<bochs:26> reg
rax: 0x00000000_534d3d00 rcx: 0x00000000_00000000
rdx: 0x00000000_534d3cf5 rbx: 0x00000000_00003be6
rsp: 0x00000000_00003be2 rbp: 0x00000000_00003bea
rsi: 0x00000000_000e3c03 rdi: 0x00000000_00003cf4
r8 : 0x00000000_00000000 r9 : 0x00000000_00000000
r10: 0x00000000_00000000 r11: 0x00000000_00000000
r12: 0x00000000_00000000 r13: 0x00000000_00000000
r14: 0x00000000_00000000 r15: 0x00000000_00000000
rip: 0x00000000_0000048b
eflags 0x00007046: id vip vif ac vm rf NT IOPL=3 of df if tf sf ZF af PF cf
<bochs:27> sreg
es:0x23ca, dh=0x0000f302, dl=0x3ca0ffff, valid=7
Data segment, base=0x00023ca0, limit=0x0000ffff, Read/Write, Accessed
cs:0x1b17, dh=0x00009301, dl=0xb170ffff, valid=1
Data segment, base=0x0001b170, limit=0x0000ffff, Read/Write, Accessed
ss:0x23ca, dh=0x00009302, dl=0x3ca0ffff, valid=7
Data segment, base=0x00023ca0, limit=0x0000ffff, Read/Write, Accessed
ds:0x23ca, dh=0x0000f302, dl=0x3ca0ffff, valid=1
Data segment, base=0x00023ca0, limit=0x0000ffff, Read/Write, Accessed
fs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=1
Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed
gs:0x0010, dh=0x00cf9300, dl=0x0000ffff, valid=1
Data segment, base=0x00000000, limit=0xffffffff, Read/Write, Accessed
ldtr:0x0168, dh=0x00008210, dl=0xb1a003ff, valid=1
tr:0x0158, dh=0x00008310, dl=0xa5a00bf9, valid=1
gdtr:base=0x0000000000023532, limit=0x1f
idtr:base=0x0000000000000000, limit=0xffff
<bochs:28>