📄 objtest.asm
字号:
; 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 privatetrampoline: 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]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -