搜索
bottom↓
回复: 0

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

[复制链接]

出0入0汤圆

发表于 2014-12-4 14:16:15 | 显示全部楼层 |阅读模式
寻找好用的汇编代码格式化工具,有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
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 10:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表