Source File

; 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:

mg src="Project/screen2.gif">