| ; test source file for assembling to binary files |
| ; build with: |
| ; yasm -f bin -o bintest.com bintest.asm |
| |
| ; When run (as a DOS .COM file), this program should print |
| ; hello, world |
| ; on two successive lines, then exit cleanly. |
| |
| ; This file should test the following: |
| ; [1] Define a text-section symbol |
| ; [2] Define a data-section symbol |
| ; [3] Define a BSS-section symbol |
| ; [4] Define a NASM local label |
| ; [5] Reference a NASM local label |
| ; [6] Reference a text-section symbol in the text section |
| ; [7] Reference a data-section symbol in the text section |
| ; [8] Reference a BSS-section symbol in the text section |
| ; [9] Reference a text-section symbol in the data section |
| ; [10] Reference a data-section symbol in the data section |
| ; [11] Reference a BSS-section symbol in the data section |
| |
| [BITS 16] |
| [ORG 0x100] |
| |
| [SECTION .text] |
| |
| jmp start ; [6] |
| |
| endX mov ax,0x4c00 ; [1] |
| int 0x21 |
| |
| start mov byte [bss_sym],',' ; [1] [8] |
| mov bx,[bssptr] ; [7] |
| mov al,[bx] |
| mov bx,[dataptr] ; [7] |
| mov [bx],al |
| mov cx,2 |
| .loop mov dx,datasym ; [1] [4] [7] |
| mov ah,9 |
| push cx |
| int 0x21 |
| pop cx |
| loop .loop ; [5] [6] |
| mov bx,[textptr] ; [7] |
| jmp bx |
| |
| [SECTION .data] |
| |
| datasym db 'hello world', 13, 10, '$' ; [2] |
| bssptr dw bss_sym ; [2] [11] |
| dataptr dw datasym+5 ; [2] [10] |
| textptr dw endX ; [2] [9] |
| |
| [SECTION .bss] |
| |
| bss_sym resb 1 ; [3] |