EuroAssembler Index Manual Download Source Macros


Sitemap Links Forum Tests Projects

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


Tested procedures
PgmLinkImage   SssRelocateSegment  
Source & expected listing t7938.htm.lst
| | EUROASM LIST=ON,DUMP=ON,DUMPWIDTH=22 |4C41524745 |%MODEL %SET LARGE | |t7938A 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:9A[0000]{0000} | CALL Write |0009:BA[0000] | MOV DX,TxtBB |000C:9A[0000]{0000} | CALL Write |0011:8B16[0200] | MOV DX,[PtrAA] |0015:9A[0000]{0000} | CALL Write |001A:8B16[0400] | MOV DX,[PtrAB] |001E:9A[0000]{0000} | CALL Write |0023:8B16[0000] | MOV DX,[PtrBA] |0027:9A[0000]{0000} | CALL Write |002C:8B16[0000] | MOV DX,[PtrBB] |0030:9A[0000]{0000} | CALL Write |0035:CB | RET |0036: | ENDP WriteFromA | | ENDPROGRAM t7938A | **** ListMap "t7938A.obj",groups=0,segments=2,entry=,stack= | [DATA],RVA=00000000h,size=0000000Ah=10,width=16,align=2,purpose=DATA | [CODE],RVA=00000000h,size=00000036h=54,width=16,align=1,purpose=CODE | **** ListGlobals "t7938A.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' | |t7938B 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:9A[3600]{0000} | CALL Write |0009:BA[0600] | MOV DX,TxtBB |000C:9A[3600]{0000} | CALL Write |0011:8B16[0000] | MOV DX,[PtrAA] |0015:9A[3600]{0000} | CALL Write |001A:8B16[0000] | MOV DX,[PtrAB] |001E:9A[3600]{0000} | CALL Write |0023:8B16[0200] | MOV DX,[PtrBA] |0027:9A[3600]{0000} | CALL Write |002C:8B16[0400] | MOV DX,[PtrBB] |0030:9A[3600]{0000} | CALL Write |0035:CB | RET |0036: | ENDP WriteFromB |0036: |Write PROC |0036:B409 | MOV AH,09h |0038:CD21 | INT 21h |003A:CB | RET |003B: | ENDP Write | | ENDPROGRAM t7938B | **** ListMap "t7938B.obj",groups=0,segments=2,entry=,stack= | [DATA],RVA=00000000h,size=0000000Ah=10,width=16,align=2,purpose=DATA | [CODE],RVA=00000000h,size=0000003Bh=59,width=16,align=1,purpose=CODE | **** ListGlobals "t7938B.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]:00000036h,scope='P' | WriteFromA,[WriteFromA]:00000000h,scope='E' | WriteFromB,[CODE]:00000001h,scope='P' | |t7938 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:9A[0000]{0000} | CALL Write |000E:BA[0000] | MOV DX,=D(0x240A0D) |0011:9A[0000]{0000} | CALL Write |0016:9A[0000]{0000} | CALL WriteFromA |001B:9A[0000]{0000} | CALL WriteFromB |0020:BA[3300] | MOV DX,=B"obtained.$" |0023:9A[0000]{0000} | CALL Write |0028:B8004C | MOV AX,4C00h |002B:CD21 | INT 21h | | LINK "t7938A.obj" | | LINK "t7938B.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 t7938 |# I0560 Linking OMF module ".\t7938A.obj". |# I0560 Linking OMF module ".\t7938B.obj". | **** ListMap "t7938.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=16,purpose=DATA+LITERAL | [CODE],RVA=00000052h,size=0000009Eh=158,group [CODE] | [CODE],RVA=00000052h,size=0000009Eh=158,width=16,align=1,purpose=CODE | [STACK],RVA=000000F0h,size=00000040h=64,group [STACK] | [STACK],RVA=000000F0h,size=00000040h=64,width=16,align=16,purpose=STACK | **** ListGlobals "t7938.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]:00000099h,RVA=000000EBh,scope='G' | WriteFromA,[CODE]:0000002Eh,RVA=00000080h,scope='G' | WriteFromB,[CODE]:00000064h,RVA=000000B6h,scope='G'
Expected messages t7938.out
I0180 Assembling source file "t7938.htm". I0270 Assembling source "t7938". I0310 Assembling source pass 1. I0330 Assembling source pass 2 - final. I0470 Assembling program "t7938A". "t7938.htm"{53} I0510 Assembling program pass 1. "t7938.htm"{53} I0510 Assembling program pass 2. "t7938.htm"{53} I0530 Assembling program pass 3 - final. "t7938.htm"{53} I0660 16bit LARGE OMF file "t7938A.obj" created, size=345. "t7938.htm"{77} I0650 Program "t7938A" assembled in 3 passes with errorlevel 0. "t7938.htm"{77} I0470 Assembling program "t7938B". "t7938.htm"{91} I0510 Assembling program pass 1. "t7938.htm"{91} I0510 Assembling program pass 2. "t7938.htm"{91} I0510 Assembling program pass 3. "t7938.htm"{91} I0530 Assembling program pass 4 - final. "t7938.htm"{91} I0660 16bit LARGE OMF file "t7938B.obj" created, size=354. "t7938.htm"{120} I0650 Program "t7938B" assembled in 4 passes with errorlevel 0. "t7938.htm"{120} I0470 Assembling program "t7938". "t7938.htm"{134} I0510 Assembling program pass 1. "t7938.htm"{134} I0510 Assembling program pass 2. "t7938.htm"{134} I0530 Assembling program pass 3 - final. "t7938.htm"{134} I0560 Linking OMF module ".\t7938A.obj". "t7938.htm"{159} I0560 Linking OMF module ".\t7938B.obj". "t7938.htm"{159} I0660 16bit LARGE MZ file "t7938.exe" created, size=400. "t7938.htm"{159} I0650 Program "t7938" assembled in 3 passes with errorlevel 0. "t7938.htm"{159} I0750 Source "t7938" (213 lines) assembled in 2 passes with errorlevel 0. I0860 Listing file "t7938.htm.lst" created, size=6758. I0990 EuroAssembler terminated with errorlevel 0.

▲Back to the top▲