Ignore:
Timestamp:
Nov 25, 2023, 11:47:52 PM (6 months ago)
Author:
chronos
Message:
  • Fixed: Assembler and disassembler to work correctly with supported instructions.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ByteArray/Sample.asm

    r57 r59  
    1   NOP
     1    JP   Start
     2    NOP
     3    NOP
     4    NOP
    25
    3   LD A, 64
    4   LD B, 8
    5   OUT (B), A
    6   LD B, 0
    7   LD C, 10
    8   OUT (B), A
     6    RET
     7    LD   R0, (R1)
     8    LD   (R0), R1
     9    LD   R0, R1
     10    LD   R0, 1
     11    LD   (R0 + 1), R1
     12    ;LD   (R0), (R1)
     13    LD   D1, R0, 1
     14    LD   D1, R0, R1
     15
     16    JP   Start
     17    NOP
     18    NOP
     19    NOP
     20
     21    VAR  DeviceConsole 1
     22    VAR  ConsoleReadChar 0
     23    VAR  ConsoleWriteChar 0
     24
     25    VAR  DeviceKeyboard 2
     26
     27    VAR  DeviceScreen 3
     28    VAR  ScreenGetWidth 0
     29    VAR  ScreenGetHeight 1
     30    VAR  ScreenSetAddr 0
     31    VAR  ScreenWrite 1
     32
     33Start:
     34    LD   R0, 64
     35    LD   R1, 8
     36    OUT  (R1), R0
     37    LD   R1, 0
     38    LD   R2, 10
     39    OUT  (R1), R0
    940Loop:
    10   INC A
    11   DEC C
    12   JNZ C, Loop
    13   HALT
     41    INC  R0
     42    DEC  R2
     43    JNZ  R2, Loop
     44    HALT
    1445
    1546WriteStr:
     47    ; R0 - string address
     48    ; R1 - string length
    1649    PUSH R2
    1750    PUSH R3
    1851    PUSH R4
    19     SET  R3, ConsoleWriteChar
    20     SET  R4, DeviceConsole
     52    LD   R3, ConsoleWriteChar
    2153WriteStrLoop:
    2254    LD   R2, (R0)
    23     OUT  (R4: R3), R2
     55    OUT  (R3), R2
    2456    INC  R0
    2557    DEC  R1
     
    3567    PUSH R2
    3668    PUSH R3
    37     SET  R0, ScreenSetAddr
    38     SET  R1, 0
    39     SET  R3, DeviceScreen
    40     OUT  (R3: R0), R1
    41     SET  R0, ScreenGetWidth
    42     IN   R1, (R3: R0)
    43     SET  R0, ScreenGetHeight
    44     IN   R2, (R3: R0)
     69    LD   R0, ScreenSetAddr
     70    LD   R1, 0
     71    OUT  (R0), R1
     72    LD   R0, ScreenGetWidth
     73    IN   R1, (R0)
     74    LD   R0, ScreenGetHeight
     75    IN   R2, (R0)
    4576    MUL  R2, R1
    46     SET  R0, ScreenWrite
    47     SET  R1, 120
     77    LD   R0, ScreenWrite
     78    LD   R1, 120
    4879ClearScreenLoop:
    49     OUT  (R3: R0), R1
     80    OUT  (R0), R1
    5081    DEC  R2
    5182    JNZ  R2, ClearScreenLoop
     
    5889Hello:
    5990    DB   'Hello friend'
     91
     92KeyInterrupt:
     93    ; Echo key
     94    PUSH R3
     95    PUSH R2
     96    PUSH R4
     97    LD   R3, ConsoleReadChar
     98    IN   R2, (R3)
     99    LD   R3, ConsoleWriteChar
     100    OUT  (R3), R2
     101    POP  R4
     102    POP  R2
     103    POP  R3
     104    RET
     105
     106Test:
     107    LD   R0, (R1 + 1)
     108    LD   (R1 + 12), R2
Note: See TracChangeset for help on using the changeset viewer.