Re[2]: [fasm-help] BIOS initial jmp
Brought to you by:
privalov
From: Anthony <an...@do...> - 2002-11-15 11:07:00
|
Hi Tomasz, Thursday, November 14, 2002, 10:36:33 PM, you wrote: >> use16 >> jmp ((StartOS shr 4)and $f000):(StartOS and $ffff) ; 16-bit jump with segment change >> Where this code is located at $ffff:0000 and "StartOS" is the address >> of the 1st routine in the bios (located initially at $f0000)... >> Is this the correct syntax to do this kind of jmp or is there a >> simpler looking way? TG> Yes, this is correct (but $ffff:0000=$ffff0, not $f0000). TG> Or just simply: TG> jmp $ffff:0 Thanks for getting back so quick, great assembler btw! :) I think you misunderstood me - this code is at $ffff:0000 (reset vector), so StartOS is actually at $f0000, the ((StartOS shr 4)and $f000) will shift $f0000 right 4 = $f000, then mask off the top bits to make $f000 (just in case there was anything in $0fff)... The Address part being the low 16 bits of $f0000, is just masked off making zero... It's just a way of making the reset vector point to the StartOS code, I just wondered if there was an easier way of syntaxing the instruction? TG> BTW, 16-bit is the default setting for the binary output format, so TG> use16 is usually not neccessary. There is 32-bit code before this code - I switched back for the vector - that is in REAL mode... :) -Anthony |