CHRHEX   START
BEGIN    IN      INBUF,LENG     ;入力
         LD      GR1,LENG
         CPA     GR1,=40        ;誤り判定
         JPL     ERROR
         CPA     GR1,=0         ;終了判定
         [    ( a )    ]
         LAD     GR1,0          ;入力領域インデックス
         LAD     GR2,0          ;出力領域インデックス
LOOP     LD      GR3,INBUF,GR1
         SRL     GR3,4          ;上位4ビット取り出し
         CALL    CONVST
         [    ( b )    ]
         AND     GR3,=#000F     ;下位4ビット取り出し
         CALL    CONVST
         LAD     GR1,1,GR1
         CPA     GR1,LENG       ;全文字処理済みか?
         JMI     LOOP
         [    ( c )    ]
         OUT     OUTBUF,LENG    ;変換結果の出力
         JUMP    BEGIN
ERROR    OUT     MES,C13        ;エラーメッセージ
         JUMP    BEGIN
FIN      RET
CONVST   CPA     GR3,=10
         [    ( d )    ]
         LAD     GR3,7,GR3      ;数値から文字へ変換
SKIP     ADDA    GR3,=#0030
         ST      GR3,OUTBUF,GR2
         LAD     GR2,1,GR2
         RET
INBUF    DS      256
LENG     DS      1
C13      DC      13
OUTBUF   DS      80
MES      DC      '***TOO LONG!!'
         END