• MASM 5.1 16/32-bit programming

    From Paul Edwards@21:1/5 to All on Thu May 25 22:23:26 2023
    A couple of days ago I received my purchase of
    Microsoft C 5.1 on 720k 3.5" floppies.

    I was shocked that the disks all read fine.

    Anyway, it includes MASM 5.1. I wasn't sure what to expect.

    I gave it this code (which works fine on masm 6.15):

    https://sourceforge.net/p/pdos/gitcode/ci/master/tree/src/protinta.asm#l65

    and assembled like this:

    masm -c -DNEWMODEL -Dmemodel=large -D@model=5 -D@datasize=1 protinta.asm,,,,

    (some of the defines don't exist, but I'm happy to provide them manually).

    It complained about lines 65, 66, 67 and 71.

    All of them are references into the TEXT32 segment.

    The error is:

    protinta.asm(65): error A2057: Illegal size for operand

    I'm not sure what that means.

    Also note that I don't want to split into segment/offset
    pairs, because I also assemble this code with as86
    which uses the a.out format for object code, even
    though it ends up (using ld86) as an MSDOS executable.

    Note that I assemble on masm 6.15 like this:

    ml -c -omf -DNEWMODEL -nologo -Dmemodel=large -DWATCOMC -DNEED_DISPLAYC protinta.asm

    wasm also accepts the code.

    Is there any way I can get rid of these errors while still
    allowing as86 to work?

    If I have to, I will use conditional assembly, but even then
    I don't know what to write.

    If I have to use conditional assembly I am happy to use
    segment/offset splitting, if that's what masm 5.1 requires.

    Thanks. Paul.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)