With the information you've provided so far, I would say it's a stack problem(i.e you havn't pop all the data that you pushed on to the stack, or you've popped to much). or it could be a interrupt not being handled(i.e timer) which causes a double fault which because that interrupt is implemented yet causes a tripple fault and restarts.
Can I see your bochsout file, also if I could see the implementation of the function that your calling that would be great,.
ret does crash!?!
I would put my money on your A20 code does not work, try a differant one or try setting your stack to a differant address.
Or just try this:
and see if you get the T
Or just try this:
Code: Select all
push eax ; Do this to shift the stack pointer
push eax ; and again
call check ;;;;This is the Function
mov byte [es:0xB809E], "T" Print T
chk01:
jmp chk01
- mathematician
- Member
- Posts: 437
- Joined: Fri Dec 15, 2006 5:26 pm
- Location: Church Stretton Uk
So far as I can see the only possible explanation is faulty memory. Even if there was a memory mapped device at that address, it would need a hardware interrupt to wake it up. In any case, it is unlikely that the interrupt would always occur precisely between the two mov's.
Unless somebody else can see something I can't.
Unless somebody else can see something I can't.