平成30年度秋期のアセンブラプログラム

平成30年度秋期のアセンブラプログラム

プログラム1


  • プログラム名:DAYOFFST
  • IN  GR2:指定年月日格納アドレス
  • OUT GR0:経過日数

プログラム2





  • プログラム名:LEAPYEAR
  • IN  GR2:指定年
  • OUT GR0:0 平年、1 うるう年

プログラム3





  • プログラム名:DIVISIBL
  • IN  GR2 : 被除数、GR3 : 除数
  • OUT GR0 : 0 割切れない、1 割切れる

DAYOFFST START
RPUSH
LD GR5,0,GR2 ; GR5 : 年
LD GR3,1,GR2 ; GR3 : 月
LD GR1,2,GR2 ; GR1 : 日
SUBL GR1,=1 ; GR1で日数をカウント
[ a ]
ADDL GR1,-1,GR4 ; 1月1日からの日数(平年)を求める
CPA GR3,=3 ; 月が3月以降のときうるう年を考慮
JMI SKIP
LD GR2,GR5
CALL LEAPYEAR
ADDL GR1,GR0
SKIP LD GR2,=1970 ; 1970年から(年-1)年までの間(ただし,
LOOP CPA GR2,GR5 ; 年>1970),1年の日数を加算
[ b ]
CALL LEAPYEAR
ADDL GR0,=365
ADDL GR1,GR0
ADDA GR2,=1
JUMP LOOP
BREAK LD GR0,GR1
EXIT RPOP
RET
; ACCMDAYSは,平年の各月1日の1月1日からの日数(1月1日は0日目)
ACCMDAYS DC 0,31,59,90,120,151,181,212,243,273,304,334
END

LEAPYEAR START
RPUSH
SUBA GR0,GR0
LD GR3,GR2
AND GR3,=3
[  c  ]
LD GR3,=100
CALL DIVISIBL
[  d  ]
JNZ FIN
LD GR3,=400
CALL DIVISIBL
FIN RPOP
RET
END

DIVISIBL START ; 入力    GR2 : 被除数、 GR3 : 除数
RPUSH
SUBA GR0,GR0 ; 復帰値 0:割切れない
DLOOP SUBA GR2,GR3
JPL DLOOP
JMI DFIN
LD GR0,=1 ; 復帰値 1:割切れる
DFIN RPOP
RET ; 出力    GR0 : 0:割切れない、1:割切れる
END

0 件のコメント:

コメントを投稿

基本情報技術者試験 アセンブラ(CASL) 原稿 20210529

  基本情報技術者試験 アセンブラ(CASL) 簡単に5割 平成21年春期,平成21年秋期 平成21春期 平成21秋期 平成22春期 平成22秋期 平成21春期 概要 解き方 設問1-a 設問1-b 設問1-c 設問2-d...