From 3a32cdbce592ada2790fdcae93c625fa071d0274 Mon Sep 17 00:00:00 2001 From: zxq5 Date: Sat, 21 Jun 2025 01:53:54 +0100 Subject: [PATCH] Update assembler/usage --- assembler%2Fusage.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/assembler%2Fusage.md b/assembler%2Fusage.md index 61a6cac..c21d873 100644 --- a/assembler%2Fusage.md +++ b/assembler%2Fusage.md @@ -49,7 +49,7 @@ This document provides a comprehensive reference for the DSA (Damn Simple Archit | **MOVS** | `src_reg, dest_reg` | Copy with sign extension | **Examples:** -```dsa +```asm mov rg0, rg1 ; Copy rg0 to rg1 movs rg0, rg1 ; Copy rg0 to rg1 with sign extension ``` @@ -66,7 +66,7 @@ movs rg0, rg1 ; Copy rg0 to rg1 with sign extension | **LDW** | `base_reg, dest_reg [, offset]`
`label, dest_reg [, offset]` | Load word (32-bit) | **Examples:** -```dsa +```asm ; Direct register addressing ldb rg0, rg1 ; Load byte from address in rg0 ldw rg0, rg1, 8 ; Load word from (rg0 + 8) @@ -76,7 +76,7 @@ ldb buffer, rg2 ; Load byte from label 'buffer' ldw stack, bpr ; Load stack address into base pointer ``` **Label Expansions:** -```dsa +```asm ; ldb buffer, rg2 expands to: lli buffer, rg2 ; Load lower 16 bits of buffer address lui buffer, rg2 ; Load upper 16 bits of buffer address @@ -96,7 +96,7 @@ ldw bpr, bpr ; Load word from address in bpr | **STW** | `src_reg, base_reg [, offset]`
`src_reg, label [, offset]` | Store word to memory | **Examples:** -```dsa +```asm ; Direct register addressing stb rg0, rg1 ; Store byte from rg0 to address in rg1 stw rg0, rg1, 12 ; Store word to (rg1 + 12) @@ -106,7 +106,7 @@ stb acc, buffer ; Store byte from accumulator to 'buffer' stw rg1, current ; Store word to 'current' variable ``` **Label Expansions:** -```dsa +```asm ; stb acc, buffer expands to: lli buffer, rgf ; Load lower 16 bits of buffer address lui buffer, rgf ; Load upper 16 bits of buffer address @@ -129,7 +129,7 @@ stw rg1, rgf ; Store word from rg1 to address in rgf ensure that you always run **Lli** before **Lui** as **Lli** clears the upper 16 bits. **Examples:** -```dsa +```asm lli 0x1234, rg0 ; Load 0x1234 into lower 16 bits of rg0 lui 0xABCD, rg0 ; Load 0xABCD into upper 16 bits of rg0 ``` @@ -146,7 +146,7 @@ lui 0xABCD, rg0 ; Load 0xABCD into upper 16 bits of rg0 | **JLE** | `addr [, offset_reg]` | Jump if less or equal flags set | **Examples:** -```dsa +```asm jmp start ; Jump to label 'start' jmp 4, ret ; Jump to address (4 + ret register) jeq end ; Jump to 'end' if equal flag set @@ -185,7 +185,7 @@ inc rg0 ; rg0 = rg0 + 1 | **XNOR** | `src1_reg, src2_reg, dest_reg` | Bitwise XNOR | **Examples:** -```dsa +```asm and rg0, rg1, rg2 ; rg2 = rg0 & rg1 not rg0, rg1 ; rg1 = ~rg0 ``` @@ -197,7 +197,7 @@ not rg0, rg1 ; rg1 = ~rg0 | **SHR** | `reg, shift_amount` | Shift right | **Examples:** -```dsa +```asm shl rg0, 2 ; Shift rg0 left by 2 bits shr rg0, 3 ; Shift rg0 right by 3 bits ``` @@ -208,7 +208,7 @@ shr rg0, 3 ; Shift rg0 right by 3 bits | **CMP** | `reg1, reg2` | Compare registers and set flags | **Examples:** -```dsa +```asm cmp rg0, zero ; Compare rg0 with zero register cmp rg1, rg2 ; Compare rg1 with rg2 ``` @@ -222,7 +222,7 @@ cmp rg1, rg2 ; Compare rg1 with rg2 | **IRT** | - | Return from interrupt | **Examples:** -```dsa +```asm hlt ; Stop processor execution int 0x21 ; Trigger interrupt 0x21 ``` @@ -237,7 +237,7 @@ int 0x21 ; Trigger interrupt 0x21 | **DW** | `name: value1 [, value2, ...]` | Define words | **Examples:** -```dsa +```asm db message: "Hello World", 0 dh numbers: 1000, 2000, 3000 dw stack: 0x10000 @@ -251,7 +251,7 @@ dw stack: 0x10000 | **RESW** | `name: size` | Reserve words | **Examples:** -```dsa +```asm resb buffer: 256 ; Reserve 256 bytes resh array: 100 ; Reserve space for 100 half-words resw heap: 1024 ; Reserve space for 1024 words @@ -264,7 +264,7 @@ resw heap: 1024 ; Reserve space for 1024 words | **POP** | `reg` | Pop stack value into register | **Examples:** -```dsa +```asm push rg0 ; Push rg0 value onto stack pop ret ; Pop return address ``` @@ -275,7 +275,7 @@ pop ret ; Pop return address | **LWI** | `name, reg` | Load address into register | **Examples:** -```dsa +```asm lwi string, rg1 ; Load address of 'string' into rg1 ``` @@ -287,7 +287,7 @@ lwi string, rg1 ; Load address of 'string' into rg1 | **RETURN** | - | Return from a function to the caller | **Examples:** -```dsa +```asm call print::print ; Call the print function from the print namespace return ; Return from the current function ``` @@ -299,7 +299,7 @@ return ; Return from the current function | **INCLUDE** | `module_name "path"` | Include module | **Examples:** -```dsa +```asm include print "print.dsa" include fib "fib.dsa" ``` @@ -307,7 +307,7 @@ include fib "fib.dsa" ### Multiplication Library (multiply.dsa) -```dsa +```asm // multiply.dsa // usage: // @@ -345,7 +345,7 @@ end: ### Print Library (print.dsa) -```dsa +```asm // print.dsa // usage: // @@ -402,7 +402,7 @@ reset: ### Example Program (main.dsa) -```dsa +```asm include print "./print.dsa" dw stack: 0x10000