EuroAssembler Index Manual Download Source Macros


Sitemap Links Forum Tests Projects

Test t7936: Compile to MZ linking from 2 OMF in SMALL model, ungrouped unaligned segments.


Tested procedures
PgmLinkImage   PfomfCompile  
Source & expected listing t7936.htm.lst
| | EUROASM LIST=ON,DUMP=ON,DUMPWIDTH=22 |534D414C4C |%MODEL %SET SMALL | |t7936A PROGRAM FORMAT=OMF,MODEL=%MODEL,LISTMAP=ON,LISTGLOBALS=ON | | GLOBAL PtrAA,PtrAB,PtrBA,PtrBB,TxtAA,TxtBB,Write,WriteFromA,WriteFromB |[DATA] |[DATA] SEGMENT WIDTH=16,PURPOSE=DATA,COMBINE=PUBLIC,ALIGN=WORD |0000:AAAA | DW 0xAAAA |0002:[0600] |PtrAA DW TxtAA |0004:[0000] |PtrAB DW TxtBB |0006:41412024 |TxtAA DB "AA $" |[CODE] |[CODE] SEGMENT WIDTH=16,PURPOSE=CODE,COMBINE=PUBLIC,ALIGN=BYTE |0000:90 | NOP |0001: |WriteFromA PROC |0001:BA[0600] | MOV DX,TxtAA |0004:E8(0000) | CALL Write |0007:BA[0000] | MOV DX,TxtBB |000A:E8(0000) | CALL Write |000D:8B16[0200] | MOV DX,[PtrAA] |0011:E8(0000) | CALL Write |0014:8B16[0400] | MOV DX,[PtrAB] |0018:E8(0000) | CALL Write |001B:8B16[0000] | MOV DX,[PtrBA] |001F:E8(0000) | CALL Write |0022:8B16[0000] | MOV DX,[PtrBB] |0026:E8(0000) | CALL Write |0029:C3 | RET |002A: | ENDP WriteFromA | | ENDPROGRAM t7936A | **** ListMap "t7936A.obj",groups=0,segments=2,entry=,stack= | [DATA],RVA=00000000h,size=0000000Ah=10,width=16,align=2,purpose=DATA | [CODE],RVA=00000000h,size=0000002Ah=42,width=16,align=1,purpose=CODE | **** ListGlobals "t7936A.obj",Global=0,Public=4,Extern=5,eXport=0,Import=0 | PtrAA,[DATA]:00000002h,scope='P' | PtrAB,[DATA]:00000004h,scope='P' | PtrBA,[PtrBA]:00000000h,scope='E' | PtrBB,[PtrBB]:00000000h,scope='E' | TxtAA,[DATA]:00000006h,scope='P' | TxtBB,[TxtBB]:00000000h,scope='E' | Write,[Write]:00000000h,scope='E' | WriteFromA,[CODE]:00000001h,scope='P' | WriteFromB,[WriteFromB]:00000000h,scope='E' | |t7936B PROGRAM FORMAT=OMF,MODEL=%MODEL,LISTMAP=ON,LISTGLOBALS=ON | | GLOBAL PtrAA,PtrAB,PtrBA,PtrBB,TxtAA,TxtBB,Write,WriteFromA,WriteFromB |[DATA] |[DATA] SEGMENT WIDTH=16,PURPOSE=DATA,COMBINE=PUBLIC,ALIGN=WORD |0000:BBBB | DW 0xBBBB |0002:[0000] |PtrBA DW TxtAA |0004:[0600] |PtrBB DW TxtBB |0006:42422024 |TxtBB DB "BB $" |[CODE] |[CODE] SEGMENT WIDTH=16,PURPOSE=CODE,COMBINE=PUBLIC,ALIGN=BYTE |0000:90 | NOP |0001: |WriteFromB PROC |0001:BA[0000] | MOV DX,TxtAA |0004:E82300 | CALL Write |0007:BA[0600] | MOV DX,TxtBB |000A:E81D00 | CALL Write |000D:8B16[0000] | MOV DX,[PtrAA] |0011:E81600 | CALL Write |0014:8B16[0000] | MOV DX,[PtrAB] |0018:E80F00 | CALL Write |001B:8B16[0200] | MOV DX,[PtrBA] |001F:E80800 | CALL Write |0022:8B16[0400] | MOV DX,[PtrBB] |0026:E80100 | CALL Write |0029:C3 | RET |002A: | ENDP WriteFromB |002A: |Write PROC |002A:B409 | MOV AH,09h |002C:CD21 | INT 21h |002E:C3 | RET |002F: | ENDP Write | | ENDPROGRAM t7936B | **** ListMap "t7936B.obj",groups=0,segments=2,entry=,stack= | [DATA],RVA=00000000h,size=0000000Ah=10,width=16,align=2,purpose=DATA | [CODE],RVA=00000000h,size=0000002Fh=47,width=16,align=1,purpose=CODE | **** ListGlobals "t7936B.obj",Global=0,Public=5,Extern=4,eXport=0,Import=0 | PtrAA,[PtrAA]:00000000h,scope='E' | PtrAB,[PtrAB]:00000000h,scope='E' | PtrBA,[DATA]:00000002h,scope='P' | PtrBB,[DATA]:00000004h,scope='P' | TxtAA,[TxtAA]:00000000h,scope='E' | TxtBB,[DATA]:00000006h,scope='P' | Write,[CODE]:0000002Ah,scope='P' | WriteFromA,[WriteFromA]:00000000h,scope='E' | WriteFromB,[CODE]:00000001h,scope='P' | |t7936 PROGRAM FORMAT=MZ,MODEL=%MODEL,LISTMAP=ON,LISTGLOBALS=ON,LISTLITERALS=ON,ENTRY=Start: | | GLOBAL PtrAA,PtrAB,PtrBA,PtrBB,TxtAA,TxtBB,Write,WriteFromA,WriteFromB |[STACK] |[STACK] SEGMENT WIDTH=16,PURPOSE=STACK,COMBINE=STACK |0000:..............~| D 32*WORD |[CODE] |[CODE] SEGMENT WIDTH=16,PURPOSE=CODE,COMBINE=PUBLIC,ALIGN=BYTE |0000:90 | NOP |0001:B8{0000} |Start: MOV AX,PARA#PtrAA |0004:8ED8 | MOV DS,AX |0006:BA[0400] | MOV DX,=B"AA BB AA BB AA BB AA BB AA BB AA BB expected.$" |0009:E8(0000) | CALL Write |000C:BA[0000] | MOV DX,=D(0x240A0D) |000F:E8(0000) | CALL Write |0012:E8(0000) | CALL WriteFromA |0015:E8(0000) | CALL WriteFromB |0018:BA[3300] | MOV DX,=B"obtained.$" |001B:E8(0000) | CALL Write |001E:B8004C | MOV AX,4C00h |0021:CD21 | INT 21h | | LINK "t7936A.obj" | | LINK "t7936B.obj" |[@LT4] ====ListLiterals in section [@LT4]. |0000:0D0A2400 =D(0x240A0D) |[@LT1] ====ListLiterals in section [@LT1]. |0004:41412042422041~=B"AA BB AA BB AA BB AA BB AA BB AA BB expected.$" |0033:6F627461696E65~=B"obtained.$" | |ENDPROGRAM t7936 |# I0560 Linking OMF module ".\t7936A.obj". |# I0560 Linking OMF module ".\t7936B.obj". | **** ListMap "t7936.exe",groups=3,segments=3,entry=[CODE]:00000001h,stack=[STACK]:00000040h | [DATA],RVA=00000000h,size=00000052h=82,group [DATA] | [DATA],RVA=00000000h,size=00000052h=82,width=16,align=0010h,purpose=DATA+LITERAL | [CODE],RVA=00000052h,size=0000007Ch=124,group [CODE] | [CODE],RVA=00000052h,size=0000007Ch=124,width=16,align=1,purpose=CODE | [STACK],RVA=000000D0h,size=00000040h=64,group [STACK] | [STACK],RVA=000000D0h,size=00000040h=64,width=16,align=0010h,purpose=STACK | **** ListGlobals "t7936.exe",Global=9,Public=1,Extern=0,eXport=0,Import=0 | PtrAA,[DATA]:00000040h,RVA=00000040h,scope='G' | PtrAB,[DATA]:00000042h,RVA=00000042h,scope='G' | PtrBA,[DATA]:0000004Ah,RVA=0000004Ah,scope='G' | PtrBB,[DATA]:0000004Ch,RVA=0000004Ch,scope='G' | Start,[CODE]:00000001h,RVA=00000053h,scope='P' | TxtAA,[DATA]:00000044h,RVA=00000044h,scope='G' | TxtBB,[DATA]:0000004Eh,RVA=0000004Eh,scope='G' | Write,[CODE]:00000077h,RVA=000000C9h,scope='G' | WriteFromA,[CODE]:00000024h,RVA=00000076h,scope='G' | WriteFromB,[CODE]:0000004Eh,RVA=000000A0h,scope='G'
Expected messages t7936.out
I0180 Assembling source file "t7936.htm". I0270 Assembling source "t7936". I0310 Assembling source pass 1. I0330 Assembling source pass 2 - final. I0470 Assembling program "t7936A". "t7936.htm"{53} I0510 Assembling program pass 1. "t7936.htm"{53} I0510 Assembling program pass 2. "t7936.htm"{53} I0530 Assembling program pass 3 - final. "t7936.htm"{53} I0660 16bit SMALL OMF file "t7936A.obj" created, size=333. "t7936.htm"{77} I0650 Program "t7936A" assembled in 3 passes with errorlevel 0. "t7936.htm"{77} I0470 Assembling program "t7936B". "t7936.htm"{91} I0510 Assembling program pass 1. "t7936.htm"{91} I0510 Assembling program pass 2. "t7936.htm"{91} I0530 Assembling program pass 3 - final. "t7936.htm"{91} I0660 16bit SMALL OMF file "t7936B.obj" created, size=318. "t7936.htm"{120} I0650 Program "t7936B" assembled in 3 passes with errorlevel 0. "t7936.htm"{120} I0470 Assembling program "t7936". "t7936.htm"{134} I0510 Assembling program pass 1. "t7936.htm"{134} I0510 Assembling program pass 2. "t7936.htm"{134} I0530 Assembling program pass 3 - final. "t7936.htm"{134} I0560 Linking OMF module ".\t7936A.obj". "t7936.htm"{159} I0560 Linking OMF module ".\t7936B.obj". "t7936.htm"{159} I0660 16bit SMALL MZ file "t7936.exe" created, size=302. "t7936.htm"{159} I0650 Program "t7936" assembled in 3 passes with errorlevel 0. "t7936.htm"{159} I0750 Source "t7936" (235 lines) assembled in 2 passes with errorlevel 0. I0860 Listing file "t7936.htm.lst" created, size=6764. I0990 EuroAssembler terminated with errorlevel 0.
Expected output file t7936. exe
0000: 4D 5A 2E 01 01 00 01 00 06 00 05 00 FF FF 0D 00  MZ.··°·°·°·°¤¤·°
0010: 40 00 37 86 03 00 05 00 40 00 00 00 00 00 00 00  @°7¤·°·°@°°°°°°°
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: 04 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00  ·°·°°°°°°°°°°°°°
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  °°°°°°°°°°°°°°°°
0060: 0D 0A 24 00 41 41 20 42 42 20 41 41 20 42 42 20  ·¬$°AA¯BB¯AA¯BB¯
0070: 41 41 20 42 42 20 41 41 20 42 42 20 41 41 20 42  AA¯BB¯AA¯BB¯AA¯B
0080: 42 20 41 41 20 42 42 20 65 78 70 65 63 74 65 64  B¯AA¯BB¯expected
0090: 2E 24 00 6F 62 74 61 69 6E 65 64 2E 24 00 AA AA  .$°obtained.$°¤¤
00A0: 44 00 4E 00 41 41 20 24 BB BB 44 00 4E 00 42 42  D°N°AA¯$¤¤D°N°BB
00B0: 20 24 90 B8 00 00 8E D8 BA 04 00 E8 6B 00 BA 00  ¯$¤¤°°¤¤¤·°¤k°¤°
00C0: 00 E8 65 00 E8 0F 00 E8 36 00 BA 33 00 E8 59 00  °¤e°¤·°¤6°¤3°¤Y°
00D0: B8 00 4C CD 21 90 BA 44 00 E8 4D 00 BA 4E 00 E8  ¤°L¤!¤¤D°¤M°¤N°¤
00E0: 47 00 8B 16 40 00 E8 40 00 8B 16 42 00 E8 39 00  G°¤·@°¤@°¤·B°¤9°
00F0: 8B 16 4A 00 E8 32 00 8B 16 4C 00 E8 2B 00 C3 90  ¤·J°¤2°¤·L°¤+°¤¤
0100: BA 44 00 E8 23 00 BA 4E 00 E8 1D 00 8B 16 40 00  ¤D°¤#°¤N°¤·°¤·@°
0110: E8 16 00 8B 16 42 00 E8 0F 00 8B 16 4A 00 E8 08  ¤·°¤·B°¤·°¤·J°¤·
0120: 00 8B 16 4C 00 E8 01 00 C3 B4 09 CD 21 C3        °¤·L°¤·°¤¤·¤!¤

▲Back to the top▲