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]