EuroAssembler Index Manual Download Source Macros


Sitemap Links Forum Tests Projects

Test t3145: Machine instruction JMP in SMALL and LARGE models


Description
CALL (and JMP) default distance selected by memory model.
Tested procedures
IiDispatchLocation  
Source & expected listing t3145.htm.lst
| | EUROASM LIST=ON,DUMP=ON,DUMPWIDTH=22,CPU=386,NOWARN=3990 | |t3145 PROGRAM FORMAT=OMF,MODEL=SMALL,LISTMAP=OFF,LISTGLOBALS=OFF |[CodeSeg] |[CodeSeg] SEGMENT PURPOSE=CODE,WIDTH=16 ; Program with monocode memory model (SMALL). |0000:E8(1900) | CALLN FarLabel: |0003:E8(1900) | CALL FarLabel: ; Intersegment distance defaults to NEAR due to monocode model. |0006:9A[1900]{0000} | CALLF FarLabel: |000B:E8(1900) | CALLN FarProc: |000E:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target's DIST=FAR modifier. |0013:9A[1900]{0000} | CALLF FarProc: |0018:E8(0000) | CALLN ExtLabel: |001B:E8(0000) | CALL ExtLabel: ; Intersegment distance defaults to NEAR due to monocode model. |001E:9A[0000]{0000} | CALLF ExtLabel: |0023:E8(2211) | CALLN 0x1122 |0026:E8(2211) | CALL 0x1122 ; Absolute offset assumes the current segment. |0029:9A[2211]{0000} | CALLF 0x1122 |002E:9A22110000 | CALL 0:0x1122 ; Distance is FAR due to target's explicitly specified absolute segment. |0033:9A22110000 | CALLF 0:0x1122 |[FarSeg] |[FarSeg] SEGMENT PURPOSE=CODE,WIDTH=16 |0000:E81600 | CALLN FarLabel: |0003:E81300 | CALL FarLabel: ; Intrasegment distance defaults to NEAR. |0006:9A[1900]{0000} | CALLF FarLabel: |000B:E80B00 | CALLN FarProc: |000E:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target's DIST=FAR modifier. |0013:9A[1900]{0000} | CALLF FarProc: |0018:C3 | RET ; Instruction RET defaults to DIST=NEAR. |0019: |FarLabel: |0019: |FarProc: PROC DIST=FAR ; Explicitly specified FAR property of FarProc. |0019:CB | RET ; Instruction RET inside far procedure is implicitly DIST=FAR. |001A: | ENDP FarProc: | |ExtLabel: EXTERN ; External symbol in monocode models defaults to NEAR. | |ENDPROGRAM t3145 |## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000024h is not linkable. |## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000027h is not linkable. |## W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Ah is not linkable. | | ;; Now assemble the same program in large memory model | |t3145 PROGRAM FORMAT=OMF,MODEL=LARGE,LISTMAP=OFF,LISTGLOBALS=OFF |[CodeSeg] |[CodeSeg] SEGMENT PURPOSE=CODE,WIDTH=16 ; Program with multicode memory model (LARGE). |0000:E8(1900) | CALLN FarLabel: |0003:9A[1900]{0000} | CALL FarLabel: ; Intersegment distance defaults to FAR due to multicode model. |0008:9A[1900]{0000} | CALLF FarLabel: |000D:E8(1900) | CALLN FarProc: |0010:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target DIST=FAR modifier. |0015:9A[1900]{0000} | CALLF FarProc: |001A:E8(0000) | CALLN ExtLabel: |001D:9A[0000]{0000} | CALL ExtLabel: ; Intersegment distance defaults to FAR due to multicode model. |0022:9A[0000]{0000} | CALLF ExtLabel: |0027:E8(2211) | CALLN 0x1122 |002A:E8(2211) | CALL 0x1122 ; Absolute offset assumes the current segment. |002D:9A[2211]{0000} | CALLF 0x1122 |0032:9A22110000 | CALL 0:0x1122 ; Distance is FAR due to target's explicitly specified absolute segment. |0037:9A22110000 | CALLF 0:0x1122 |[FarSeg] |[FarSeg] SEGMENT PURPOSE=CODE,WIDTH=16 |0000:E81600 | CALLN FarLabel: |0003:E81300 | CALL FarLabel: ; Intrasegment distance defaults to NEAR. |0006:9A[1900]{0000} | CALLF FarLabel: |000B:E80B00 | CALLN FarProc: |000E:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target DIST=FAR modifier. |0013:9A[1900]{0000} | CALLF FarProc: |0018:C3 | RET ; Instruction RET defaults to DIST=NEAR. |0019: |FarLabel: |0019: |FarProc: PROC DIST=FAR ; Explicitly specified FAR property of FarProc. |0019:CB | RET ; Instruction RET inside far procedure is implicitly FAR. |001A: | ENDP FarProc: | |ExtLabel: EXTERN ; External symbol in multicode models defaults to FAR. | |ENDPROGRAM t3145 |## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000028h is not linkable. |## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:0000002Bh is not linkable. |## W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Eh is not linkable.
Expected messages t3145.out
I0180 Assembling source file "t3145.htm". I0270 Assembling source "t3145". I0310 Assembling source pass 1. I0330 Assembling source pass 2 - final. I0470 Assembling program "t3145". "t3145.htm"{51} I0510 Assembling program pass 1. "t3145.htm"{51} I0510 Assembling program pass 2. "t3145.htm"{51} I0510 Assembling program pass 3. "t3145.htm"{51} I0530 Assembling program pass 4 - final. "t3145.htm"{51} W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000024h is not linkable. "t3145.htm"{80} W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000027h is not linkable. "t3145.htm"{80} W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Ah is not linkable. "t3145.htm"{80} I0660 16bit SMALL OMF file "t3145.obj" created, size=248. "t3145.htm"{80} I0650 Program "t3145" assembled in 4 passes with errorlevel 3. "t3145.htm"{80} I0470 Assembling program "t3145". "t3145.htm"{85} I0510 Assembling program pass 1. "t3145.htm"{85} I0510 Assembling program pass 2. "t3145.htm"{85} I0510 Assembling program pass 3. "t3145.htm"{85} I0530 Assembling program pass 4 - final. "t3145.htm"{85} W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000028h is not linkable. "t3145.htm"{114} W3731 Self-relative relocation to an absolute VA at [CodeSeg]:0000002Bh is not linkable. "t3145.htm"{114} W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Eh is not linkable. "t3145.htm"{114} I0660 16bit LARGE OMF file "t3145.obj" created, size=254. "t3145.htm"{114} I0650 Program "t3145" assembled in 4 passes with errorlevel 3. "t3145.htm"{114} I0750 Source "t3145" (150 lines) assembled in 2 passes with errorlevel 3. I0860 Listing file "t3145.htm.lst" created, size=4590. I0990 EuroAssembler terminated with errorlevel 3.

▲Back to the top▲