SourceFormatX

製品概要

機能一覧

なぜ使用

使用例

IDE への統合

スクリーンショット

よくあるご質問

機能履歴

受賞賞一覧

ユーザーコメント

ライセンス

CodeToHtml

8051アセンブリ言語のソースコード整形例



SourceFormatXソースコード整形ツールの重要な特徴

SourceFormatX は優れた構文解析エンジンを元に作られています。ですのであらゆるスタイルで書かれたソースコードを美しく整形することができます。以下の例のようなめちゃくちゃなコードでさえも、整形することが可能です。

C/C++ Java C# Delphi (Pascal)
PHP JSP ASP HTML Components
Visual Basic VB.NET VBScript JavaScript
80x86 ASM 8051 ASM CORBA IDL

これは極端な例ですが。SourceFormatXに搭載されている強力な 8051アセンブリ言語 (Assembly) のパーサーエンジンの実力を感じて頂けるかと思います。

  ;----- 8051アセンブリ言語のソースコード整形 -----

      $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
  

  ;----- 8051アセンブリ言語のソースコード整形 -----

  $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
  

  再び手動で8051アセンブリ言語のソースコードを整形するために時を浪費しないで下さい! SourceFormatX体験版の無料ダウンロード!