summaryrefslogtreecommitdiff
path: root/test/elif.asm
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-05-15 22:27:48 +0100
committerAnas Nashif <anas.nashif@intel.com>2012-05-15 22:27:48 +0100
commitb9fad1ab2ad3bd87bff05c4688c978d582ada438 (patch)
tree4a373f8dd867d20e67510de7cfe447a4b58c1a70 /test/elif.asm
parent65c26d26fb72cec0d43d199c72ed27513d17f4c9 (diff)
downloadnasm-b9fad1ab2ad3bd87bff05c4688c978d582ada438.tar.gz
nasm-b9fad1ab2ad3bd87bff05c4688c978d582ada438.tar.bz2
nasm-b9fad1ab2ad3bd87bff05c4688c978d582ada438.zip
Upstream version 2.08rc7
Diffstat (limited to 'test/elif.asm')
-rw-r--r--test/elif.asm39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/elif.asm b/test/elif.asm
new file mode 100644
index 0000000..49e6668
--- /dev/null
+++ b/test/elif.asm
@@ -0,0 +1,39 @@
+;Testname=unoptimized; Arguments=-O0 -fobj -oelif.obj; Files=stdout stderr elif.obj
+;Testname=optimized; Arguments=-Ox -fobj -oelif.obj; Files=stdout stderr elif.obj
+
+%macro DosPrintMsg 1+
+%ifnid %1
+section .data
+%%str_to_print:db %1
+section .text
+ mov dx,%%str_to_print
+ mov ah,9
+ int 0x21
+%else
+ mov dx,(%1)
+ mov ah,9
+ int 0x21
+%endif
+%endmacro
+
+%macro DosExit 1
+%if (%1) == 0
+;use short-form return 0 exit
+ int 0x20
+%elif ((%1) < 256) && ((%1) > 0)
+ mov ax,0x4C00 | (%1)
+ int 0x21
+%else
+%error Invalid return value
+%endif
+%endmacro
+
+org 0x100
+ DosPrintMsg predefined_str
+ DosPrintMsg "Using string with macro-defined label",10,0
+ DosExit 0
+ DosExit 1
+ DosExit 256
+
+section .data
+predefined_str:db "Using string with predefined label",10,0