>>> Unless I'm mistaken, conditional jumps on 8086 don't go beyond -128 .. >>> 127 (signed) byte range. Hence the billions of workarounds (TASM >>> "jumps", MASM "option ljmp", etc). right.
>> I won't argue about what opcode is or is not available on 8086, since I >> did not bother decoding their exact meaning. meaning 'I am a lazy, clueless guy, but write anyway ...' >> I do see however that (NASM >> at least) can assemble JZ and JZ SHORT in two very different forms, JZ >> SHORT being significantly shorter. >> >> 5 00000000 B80100 mov ax, 1 >> 6 00000003 48 dec ax >> 7 00000004 746A jz short gameover >> >> 5 00000000 B80100 mov ax, 1 >> 6 00000003 48 dec ax >> 7 00000004 7503E9DD01 jz gameover >> >> Of course NASM always uses the short form whenever it's possible, but >> when the jump is too far away it silently uses the longer form, hence the >> need to always specify SHORT if one wants to be sure what's going on. > AFAIK, meaning 'I am completely clueless , but offer my unfounded opinion anyway ...' > the longer one is 386+ only, hence not available with "cpu > 8086". Thus, if it still quietly assembles, that is a bug (but I > thought that was long-ago fixed/avoided). the longer one is 2 instructions instead, automatically generated by NASM because the intended jump goes farther then 127 bte c:\>debug -e 100 1430:0100 00.75 00.03 00.e9 00.dd 00.01 -u 100 1430:0100 7503 JNZ 0105 1430:0102 E9DD01 JMP 02E2 Tom ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user