CASL U - 文字列の比較
 前へ 目次へ 次へ

文字列の比較

 2つの文字列を比較して同じかどうかを調べ、比較した結果は、フラグレジスタの値として設定する副プログラムHIKAKUを作成する。
 基本的には、前ページ「2つのデータテーブルから共通データを取り出す」と同じで、先頭から1文字ずつ比較していくことになる。

 2つの文字列はラベルMOJIAとMOJIBから順に1文字ずつ格納される。各文字は文字コードとして次の図のようにメモリに格納される。2つの文字列は同じ長さとする。

MOJIA
0043 0041 0053 004C 0032
C A S L 2

 2つの文字列の先頭アドレスとその文字長のデータは次のようにテーブルとして格納しその先頭アドレスをGR1に格納して副プログラムに渡す。副プログラムでは、先頭から1文字ずつ比較していき、一致しなければそこで処理を中断して呼び出し側に戻る。

(GR1)
(GR1)+1
(GR1)+2
MOJIAの先頭アドレス
MOJIBの先頭アドレス
文字列の長さ
MAIN     START
         LAD     GR1, ADDR
         CALL    HIKAKU
         JZE     ONAJI
         OUT     NO, LNO
         JUMP    OWARI
ONAJI    OUT     OK, LOK
OWARI    RET
ADDR     DC      MOJIA, MOJIB, 9
MOJIA    DC      'MOJIRETSU'
MOJIB    DC      'MOJIRETSU'
OK       DC      'ONAJI'
LOK      DC      5
NO       DC      'CHIGAU'
LNO      DC      6
         END
HIKAKU   START
         RPUSH
         LD      GR2, 1, GR1   ;MOJIBの先頭アドレス.
         LD      GR3, 2, GR1   ;文字列の長さ.
         LD      GR1, 0, GR1   ;MOJIAの先頭アドレス.
LOOP     LD      GR0, 0, GR1   ;MOJIAの文字.
         CPL     GR0, 0, GR2   ;MOJIAとMOJIBの文字を比較.
         JNZ     FUICCHI       ;不一致.
         LAD     GR1, 1, GR1   ;MOJIAのアドレス1加算.
         LAD     GR2, 1, GR2   ;MOJIBのアドレス1加算.
         SUBA    GR3, =1       ;文字列長1減算.
         JNZ     LOOP          ;繰り返し.
FUICCHI  RPOP
         RET
         END


課題1 上の問題と同じ副プログラムを使って、2つの文字列を入力装置から入力できるように主プログラムを作成する。
 条件は上の問題と同じである。入力できる文字数は1〜256文字とする。


メインプログラムのみを示す。


 前へ 目次へ 次へ
 CASL U Copyright © 2003  Hiroshi Masuda

 

 

inserted by FC2 system