8051 Assembly Code Formatting 汇编代码格式化问题

2020-01-21 21:37发布

寻找好用的汇编代码格式化工具,有tx用过吗?
如:
  1. ;-------------------------------------------------
  2.   ;|                                               |
  3.   ;|      Before 8051 Assembly Code Formatting     |
  4.   ;|                                               |
  5.   ;-------------------------------------------------

  6.       $nomod51
  7.        $include (80c515.mcu)
  8.      $include (mon_sub.inc)

  9.    ; voorbeeld programma

  10.            homeCur equ 02h
  11.   shLfCur                 equ 10h
  12.    shRtCur     equ 14h

  13.   start:call  initlcd
  14.   call cursorof
  15.     call          setbarchars
  16.   bar:   call  cursorup
  17.        mov a,#20h
  18.   call  shwLCDbar
  19.     mov   dptr,#2000
  20.         call ltime
  21.    call  cursorup
  22.                     mov   a,#80h
  23.           call  shwLCDbar
  24.       mov   dptr,#2000
  25.     call ltime
  26.       call  cursorup
  27.     mov   a,#0ffh
  28.   call  shwLCDbar
  29.    mov   dptr,#2000
  30.                 call ltime
  31.   jmp   bar

  32.   ; ----------------------------------------------------------
  33.   ; subroutine shwLCDbar - displays een analoge-bar op regel 2
  34.   ; the lengte van de bar is proportioneel met de waarde in de
  35.   ; accumelator.
  36.   ; ----------------------------------------------------------

  37.    push  acc        ; bewaar de binary waarde
  38.     mov    a,#0c0h   ; zet de cursor op begin regel 2
  39.       call   strcom
  40.   mov   a, #2      ; row 2
  41.     mov b, #0      ; locatie 0
  42.       lcall placeCur4  ; place cursor at line 1, position 13

  43.    pop   acc      ; herstel de binary waarde
  44.   mov   b, #LCDwidth ; volle schaal met karakters
  45.     mul      ab ; b heeft de integer
  46.     mov r4, b ; save integer in r4
  47.    mov r6,    b     ; character teller
  48.   mov     r5,   a         ; save fraction in r5

  49.     mov a, r4      ; mov integer part
  50.       mov    r0, #5     ; volle karakter breedte met 5 kolommen
  51.   sBar1:
  52.   jz sBar2 ; geen vol karakter als r4=0
  53.   push acc        ; bewaar teller
  54.    mov    a,r0
  55.       lcall lcddata ; display character
  56.     pop   acc     ; recall count
  57.   dec   acc  ; update count
  58.     sjmp  sBar1         ; repeat
  59.   sBar2:
  60.   mov  a, #LCDwidth
  61.   clr c          ; clear carry flag
  62.     subb a, r6        ; spaces to write
  63.   jz    sBar5  ; skip if 0
  64.     mov   r6, a  ; save in a
  65.    mov   r0, #' ' ; the space character
  66.   sBar3:
  67.   mov a,r0
  68.     lcall lcddata ; display it
  69.    djnz r6,      sBar4 ; repeat
  70.   sBar4:
  71.       ret
  72.     end
复制代码
想要的效果:
  1. ;-------------------------------------------------
  2.   ;|                                               |
  3.   ;|      After 8051 Assembly Code Formatting      |
  4.   ;|                                               |
  5.   ;-------------------------------------------------

  6.   $nomod51
  7.   $include (80c515.mcu)
  8.   $include (mon_sub.inc)

  9.   ; voorbeeld programma

  10.              homeCur equ 02h
  11.              shLfCur equ 10h
  12.              shRtCur equ 14h

  13.   start:     call    initlcd
  14.              call    cursorof
  15.              call    setbarchars
  16.   bar:       call    cursorup
  17.              mov     A, #20h
  18.              call    shwLCDbar
  19.              mov     DPTR, #2000
  20.              call    ltime
  21.              call    cursorup
  22.              mov     A, #80h
  23.              call    shwLCDbar
  24.              mov     DPTR, #2000
  25.              call    ltime
  26.              call    cursorup
  27.              mov     A, #0ffh
  28.              call    shwLCDbar
  29.              mov     DPTR, #2000
  30.              call    ltime
  31.              jmp     bar

  32.   ; ----------------------------------------------------------
  33.   ; subroutine shwLCDbar - displays een analoge-bar op regel 2
  34.   ; the lengte van de bar is proportioneel met de waarde in de
  35.   ; accumelator.
  36.   ; ----------------------------------------------------------

  37.              push    ACC          ; bewaar de binary waarde
  38.              mov     A, #0c0h     ; zet de cursor op begin regel 2
  39.              call    strcom
  40.              mov     A, #2        ; row 2
  41.              mov     B, #0        ; locatie 0
  42.              lcall   placeCur4    ; place cursor at line 1, position 13

  43.              pop     ACC          ; herstel de binary waarde
  44.              mov     B, #LCDwidth ; volle schaal met karakters
  45.              mul     AB           ; b heeft de integer
  46.              mov     R4, B        ; save integer in r4
  47.              mov     R6, B        ; character teller
  48.              mov     R5, A        ; save fraction in r5

  49.              mov     A, R4        ; mov integer part
  50.              mov     R0, #5       ; volle karakter breedte met 5 kolommen
  51.   sBar1:
  52.              jz      sBar2        ; geen vol karakter als r4=0
  53.              push    ACC          ; bewaar teller
  54.              mov     A, R0
  55.              lcall   lcddata      ; display character
  56.              pop     ACC          ; recall count
  57.              dec     ACC          ; update count
  58.              sjmp    sBar1        ; repeat
  59.   sBar2:
  60.              mov     A, #LCDwidth
  61.              clr     C            ; clear carry flag
  62.              subb    A, R6        ; spaces to write
  63.              jz      sBar5        ; skip if 0
  64.              mov     R6, A        ; save in a
  65.              mov     R0, #' '     ; the space character
  66.   sBar3:
  67.              mov     A, R0
  68.              lcall   lcddata      ; display it
  69.              djnz    R6, sBar4    ; repeat
  70.   sBar4:
  71.              ret

  72.   end
复制代码
0条回答

一周热门 更多>