objtest.asm
资源名称:nasm-0.98.zip [点击查看]
上传用户:yuppie_zhu
上传日期:2007-01-08
资源大小:535k
文件大小:2k
源码类别:
编译器/解释器
开发平台:
C/C++
- ; test source file for assembling to Microsoft 16-bit .OBJ
- ; build with (16-bit Microsoft C):
- ; nasm -f obj objtest.asm
- ; cl /AL objtest.obj objlink.c
- ; other compilers should work too, provided they handle large
- ; model in the same way as MS C
- ; This file should test the following:
- ; [1] Define and export a global symbol
- ; [2] Define a non-global symbol
- ; [3] Define a common symbol
- ; [4] Define a NASM local label
- ; [5] Reference a NASM local label
- ; [6] Import an external symbol
- ; [7] Make a PC-relative relocated reference
- ; [8] Reference a symbol in the same section as itself
- ; [9] Reference a symbol in a different segment from itself
- ; [10] Define a segment group
- ; [11] Take the offset of a symbol in a grouped segment w.r.t. its segment
- ; [12] Reserve uninitialised data space in a segment
- ; [13] Directly take the segment address of a segment
- ; [14] Directly take the segment address of a group
- ; [15] Use SEG on a non-external
- ; [16] Use SEG on an external
- bits 16
- global _bsssym ; [1]
- global _function ; [1]
- global _selfptr ; [1]
- global _selfptr2 ; [1]
- common _commvar 2 ; [3]
- extern _printf ; [6]
- group mygroup mybss mydata ; [10]
- group mygroup2 mycode mycode2 ; [10]
- segment mycode private
- _function push bp
- mov bp,sp
- push ds
- mov ax,mygroup ; [14]
- mov ds,ax
- inc word [_bsssym] ; [9]
- mov ax,seg _commvar
- mov ds,ax
- dec word [_commvar]
- pop ds
- mov ax,[bp+6]
- mov dx,[bp+8]
- push dx
- push ax
- push dx
- push ax
- call far [cs:.printf] ; [5] [8]
- pop ax
- pop ax
- call trampoline ; [7]
- pop ax
- pop ax
- mov sp,bp
- pop bp
- retf
- .printf dw _printf, seg _printf ; [2] [4] [16]
- segment mycode2 private
- trampoline: pop ax
- push cs
- push ax
- jmp far _printf
- segment mybss private
- _bsssym resw 64 ; [12]
- segment mydata private
- _selfptr dw _selfptr, seg _selfptr ; [8] [15]
- _selfptr2 dw _selfptr2 wrt mydata, mydata ; [11] [13]