; A simple Hello world program
;
START: ORG 1000h
LD B, LENGTH ; load the length of the string
LD C, #STRING ; load the address of string
LD D, #1 ; load immed a 1 to D
SETP 1 ; set port to Video output
LOOP: LD A, C ; load character
OUT A ; send it out through the port
SUB B, D ; decrement B
JMPZ DONE ; if finished goto DONE
MOV B, A ; put result back in B
ADD C, D ; increment pointer to next char
ADD A, D ;
MOV C, A ; put result back in C
JMP LOOP ; output next char
DONE: LD A, NEWLINE ; prepare to print carriage return
OUT A
HALT
STRING: DB "\0H\0e\0l\0l" ; zero padded string
DB "\0o\0 \0w\0o"
DB "\0r\0l\0d\0!"
LENGTH: DW 12 ; lenght of string
NEWLINE: DB "\0\n"
END
Listing File
ADDR LABEL OPCODE OPERANDS CODE
-----------------------------------------------------------------------
0000 START: ORG 1000h
1000 LD B, LENGTH 87101041
1004 LD C, #STRING 8F201029
1008 LD D, #1 8F300001
100C SETP 1 7101
100E LOOP: LD A, C F502
1010 OUT A 6D00
1012 SUB B, D 0913
1014 JMPZ DONE 4E1022
1017 MOV B, A 9110
1019 ADD C, D 0123
101B ADD A, D 0103
101D MOV C, A 9120
101F JMP LOOP 42100E
1022 DONE: LD A, NEWLINE 87001042
1026 OUT A 6D00
1028 HALT 04
1029 STRING: DB "\0H\0e\0l\0l" 00480065006C006C
1031 DB "\0o\0 \0w\0o" 006F00200077006F
1039 DB "\0r\0l\0d\0!" 0072006C00640021
1041 LENGTH: DW 12 000C
1043 NEWLINE: DB "\0\n" 000D
1045 END
Load File
The format of the load file is:
Load Address (four characters - hex format)
: (colon)
Up to 16 hex digits - 8 bytes
1000:871010418F201029
1008:8F3000017101F502
1010:6D0009134E102291
1018:1001230103912042
1020:100E870010426D00
1028:0400480065006C00
1030:6C006F0020007700
1038:6F0072006C006400
1040:21000C000D
FFFF: