⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objtest.asm

📁 开源的nasm编译器源码,研究编译器原理很有帮且
💻 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 + -