Yes, great. Jack Klein solved the problem, from another group.
Apparently I wasnt pu****ng correctly. Here is what he wrote:
"You pop bx instruction is popping the top of the stack into bx, but
what is on top of the stack is not the interrupted programs bx value,
but the last thing that was pushed, which is interrupted program's bp
value.
So what your isr is doing is setting the interrupted program's bp
register to 0, not its bx register.
It doesn't matter what register you use to change a value, you need to
change the value at the location on the stack that was pushed from bx,
and will be popped back into bx before the iret instruction.
If I'm calculating correctly, you need to change the xor bx, bx to
something like:
mov word ptr [bp + 14], 0 "
Solved, great.
Tks to all of you guys.


|