8051 Assembly Code Formatting 汇编代码格式化问题
2020-01-21 21:37发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
寻找好用的汇编代码格式化工具,有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: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
复制代码
想要的效果:
- ;-------------------------------------------------
- ;| |
- ;| 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
复制代码
一周热门 更多>