Home | History | Annotate | Download | only in tests
      1 ; test source file for assembling to binary files
      2 ; build with:
      3 ;    yasm -f bin -o bintest.com bintest.asm
      4 
      5 ; When run (as a DOS .COM file), this program should print
      6 ;    hello, world
      7 ; on two successive lines, then exit cleanly.
      8 
      9 ; This file should test the following:
     10 ; [1] Define a text-section symbol
     11 ; [2] Define a data-section symbol
     12 ; [3] Define a BSS-section symbol
     13 ; [4] Define a NASM local label
     14 ; [5] Reference a NASM local label
     15 ; [6] Reference a text-section symbol in the text section
     16 ; [7] Reference a data-section symbol in the text section
     17 ; [8] Reference a BSS-section symbol in the text section
     18 ; [9] Reference a text-section symbol in the data section
     19 ; [10] Reference a data-section symbol in the data section
     20 ; [11] Reference a BSS-section symbol in the data section
     21 
     22 [BITS 16]
     23 [ORG 0x100]
     24 
     25 [SECTION .text]
     26 
     27 	  jmp start		; [6]
     28 
     29 endX	  mov ax,0x4c00		; [1]
     30 	  int 0x21
     31 
     32 start	  mov byte [bss_sym],',' ; [1] [8]
     33 	  mov bx,[bssptr]	; [7]
     34 	  mov al,[bx]
     35 	  mov bx,[dataptr]	; [7]
     36 	  mov [bx],al
     37 	  mov cx,2
     38 .loop	  mov dx,datasym	; [1] [4] [7]
     39 	  mov ah,9
     40 	  push cx
     41 	  int 0x21
     42 	  pop cx
     43 	  loop .loop		; [5] [6]
     44 	  mov bx,[textptr]	; [7]
     45 	  jmp bx
     46 
     47 [SECTION .data]
     48 
     49 datasym	  db 'hello  world', 13, 10, '$' ; [2]
     50 bssptr	  dw bss_sym		; [2] [11]
     51 dataptr	  dw datasym+5		; [2] [10]
     52 textptr	  dw endX		; [2] [9]
     53 
     54 [SECTION .bss]
     55 
     56 bss_sym	  resb 1		; [3]
     57