diff options
| -rw-r--r-- | assembler/main.s | 20 | ||||
| -rw-r--r-- | assembler/uart.s | 74 | 
2 files changed, 47 insertions, 47 deletions
| diff --git a/assembler/main.s b/assembler/main.s index a9fd109..983437d 100644 --- a/assembler/main.s +++ b/assembler/main.s @@ -16,13 +16,15 @@ main:       LDR     R0, =0x20000000         // SRAM_BASE              MOVS    R0, '\r                 // SEND CR              BL      uart_send              MOV     R1, R11                 // GET ADDRESS -            LSRS    R1, 16                  // SHIFT OUT LOWER HALFWORD +            LSRS    R1, 12                  // SHIFT OUT LOWER 12 BITS              MOVS    R0, R1                  // SAVE IN R0 -            LSLS    R1, 16                  // SHIFT BACK +            LSLS    R1, 12                  // SHIFT BACK              MOV     R11, R1                 // SAVE ALTERRED ADDRESS -            MOVS    R1, 4                   // SEND HEX WITH WIDTH 4 -            BL      send_hex -            BL      get_hex                 // GET HEX INPUT FOR OFFSET +            MOVS    R1, 20                  // SEND OCTAL WITH WIDTH 20 +            BL      send_oct +            BL      get_oct                 // GET OCTAL INPUT FOR OFFSET +            MOVS    R0, 0x1 +            BICS    R4, R0              MOV     R0, R11                 // ADD OFFSET TO ADDRESS              ADDS    R0, R4              B       0b @@ -44,14 +46,14 @@ main:       LDR     R0, =0x20000000         // SRAM_BASE  PROMPT:     PUSH    {LR}              MOV     R0, R11                 // CURRENT ADDRESS -            MOVS    R1, 8 -            BL      send_hex +            MOVS    R1, 32 +            BL      send_oct              MOVS    R0, '                   // SPACE              BL      uart_send              MOV     R1, R11                 // CURRENT CONTENTS              LDRH    R0, [R1] -            MOVS    R1, 4 -            BL      send_hex +            MOVS    R1, 16 +            BL      send_oct              MOVS    R0, '                   // SPACE              BL      uart_send              POP     {PC}                    // RETURN diff --git a/assembler/uart.s b/assembler/uart.s index 5712268..203c3af 100644 --- a/assembler/uart.s +++ b/assembler/uart.s @@ -9,14 +9,14 @@  .type uart_send, %function  .type uart_recv, %function  .type get_char, %function -.type send_hex, %function -.type get_hex, %function +.type send_oct, %function +.type get_oct, %function  .global uart_send  .global uart_recv  .global get_char -.global send_hex -.global get_hex +.global send_oct +.global get_oct  uart_send:  LDR     R1, =UART0_BASE         // 0x0000 0x4917              MOVS    R3, 0b1 << 5            // 0x0002 0x2320  ; TX FIFO FULL @@ -46,46 +46,44 @@ get_char:   PUSH    {LR}                    // 0x001C 0xB500              POP     {R1}  3:          CMP     R0, R8                  // 0x0022 0x4540              POP     {PC}                    // 0x0024 0xBD00 -send_hex:   PUSH    {LR}          // 000350 132400 B500 -            MOVS    R4, R0        // 000352 000004 0004 -            MOVS    R5, R1        // 000354 000015 000D -            LSLS    R1, 0x2       // 000356 000211 0049 -            RORS    R4, R1        // 000360 040714 41CC -            MOVS    R0, 0x30      // 000362 020060 2030 ASCII 0 -            BL      uart_send     // 000364 043710  UARTTX -            MOVS    R0, 0x78      // 000366 020170  ASCII x -            BL      uart_send     // 000370 043710  UARTTX -0:          MOVS    R0, 0x1C      // 000372 020034 -            RORS    R4, R0        // 000374 040704 -            MOVS    R0, 0x0F      // 000376 020017 -            ANDS    R0, R4        // 000400 040040 -            CMP     R0, 0x9       // 000402 024011 -            BHI     1f            // 000404 154001 -            ADDS    R0, 0x30      // 000406 030060  ASCII 0 -            B       2f            // 000410 160000 -1:          ADDS    R0, 0x37      // 000412 030067  ASCII A MINUS 10 -2:          BL      uart_send     // 000414 043710  UARTTX -            SUBS    R5, 1         // 000416 036401 -            BNE     0b            // 000420 150763 -            POP     {PC}          // 000422 136400 -get_hex:    PUSH    {LR}          // 000224 132400 +send_oct:   PUSH    {LR} +            MOVS    R4, R0 +            MOVS    R0, R1 +            MOVS    R1, 32 +            SUBS    R1, R0 +            LSLS    R4, R1 +            MOVS    R5, 0 +loop1:      CMP     R0, 3 +            BLO     done +            SUBS    R0, 3 +            ADDS    R5, 1 +            B       loop1 +done:       TST     R0, R0 +            BEQ     loop2 +            RSBS    R0, 0 +            ADDS    R0, 32 +            RORS    R4, R0 +            ADDS    R5, 1 +loop2:      MOVS    R0, 0x07 +            ANDS    R0, R4 +            ADDS    R0, 0x30 +            BL      uart_send +            MOVS    R0, 0x1D +            RORS    R4, R0 +            SUBS    R5, 1 +            BNE     loop2 +            POP     {PC} +get_oct:    PUSH    {LR}          // 000224 132400              MOVS    R4, 0x0       // 000226 022000              MOVS    R5, 0x4       // 000230 022404  10:         BL      uart_recv     // 000232 043700  HEX LOOP, UARTRX              CMP     R0, 0x30      // 000234 024060  ASCII 0              BLO     10b           // 000236 151774 -            CMP     R0, 0x39      // 000240 024071  ASCII 9 -            BLS     20f           // 000242 154406 -            CMP     R0, 0x41      // 000244 024101  ASCII A -            BLO     10b           // 000246 151770 -            CMP     R0, 0x46      // 000250 024106  ASCII F -            BHI     10b           // 000252 154366 -            BL      uart_send     // 000254 043710  UARTTX -            SUBS    R0, 0x37      // 000256 034067  ASCII A MINUS 10 -            B       30f           // 000260 160001 -20:         BL      uart_send     // 000262 043710  UARTTX +            CMP     R0, 0x37      // 000240 024071  ASCII 7 +            BHI     10b           // 000242 154406 +            BL      uart_send     // 000262 043710  UARTTX              SUBS    R0, 0x30      // 000264 034060  ASCII 0 -30:         LSLS    R4, 0x4       // 000266 000444 +30:         LSLS    R4, 0x3       // 000266 000444              ADDS    R4, R0        // 000270 014044              SUBS    R5, 0x1       // 000272 036401              BNE     10b           // 000274 150755 | 
