Skip to content

Instantly share code, notes, and snippets.

@maehrm
Created May 3, 2018 05:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maehrm/d855e1770fa53d3253cd2d403eac8f85 to your computer and use it in GitHub Desktop.
Save maehrm/d855e1770fa53d3253cd2d403eac8f85 to your computer and use it in GitHub Desktop.
PRO2 START
LAD GR1,DATA
LAD GR2,CTBL
CALL GETWD
RET
DATA DC ' 1234 56789 9876 .'
CTBL DS 4
END
GETWD START
RPUSH
LD GR6,GR1
LD GR7,GR2
LD GR3,=-1 ; 数字列の処理状態フラグの初期化
LAD GR6,-1,GR6
LP LAD GR6,1,GR6
LD GR4,0,GR6 ; 1文字の取出し
CPL GR4,='.'
JZE FIN
CPL GR4,=' '
JNZ NUM
CALL SETWD
JUMP LP
NUM LD GR3,GR3 ; 数字列の処理中?
JZE LP
LD GR3,=0 ; 次の数字列の処理開始
LD GR1,GR6 ; 数字列の先頭アドレスを退避
JUMP LP
FIN CALL SETWD
LD GR2,=-1
ST GR2,0,GR7 ; 数値の終わりを示す印を格納
RPOP
RET
SETWD LD GR3,GR3
JNZ FIN2
LD GR2,GR6
SUBL GR2,GR1
CALL DTOB ; 数字列を数値に変換
ST GR0,0,GR7
LD GR3,=-1 ; 数字列の処理中状態を解除
LAD GR7,1,GR7
FIN2 RET
END
DTOB START
RPUSH
ADDL GR2,GR1
LAD GR0,0 ; 戻り値の初期化
LP CPL GR1,GR2 ; 変換終了?
JZE FIN
LD GR4,0,GR1 ; 数字1文字の取り出し
SUBL GR4,='0' ; 1桁を数値に変換
SLL GR0,1 ; GR0を10倍してGR4を加算
LD GR5,GR0
SLL GR5,2
ADDL GR0,GR5
ADDL GR0,GR4
LAD GR1,1,GR1
JUMP LP
FIN RPOP
RET
END
@maehrm
Copy link
Author

maehrm commented May 3, 2018

平成30年度春季基本情報午後問12 - Mae向きなブログ http://maehrm.hatenablog.com/entry/2018/05/03/154307

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment