diff --git a/Learn-by-Examples.md b/Learn-by-Examples.md index a59305b..d927429 100644 --- a/Learn-by-Examples.md +++ b/Learn-by-Examples.md @@ -1 +1,56 @@ -[todo] \ No newline at end of file +```assembly +; Displaying the hexadecimal 0x000A +HWID_HOLO EQU 0x9 ;; setup constants +HOLO_DISPLAY_HEX EQU 1 +.data + DISPLAYED_HEX EQU 0X000A ;; create a word in memory called DISPLAYED_HEX and set its value to 0x000A +.text + MOV A, HOLO_DISPLAY_HEX ;; MOV the constant HOLO_DISPLAY_HEX into register A + MOV B, [DISPLAYED_HEX] ;; MOV the value inside the memory spot DISPLAYED_HEX into register B + HWI HWID_HOLO ;; create an hardware interrupt which will do the magic of displaying + BRK ;; halt execution for the rest of this tick +``` +```assembly +; Displaying the string "hello!" +HWID_HOLO EQU 0x9 ;; setup constants +HOLO_DISPLAY_STRING EQU 2 +.data + DISPLAYED_STRING: DW "hello!", 0 ;; create a string in memory and point to it by DISPLAYED_STRING + ;; the ',0' is a null word. This represents the end of the string +.text + MOV A, HOLO_DISPLAY_STRING ;; MOV the constant HOLO_DISPLAY_STRING into register A + MOV X, DISPLAYED_STRING ;; MOV the pointer of DISPLAYED_STRING into register B + HWI HWID_HOLO ;; do the magic + BRK ;; halt execution until the next tick +``` +```assembly +; Displaying the decimal 42 +HWID_HOLO EQU 0x9 ;; setup constants +HOLO_DISPLAY_DEC EQU 3 +.data + DISPLAYED_DECIMAL EQU 42 ;; create a word in memory called DISPLAYED_DECIMAL and set its value + ;; to 42 +.text + MOV A, HOLO_DISPLAY_DEC ;; MOV the constant HOLO_DISPLAY_DEC into register A + MOV B, DISPLAYED_DECIMAL ;; MOV the value inside the memory spot DISPLAYED_HEX into register B + HWI HWID_HOLO ;; more magic + BRK ;; halt execution until next tick +``` +```assembly +; Displaying the decimal 42 in red +HWID_HOLO EQU 0x9 ;; setup constants +HOLO_DISPLAY_DEC EQU 3 +HOLO_DISPLAY_COLOR EQU 4 +.data + DISPLAYED_DECIMAL EQU 42 ;; create a word in memory called DISPLAYED_DECIMAL and set its value + ;; to 42 +.text + MOV A, HOLO_DISPLAY_COLOR ;; MOV the constant HOLO_DISPLAY_COLOR into register A + MOV B, 0x00FF ;; MOV the (immediate) value 0x00FF into register B + MOV C, 0x0000 ;; clear register C + HWI HWID_HOLO ;; this interrupt will set the color to: #0000FF [C:B] also know as red + MOV A, HOLO_DISPLAY_DEC ;; MOV the constant HOLO_DISPLAY_DEC into register A + MOV B, [DISPLAYED_DECIMAL] ;; MOV the value that DISPLAYED_DECIMAL is pointing at into register B + HWI HWID_HOLO ;; ... + BRK ;; halt execution until next tick +``` \ No newline at end of file