flat assembler
Message board for the users of flat assembler.
Index
> Compiler Internals > short MZ headers |
Author |
|
Madis731 28 Feb 2006, 13:08
There are lots of stuff not running under XP, but working under other operating systems. XP is very cautious and double-checks everything. Even if it may work - it doesn't allow it to run because some errors in header etc.
Same goes to XP complaining about drivers that are for NT/2K. They are not different but they aren't signed "enough" for XP. Go figure Answer part A to your question: I think short MZ header is not produced by original FASM but some 3rd party macros (like the raw editing to get ~a hundred byte PE working exe file). I've noticed inconsistencies in other versions of Windowses. Have you tried running your completely legal files in Win2k3? They just won't work, or hang, or crash... My friend tried every emulation mode that the Win2k3 had (it was the usual Server Edition), the XP/2K one and the older 9x/ME ones...nothing Answer part B: the difference is that it strips the unused parts away because some operating systems scan only few bytes from the beginning. You can even make the bootstrap (512 bytes) header shorter by not jumping, but some BIOSs (like HP does) complain that they can't find any OS. So there's a question about minimality and security - if you want to be safe, then just use the safest style of headers etc. |
|||
28 Feb 2006, 13:08 |
|
Tomasz Grysztar 28 Feb 2006, 13:38
Isn't it related to http://board.flatassembler.net/topic.php?t=4334 ?
|
|||
28 Feb 2006, 13:38 |
|
vid 28 Feb 2006, 14:01
may be, but not exactly, it is about 230 bytes. Maybe just a bug:
Code: format MZ entry codes:start stack 256 offset equ ;tasm syntax segment datas _menu db "a - najdi znak",13,10 db "b - nacitaj novy retazec",13,10 db "c - ukonci program",13,10 db "d - vypis usporiadany retazec",13,10 db "Tvoja volba: $" _error db "Volba nespravna, skus znova.",13,10,'$' _newline db 13,10,'$' segment codes start: mov ax, datas mov ds, ax menu: mov ah, 09h mov dx, offset _menu int 21h ;nacitanie volby uzivatela mov ah, 01h int 21h ;zistenie co vlastne pouzivatel zadal cmp al, 'a' je a cmp al, 'b' je b cmp al, 'c' je exit cmp al, 'd' je d mov ah, 09h mov dx, offset _newline int 21h mov dx, offset _error int 21h jmp menu a: b: d: exit: mov ax, 4c00h int 21h may it be too small stack? |
|||
28 Feb 2006, 14:01 |
|
Tomasz Grysztar 28 Feb 2006, 14:34
It works perfectly on Windows 2003 here, I will try it on XP when I'm back home.
|
|||
28 Feb 2006, 14:34 |
|
Madis731 28 Feb 2006, 20:08
Perfect under W2K SP4 too, how's it for You vid?
|
|||
28 Feb 2006, 20:08 |
|
Tomasz Grysztar 28 Feb 2006, 21:03
On my XP Media Center 2005 edition it works perfectly, too.
|
|||
28 Feb 2006, 21:03 |
|
Borsuc 28 Feb 2006, 21:20
Works ok on WinXP SP2 Professional
|
|||
28 Feb 2006, 21:20 |
|
rugxulo 01 Mar 2006, 00:36
Seems to run on Win XP Home SP2 (and under DOSbox 0.63, too). Can't understand the text, and it's basically useless, but at least it doesn't crash (for me)!
|
|||
01 Mar 2006, 00:36 |
|
vid 01 Mar 2006, 18:14
funny, this problem seems to occur only on one particular school-mate's computer. On other one it crashes on int21h/ah=4C. On others it works...
If i have some time i will try to find out why that one install of XP doesn't want to execute it, but it's not my computer so it maybe won't be possible |
|||
01 Mar 2006, 18:14 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.