'; Demonstration of how to write an entire .EXE format program as a .OBJ' Comment.Single
'\n'          Text.Whitespace

'; file to be linked. Tested with the VAL free linker.' Comment.Single
'\n'          Text.Whitespace

'; To build:' Comment.Single
'\n'          Text.Whitespace

';    nasm -fobj objexe.asm' Comment.Single
'\n'          Text.Whitespace

';    val objexe.obj,objexe.exe;' Comment.Single
'\n'          Text.Whitespace

'; To test:'  Comment.Single
'\n'          Text.Whitespace

';    objexe' Comment.Single
'\n'          Text.Whitespace

"; (should print `hello, world')" Comment.Single
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'segment'     Keyword
' '           Text.Whitespace
'code'        Name.Variable
'\n\n'        Text.Whitespace

'..start:'    Name.Label
'  '          Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'ax'          Name.Builtin
','           Punctuation
'data'        Name.Variable
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'ds'          Name.Builtin
','           Punctuation
'ax'          Name.Builtin
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'ax'          Name.Builtin
','           Punctuation
'stack'       Name.Variable
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'ss'          Name.Builtin
','           Punctuation
'ax'          Name.Builtin
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'sp'          Name.Builtin
','           Punctuation
'stacktop'    Name.Variable
'\n\n'        Text.Whitespace

'\t  '        Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'dx'          Name.Builtin
','           Punctuation
'hello'       Name.Variable
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'ah'          Name.Builtin
','           Punctuation
'9'           Literal.Number.Integer
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'int'         Name.Function
' '           Text.Whitespace
'0x21'        Literal.Number.Hex
'\n\n'        Text.Whitespace

'\t  '        Text.Whitespace
'mov'         Name.Function
' '           Text.Whitespace
'ax'          Name.Builtin
','           Punctuation
'0x4c00'      Literal.Number.Hex
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'int'         Name.Function
' '           Text.Whitespace
'0x21'        Literal.Number.Hex
'\n\n'        Text.Whitespace

'\t  '        Text.Whitespace
'segment'     Keyword
' '           Text.Whitespace
'data'        Name.Variable
'\n'          Text.Whitespace

'hello:'      Name.Label
'\t  '        Text.Whitespace
'db'          Keyword.Declaration
' '           Text.Whitespace
"'hello, world'" Literal.String
','           Punctuation
' '           Text.Whitespace
'13'          Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'10'          Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
"'$'"         Literal.String
'\n\n'        Text.Whitespace

'\t  '        Text.Whitespace
'segment'     Keyword
' '           Text.Whitespace
'stack'       Name.Variable
' '           Text.Whitespace
'stack'       Name.Variable
'\n'          Text.Whitespace

'\t  '        Text.Whitespace
'resb'        Keyword.Declaration
' '           Text.Whitespace
'64'          Literal.Number.Integer
'\n'          Text.Whitespace

'stacktop:'   Name.Label
'\n'          Text.Whitespace
