ck1132003 发表于 2014-12-4 14:16:15

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

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

      $nomod51
       $include (80c515.mcu)
   $include (mon_sub.inc)

   ; voorbeeld programma

         homeCur equ 02h
shLfCur               equ 10h
   shRtCur   equ 14h

start:callinitlcd
call cursorof
    call          setbarchars
bar:   callcursorup
       mov a,#20h
callshwLCDbar
    mov   dptr,#2000
      call ltime
   callcursorup
                  mov   a,#80h
          callshwLCDbar
      mov   dptr,#2000
    call ltime
      callcursorup
    mov   a,#0ffh
callshwLCDbar
   mov   dptr,#2000
                call ltime
jmp   bar

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

   pushacc      ; bewaar de binary waarde
    mov    a,#0c0h   ; zet de cursor op begin regel 2
      call   strcom
mov   a, #2      ; row 2
    mov b, #0      ; locatie 0
      lcall placeCur4; place cursor at line 1, position 13

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

    mov a, r4      ; mov integer part
      mov    r0, #5   ; volle karakter breedte met 5 kolommen
sBar1:
jz sBar2 ; geen vol karakter als r4=0
push acc      ; bewaar teller
   mov    a,r0
      lcall lcddata ; display character
    pop   acc   ; recall count
dec   acc; update count
    sjmpsBar1         ; repeat
sBar2:
mova, #LCDwidth
clr c          ; clear carry flag
    subb a, r6      ; spaces to write
jz    sBar5; skip if 0
    mov   r6, a; save in a
   mov   r0, #' ' ; the space character
sBar3:
mov a,r0
    lcall lcddata ; display it
   djnz r6,      sBar4 ; repeat
sBar4:
      ret
    end
想要的效果:
;-------------------------------------------------
;|                                             |
;|      After 8051 Assembly Code Formatting      |
;|                                             |
;-------------------------------------------------

$nomod51
$include (80c515.mcu)
$include (mon_sub.inc)

; voorbeeld programma

             homeCur equ 02h
             shLfCur equ 10h
             shRtCur equ 14h

start:   call    initlcd
             call    cursorof
             call    setbarchars
bar:       call    cursorup
             mov   A, #20h
             call    shwLCDbar
             mov   DPTR, #2000
             call    ltime
             call    cursorup
             mov   A, #80h
             call    shwLCDbar
             mov   DPTR, #2000
             call    ltime
             call    cursorup
             mov   A, #0ffh
             call    shwLCDbar
             mov   DPTR, #2000
             call    ltime
             jmp   bar

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

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

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

             mov   A, R4      ; mov integer part
             mov   R0, #5       ; volle karakter breedte met 5 kolommen
sBar1:
             jz      sBar2      ; geen vol karakter als r4=0
             push    ACC          ; bewaar teller
             mov   A, R0
             lcall   lcddata      ; display character
             pop   ACC          ; recall count
             dec   ACC          ; update count
             sjmp    sBar1      ; repeat
sBar2:
             mov   A, #LCDwidth
             clr   C            ; clear carry flag
             subb    A, R6      ; spaces to write
             jz      sBar5      ; skip if 0
             mov   R6, A      ; save in a
             mov   R0, #' '   ; the space character
sBar3:
             mov   A, R0
             lcall   lcddata      ; display it
             djnz    R6, sBar4    ; repeat
sBar4:
             ret

end
页: [1]
查看完整版本: 8051 Assembly Code Formatting 汇编代码格式化问题