LoginSignup
0
0

More than 5 years have passed since last update.

H26年秋期 基本情報技術者 午後問12 解説 設問3

Last updated at Posted at 2016-03-26
MAIN   START
       LD       GR2,=0        ; 多数字列のカウンタを初期化
LOOP3  IN       BUF,ILEN
       LD       GR0,ILEN
       JMI      EOF
       LD       GR3,=0        ; 配列に格納する内容を初期化
       LAD      GR4,BUF
LOOP4  LD       GR5,0,GR4     ; GR5←数字
       AND      GR5,=#000F    ; 数字の数値化
       SLL      GR3,4         ; 処理済の内容を桁上げ
       OR       GR3,GR5       ; 空いた右端4ビットに数値を格納
       ADDA     GR4,=1
       SUBA     GR0,=1
       JNZ      LOOP4
       ST       GR3,ARRAY,GR2 ; 2 進化 10 進数にした数字列を格納
       ADDA     GR2,=1
       JUMP     LOOP3
EOF    LAD      GR1,ARRAY
       CALL     SORT
       LD       GR4,=' '      ; 空白文字を設定
LOOP5  LD       GR0,0,GR1
       LD       GR5,=3        ; ループカウンタを設定
LOOP6  LD       GR3,GR0
       AND      GR3,=#000F
       OR       GR3,=#0030    ; 数値の数字化
       ST       GR3,BUF,GR5   ; バッファに数字を設定
       SUBA     GR5,=1
       JMI      WRITE
       SRL      GR0,4
       JNZ      LOOP6
LOOP7  ST       GR4,BUF,GR5   ; バッファに空白を設定
       SUBA     GR5,=1
       JMI      WRITE
       JUMP     LOOP7
WRITE  OUT      BUF,OLEN
       LAD      GR1,1,GR1
       SUBA     GR2,=1
       JNZ      LOOP5
       RET
BUF    DS       256
ILEN   DS       1
OLEN   DC       4
ARRAY  DS       100
       END

SORT    START
        RPUSH
        SUBA   GR2,=1         ; ループのカウンタ 1 を設定
LOOP1   LD     GR3,GR2        ; ループのカウンタ 2 を設定
        LD     GR4,GR1        ; GR4←比較する要素のアドレス
LOOP2   LD     GR5,0,GR4
        CPL    GR5,1,GR4      ; 二つの要素を比較
        JMI    CONT
        LD     GR6,1,GR4      ; 二つの要素を入れ替え
        ST     GR5,1,GR4
        ST     GR6,0,GR4
CONT    ADDA   GR4,=1
        SUBA   GR3,=1
        JPL    LOOP2
        SUBA   GR2,=1
        JPL    LOOP1
        RPOP
        RET
        END
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0