EuroAssembler Index Manual Download Source Macros


Sitemap Links Forum Tests Projects

Test t7943: Compile to MZ linking from 3 OMF in LARGE model, ungrouped unaligned segments.


Description
Linking of three modules with mutual relocations. Entry point is defined in linked module. Executable as t7943.exe.
Tested procedures
PgmCombine   SssCombine   RelocCombine  
Source & expected listing t7943.htm.lst
| | EUROASM LIST=ON,DUMP=ON,DUMPALL=OFF,DUMPWIDTH=22 |4C41524745 |%MODEL %SET LARGE |50747241412C50747241|%GLBLIST %SET PtrAA,PtrAB,PtrAC,PtrBA,PtrBB,PtrBC,PtrCA,PtrCB,PtrCC, \ |422C50747241432C50~~| TxtAA,TxtBB,TxtCC,Write,WriteFromA,WriteFromB,WriteFromC | |;; | |t7943A PROGRAM FORMAT=OMF,MODEL=%MODEL,LISTMAP=ON,LISTGLOBALS=ON | | GLOBAL %GLBLIST |[DATA] |[DATA] SEGMENT WIDTH=16,PURPOSE=DATA,COMBINE=PUBLIC,ALIGN=WORD |0000:AAAA | DW 0xAAAA |0002:[0800] |PtrAA DW TxtAA |0004:[0000] |PtrAB DW TxtBB |0006:[0000] |PtrAC DW TxtCC |0008:4124 |TxtAA DB "A$" |000A:AA | DB 0xAA |[CODE] |[CODE] SEGMENT WIDTH=16,PURPOSE=CODE,COMBINE=PUBLIC,ALIGN=BYTE |0000:90 | NOP |0001: |WriteFromA PROC |0001:BA[0800] | MOV DX,TxtAA |0004:9A[0000]{0000} | CALL Write |0009:BA[0000] | MOV DX,TxtBB |000C:9A[0000]{0000} | CALL Write |0011:BA[0000] | MOV DX,TxtCC |0014:9A[0000]{0000} | CALL Write |0019:8B16[0200] | MOV DX,[PtrAA] |001D:9A[0000]{0000} | CALL Write |0022:8B16[0400] | MOV DX,[PtrAB] |0026:9A[0000]{0000} | CALL Write |002B:8B16[0600] | MOV DX,[PtrAC] |002F:9A[0000]{0000} | CALL Write |0034:8B16[0000] | MOV DX,[PtrBA] |0038:9A[0000]{0000} | CALL Write |003D:8B16[0000] | MOV DX,[PtrBB] |0041:9A[0000]{0000} | CALL Write |0046:8B16[0000] | MOV DX,[PtrBC] |004A:9A[0000]{0000} | CALL Write |004F:8B16[0000] | MOV DX,[PtrCA] |0053:9A[0000]{0000} | CALL Write |0058:8B16[0000] | MOV DX,[PtrCB] |005C:9A[0000]{0000} | CALL Write |0061:8B16[0000] | MOV DX,[PtrCC] |0065:9A[0000]{0000} | CALL Write |006A:CB | RET |006B: | ENDP WriteFromA |[STACK] |[STACK] SEGMENT WIDTH=16,PURPOSE=STACK,COMBINE=STACK |0000:..............~| D 32*WORD | | ENDPROGRAM t7943A | **** ListMap "t7943A.obj",groups=0,segments=3,entry=,stack=[STACK]:00000040h | [DATA],RVA=00000000h,size=0000000Bh=11,width=16,align=2,purpose=DATA | [CODE],RVA=00000000h,size=0000006Bh=107,width=16,align=1,purpose=CODE | [STACK],RVA=00000000h,size=00000040h=64,width=16,align=0010h,purpose=STACK | **** ListGlobals "t7943A.obj",Global=0,Public=5,Extern=11,eXport=0,Import=0 | PtrAA,[DATA]:00000002h,scope='P' | PtrAB,[DATA]:00000004h,scope='P' | PtrAC,[DATA]:00000006h,scope='P' | PtrBA,[PtrBA]:00000000h,scope='E' | PtrBB,[PtrBB]:00000000h,scope='E' | PtrBC,[PtrBC]:00000000h,scope='E' | PtrCA,[PtrCA]:00000000h,scope='E' | PtrCB,[PtrCB]:00000000h,scope='E' | PtrCC,[PtrCC]:00000000h,scope='E' | TxtAA,[DATA]:00000008h,scope='P' | TxtBB,[TxtBB]:00000000h,scope='E' | TxtCC,[TxtCC]:00000000h,scope='E' | Write,[Write]:00000000h,scope='E' | WriteFromA,[CODE]:00000001h,scope='P' | WriteFromB,[WriteFromB]:00000000h,scope='E' | WriteFromC,[WriteFromC]:00000000h,scope='E' | |;; | |t7943B PROGRAM FORMAT=OMF,MODEL=%MODEL,LISTMAP=ON,LISTGLOBALS=ON,ENTRY=Start:: | | GLOBAL %GLBLIST |[DATA] |[DATA] SEGMENT WIDTH=16,PURPOSE=DATA,COMBINE=PUBLIC,ALIGN=WORD |0000:BBBB | DW 0xBBBB |0002:[0000] |PtrBA DW TxtAA |0004:[0800] |PtrBB DW TxtBB |0006:[0000] |PtrBC DW TxtCC |0008:4224 |TxtBB DB "B$" |000A:BB | DB 0xBB |[CODE] |[CODE] SEGMENT WIDTH=16,PURPOSE=CODE,COMBINE=PUBLIC,ALIGN=BYTE |0000:90 | NOP |0001: |WriteFromB PROC |0001:BA[0000] | MOV DX,TxtAA |0004:9A[0000]{0000} | CALL Write |0009:BA[0800] | MOV DX,TxtBB |000C:9A[0000]{0000} | CALL Write |0011:BA[0000] | MOV DX,TxtCC |0014:9A[0000]{0000} | CALL Write |0019:8B16[0000] | MOV DX,[PtrAA] |001D:9A[0000]{0000} | CALL Write |0022:8B16[0000] | MOV DX,[PtrAB] |0026:9A[0000]{0000} | CALL Write |002B:8B16[0000] | MOV DX,[PtrAC] |002F:9A[0000]{0000} | CALL Write |0034:8B16[0200] | MOV DX,[PtrBA] |0038:9A[0000]{0000} | CALL Write |003D:8B16[0400] | MOV DX,[PtrBB] |0041:9A[0000]{0000} | CALL Write |0046:8B16[0600] | MOV DX,[PtrBC] |004A:9A[0000]{0000} | CALL Write |004F:8B16[0000] | MOV DX,[PtrCA] |0053:9A[0000]{0000} | CALL Write |0058:8B16[0000] | MOV DX,[PtrCB] |005C:9A[0000]{0000} | CALL Write |0061:8B16[0000] | MOV DX,[PtrCC] |0065:9A[0000]{0000} | CALL Write |006A:CB | RET |006B: | ENDP WriteFromB |006B:B8{0000} |Start::MOV AX,PARA#PtrAA |006E:8ED8 | MOV DS,AX |0070:BA[1000] | MOV DX,=B"ABCABCABCABCABCABCABCABCABCABCABCABC expected.$" |0073:9A[0000]{0000} | CALL Write |0078:BA[0C00] | MOV DX,=D(0x240A0D) |007B:9A[0000]{0000} | CALL Write |0080:9A[0000]{0000} | CALL WriteFromA |0085:9A[0100]{0000} | CALL WriteFromB |008A:9A[0000]{0000} | CALL WriteFromC |008F:BA[4000] | MOV DX,=B" obtained.$" |0092:9A[0000]{0000} | CALL Write |0097:B8004C | MOV AX,4C00h |009A:CD21 | INT 21h |[@LT4] ====ListLiterals in section [@LT4]. |000C:0D0A2400 =D(0x240A0D) |[@LT1] ====ListLiterals in section [@LT1]. |0010:41424341424341~=B"ABCABCABCABCABCABCABCABCABCABCABCABC expected.$" |0040:206F627461696E~=B" obtained.$" | | ENDPROGRAM t7943B | **** ListMap "t7943B.obj",groups=0,segments=2,entry=[CODE]:0000006Bh,stack= | [DATA],RVA=00000000h,size=0000004Ch=76,width=16,align=2,purpose=DATA | [CODE],RVA=00000000h,size=0000009Ch=156,width=16,align=1,purpose=CODE | **** ListGlobals "t7943B.obj",Global=0,Public=6,Extern=11,eXport=0,Import=0 | PtrAA,[PtrAA]:00000000h,scope='E' | PtrAB,[PtrAB]:00000000h,scope='E' | PtrAC,[PtrAC]:00000000h,scope='E' | PtrBA,[DATA]:00000002h,scope='P' | PtrBB,[DATA]:00000004h,scope='P' | PtrBC,[DATA]:00000006h,scope='P' | PtrCA,[PtrCA]:00000000h,scope='E' | PtrCB,[PtrCB]:00000000h,scope='E' | PtrCC,[PtrCC]:00000000h,scope='E' | Start,[CODE]:0000006Bh,scope='P' | TxtAA,[TxtAA]:00000000h,scope='E' | TxtBB,[DATA]:00000008h,scope='P' | TxtCC,[TxtCC]:00000000h,scope='E' | Write,[Write]:00000000h,scope='E' | WriteFromA,[WriteFromA]:00000000h,scope='E' | WriteFromB,[CODE]:00000001h,scope='P' | WriteFromC,[WriteFromC]:00000000h,scope='E' | |;; | |t7943C PROGRAM FORMAT=OMF,MODEL=%MODEL,LISTMAP=ON,LISTGLOBALS=ON | | GLOBAL %GLBLIST |[DATA] |[DATA] SEGMENT WIDTH=16,PURPOSE=DATA,COMBINE=PUBLIC,ALIGN=WORD |0000:CCCC | DW 0xCCCC |0002:[0000] |PtrCA DW TxtAA |0004:[0000] |PtrCB DW TxtBB |0006:[0800] |PtrCC DW TxtCC |0008:4324 |TxtCC DB "C$" |000A:CC | DB 0xCC |[CODE] |[CODE] SEGMENT WIDTH=16,PURPOSE=CODE,COMBINE=PUBLIC,ALIGN=BYTE |0000: |Write PROC |0000:B409 | MOV AH,09h |0002:CD21 | INT 21h |0004:CB | RET |0005: | ENDP Write |0005: |WriteFromC PROC |0005:BA[0000] | MOV DX,TxtAA |0008:9A[0000]{0000} | CALL Write |000D:BA[0000] | MOV DX,TxtBB |0010:9A[0000]{0000} | CALL Write |0015:BA[0800] | MOV DX,TxtCC |0018:9A[0000]{0000} | CALL Write |001D:8B16[0000] | MOV DX,[PtrAA] |0021:9A[0000]{0000} | CALL Write |0026:8B16[0000] | MOV DX,[PtrAB] |002A:9A[0000]{0000} | CALL Write |002F:8B16[0000] | MOV DX,[PtrAC] |0033:9A[0000]{0000} | CALL Write |0038:8B16[0000] | MOV DX,[PtrBA] |003C:9A[0000]{0000} | CALL Write |0041:8B16[0000] | MOV DX,[PtrBB] |0045:9A[0000]{0000} | CALL Write |004A:8B16[0000] | MOV DX,[PtrBC] |004E:9A[0000]{0000} | CALL Write |0053:8B16[0200] | MOV DX,[PtrCA] |0057:9A[0000]{0000} | CALL Write |005C:8B16[0400] | MOV DX,[PtrCB] |0060:9A[0000]{0000} | CALL Write |0065:8B16[0600] | MOV DX,[PtrCC] |0069:9A[0000]{0000} | CALL Write |006E:CB | RET |006F: | ENDP WriteFromC | | ENDPROGRAM t7943C | **** ListMap "t7943C.obj",groups=0,segments=2,entry=,stack= | [DATA],RVA=00000000h,size=0000000Bh=11,width=16,align=2,purpose=DATA | [CODE],RVA=00000000h,size=0000006Fh=111,width=16,align=1,purpose=CODE | **** ListGlobals "t7943C.obj",Global=0,Public=6,Extern=10,eXport=0,Import=0 | PtrAA,[PtrAA]:00000000h,scope='E' | PtrAB,[PtrAB]:00000000h,scope='E' | PtrAC,[PtrAC]:00000000h,scope='E' | PtrBA,[PtrBA]:00000000h,scope='E' | PtrBB,[PtrBB]:00000000h,scope='E' | PtrBC,[PtrBC]:00000000h,scope='E' | PtrCA,[DATA]:00000002h,scope='P' | PtrCB,[DATA]:00000004h,scope='P' | PtrCC,[DATA]:00000006h,scope='P' | TxtAA,[TxtAA]:00000000h,scope='E' | TxtBB,[TxtBB]:00000000h,scope='E' | TxtCC,[DATA]:00000008h,scope='P' | Write,[CODE]:00000000h,scope='P' | WriteFromA,[WriteFromA]:00000000h,scope='E' | WriteFromB,[WriteFromB]:00000000h,scope='E' | WriteFromC,[CODE]:00000005h,scope='P' | |;; | |t7943 PROGRAM FORMAT=MZ,MODEL=%MODEL,LISTMAP=ON,LISTGLOBALS=ON,LISTLITERALS=ON | | LINK "t7943A.obj" | | LINK "t7943B.obj" | | LINK "t7943C.obj" | |ENDPROGRAM t7943 |# I0560 Linking OMF module ".\t7943A.obj". |# I0560 Linking OMF module ".\t7943B.obj". |# I0560 Linking OMF module ".\t7943C.obj". | **** ListMap "t7943.exe",groups=3,segments=3,entry=[CODE]:000000D6h,stack=[STACK]:00000040h | [DATA],RVA=00000000h,size=00000063h=99,group [DATA] | [DATA],RVA=00000000h,size=00000063h=99,width=16,align=2,purpose=DATA | [CODE],RVA=00000063h,size=00000176h=374,group [CODE] | [CODE],RVA=00000063h,size=00000176h=374,width=16,align=1,purpose=CODE | [STACK],RVA=000001E0h,size=00000040h=64,group [STACK] | [STACK],RVA=000001E0h,size=00000040h=64,width=16,align=0010h,purpose=STACK | **** ListGlobals "t7943.exe",Global=16,Public=1,Extern=0,eXport=0,Import=0 | PtrAA,[DATA]:00000002h,RVA=00000002h,scope='G' | PtrAB,[DATA]:00000004h,RVA=00000004h,scope='G' | PtrAC,[DATA]:00000006h,RVA=00000006h,scope='G' | PtrBA,[DATA]:0000000Eh,RVA=0000000Eh,scope='G' | PtrBB,[DATA]:00000010h,RVA=00000010h,scope='G' | PtrBC,[DATA]:00000012h,RVA=00000012h,scope='G' | PtrCA,[DATA]:0000005Ah,RVA=0000005Ah,scope='G' | PtrCB,[DATA]:0000005Ch,RVA=0000005Ch,scope='G' | PtrCC,[DATA]:0000005Eh,RVA=0000005Eh,scope='G' | Start,[CODE]:000000D6h,RVA=00000139h,scope='P' | TxtAA,[DATA]:00000008h,RVA=00000008h,scope='G' | TxtBB,[DATA]:00000014h,RVA=00000014h,scope='G' | TxtCC,[DATA]:00000060h,RVA=00000060h,scope='G' | Write,[CODE]:00000107h,RVA=0000016Ah,scope='G' | WriteFromA,[CODE]:00000001h,RVA=00000064h,scope='G' | WriteFromB,[CODE]:0000006Ch,RVA=000000CFh,scope='G' | WriteFromC,[CODE]:0000010Ch,RVA=0000016Fh,scope='G'
Expected messages t7943.out
I0180 Assembling source file "t7943.htm". I0270 Assembling source "t7943". I0310 Assembling source pass 1. I0330 Assembling source pass 2 - final. I0470 Assembling program "t7943A". "t7943.htm"{63} I0510 Assembling program pass 1. "t7943.htm"{63} I0510 Assembling program pass 2. "t7943.htm"{63} I0530 Assembling program pass 3 - final. "t7943.htm"{63} I0660 16bit LARGE OMF file "t7943A.obj" created, size=553. "t7943.htm"{103} I0650 Program "t7943A" assembled in 3 passes with errorlevel 0. "t7943.htm"{103} I0470 Assembling program "t7943B". "t7943.htm"{126} I0510 Assembling program pass 1. "t7943.htm"{126} I0510 Assembling program pass 2. "t7943.htm"{126} I0510 Assembling program pass 3. "t7943.htm"{126} I0530 Assembling program pass 4 - final. "t7943.htm"{126} I0660 16bit LARGE OMF file "t7943B.obj" created, size=711. "t7943.htm"{182} I0650 Program "t7943B" assembled in 4 passes with errorlevel 0. "t7943.htm"{182} I0470 Assembling program "t7943C". "t7943.htm"{205} I0510 Assembling program pass 1. "t7943.htm"{205} I0510 Assembling program pass 2. "t7943.htm"{205} I0530 Assembling program pass 3 - final. "t7943.htm"{205} I0660 16bit LARGE OMF file "t7943C.obj" created, size=545. "t7943.htm"{247} I0650 Program "t7943C" assembled in 3 passes with errorlevel 0. "t7943.htm"{247} I0470 Assembling program "t7943". "t7943.htm"{269} I0510 Assembling program pass 1. "t7943.htm"{269} I0530 Assembling program pass 2 - final. "t7943.htm"{269} I0560 Linking OMF module ".\t7943A.obj". "t7943.htm"{273} I0560 Linking OMF module ".\t7943B.obj". "t7943.htm"{273} I0560 Linking OMF module ".\t7943C.obj". "t7943.htm"{273} I0660 16bit LARGE MZ file "t7943.exe" created, size=729. "t7943.htm"{273} I0650 Program "t7943" assembled in 2 passes with errorlevel 0. "t7943.htm"{273} I0750 Source "t7943" (391 lines) assembled in 2 passes with errorlevel 0. I0860 Listing file "t7943.htm.lst" created, size=11789. I0990 EuroAssembler terminated with errorlevel 0.
Expected output file t7943. exe
0000: 4D 5A D9 00 02 00 2B 00 10 00 05 00 FF FF 1E 00  MZ¤°·°+°·°·°¤¤·°
0010: 40 00 E4 07 D9 00 06 00 40 00 00 00 00 00 00 00  @°¤·¤°·°@°°°°°°°
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  °°°°°°°°°°°°°°°°
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  °°°°°°°°°°°°°°°°
0040: 0A 00 06 00 12 00 06 00 1A 00 06 00 23 00 06 00  ¬°·°·°·°·°·°#°·°
0050: 2C 00 06 00 35 00 06 00 3E 00 06 00 47 00 06 00  ,°·°5°·°>°·°G°·°
0060: 50 00 06 00 59 00 06 00 62 00 06 00 6B 00 06 00  P°·°Y°·°b°·°k°·°
0070: 75 00 06 00 7D 00 06 00 85 00 06 00 8E 00 06 00  u°·°}°·°¤°·°¤°·°
0080: 97 00 06 00 A0 00 06 00 A9 00 06 00 B2 00 06 00  ¤°·°¤°·°¤°·°¤°·°
0090: BB 00 06 00 C4 00 06 00 CD 00 06 00 D6 00 06 00  ¤°·°¤°·°¤°·°¤°·°
00A0: DA 00 06 00 E4 00 06 00 EC 00 06 00 F1 00 06 00  ¤°·°¤°·°¤°·°¤°·°
00B0: F6 00 06 00 FB 00 06 00 03 01 06 00 15 01 06 00  ¤°·°¤°·°···°···°
00C0: 1D 01 06 00 25 01 06 00 2E 01 06 00 37 01 06 00  ···°%··°.··°7··°
00D0: 40 01 06 00 49 01 06 00 52 01 06 00 5B 01 06 00  @··°I··°R··°[··°
00E0: 64 01 06 00 6D 01 06 00 76 01 06 00 00 00 00 00  d··°m··°v··°°°°°
00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  °°°°°°°°°°°°°°°°
0100: AA AA 08 00 14 00 60 00 41 24 AA 00 BB BB 08 00  ¤¤·°·°`°A$¤°¤¤·°
0110: 14 00 60 00 42 24 BB 00 0D 0A 24 00 41 42 43 41  ·°`°B$¤°·¬$°ABCA
0120: 42 43 41 42 43 41 42 43 41 42 43 41 42 43 41 42  BCABCABCABCABCAB
0130: 43 41 42 43 41 42 43 41 42 43 41 42 43 41 42 43  CABCABCABCABCABC
0140: 20 65 78 70 65 63 74 65 64 2E 24 00 20 6F 62 74  ¯expected.$°¯obt
0150: 61 69 6E 65 64 2E 24 00 CC CC 08 00 14 00 60 00  ained.$°¤¤·°·°`°
0160: 43 24 CC 90 BA 08 00 9A 0A 01 06 00 BA 14 00 9A  C$¤¤¤·°¤¬··°¤·°¤
0170: 0A 01 06 00 BA 60 00 9A 0A 01 06 00 8B 16 02 00  ¬··°¤`°¤¬··°¤··°
0180: 9A 0A 01 06 00 8B 16 04 00 9A 0A 01 06 00 8B 16  ¤¬··°¤··°¤¬··°¤·
0190: 06 00 9A 0A 01 06 00 8B 16 0E 00 9A 0A 01 06 00  ·°¤¬··°¤··°¤¬··°
01A0: 8B 16 10 00 9A 0A 01 06 00 8B 16 12 00 9A 0A 01  ¤··°¤¬··°¤··°¤¬·
01B0: 06 00 8B 16 5A 00 9A 0A 01 06 00 8B 16 5C 00 9A  ·°¤·Z°¤¬··°¤·\°¤
01C0: 0A 01 06 00 8B 16 5E 00 9A 0A 01 06 00 CB 90 BA  ¬··°¤·^°¤¬··°¤¤¤
01D0: 08 00 9A 0A 01 06 00 BA 14 00 9A 0A 01 06 00 BA  ·°¤¬··°¤·°¤¬··°¤
01E0: 60 00 9A 0A 01 06 00 8B 16 02 00 9A 0A 01 06 00  `°¤¬··°¤··°¤¬··°
01F0: 8B 16 04 00 9A 0A 01 06 00 8B 16 06 00 9A 0A 01  ¤··°¤¬··°¤··°¤¬·
0200: 06 00 8B 16 0E 00 9A 0A 01 06 00 8B 16 10 00 9A  ·°¤··°¤¬··°¤··°¤
0210: 0A 01 06 00 8B 16 12 00 9A 0A 01 06 00 8B 16 5A  ¬··°¤··°¤¬··°¤·Z
0220: 00 9A 0A 01 06 00 8B 16 5C 00 9A 0A 01 06 00 8B  °¤¬··°¤·\°¤¬··°¤
0230: 16 5E 00 9A 0A 01 06 00 CB B8 00 00 8E D8 BA 1C  ·^°¤¬··°¤¤°°¤¤¤·
0240: 00 9A 0A 01 06 00 BA 18 00 9A 0A 01 06 00 9A 04  °¤¬··°¤·°¤¬··°¤·
0250: 00 06 00 9A 6F 00 06 00 9A 0F 01 06 00 BA 4C 00  °·°¤o°·°¤···°¤L°
0260: 9A 0A 01 06 00 B8 00 4C CD 21 B4 09 CD 21 CB BA  ¤¬··°¤°L¤!¤·¤!¤¤
0270: 08 00 9A 0A 01 06 00 BA 14 00 9A 0A 01 06 00 BA  ·°¤¬··°¤·°¤¬··°¤
0280: 60 00 9A 0A 01 06 00 8B 16 02 00 9A 0A 01 06 00  `°¤¬··°¤··°¤¬··°
0290: 8B 16 04 00 9A 0A 01 06 00 8B 16 06 00 9A 0A 01  ¤··°¤¬··°¤··°¤¬·
02A0: 06 00 8B 16 0E 00 9A 0A 01 06 00 8B 16 10 00 9A  ·°¤··°¤¬··°¤··°¤
02B0: 0A 01 06 00 8B 16 12 00 9A 0A 01 06 00 8B 16 5A  ¬··°¤··°¤¬··°¤·Z
02C0: 00 9A 0A 01 06 00 8B 16 5C 00 9A 0A 01 06 00 8B  °¤¬··°¤·\°¤¬··°¤
02D0: 16 5E 00 9A 0A 01 06 00 CB                       ·^°¤¬··°¤

▲Back to the top▲