int main(void) { //日付の開始日、終了日の変数 int yearstart,yeargoal,yeardif; //開始年、終了年、終了年-開始年 int monthstart,monthgoal; //開始月、終了月 int daystart,daygoal; //開始日付け、終了日付け int uruFlg; //うるう年の判定フラグ int count=0; //うるう年の回数 //月の配列。その年の1月1日からの日数 int tukihi[]={0,0,31,59,90,120,151,181,212,243,273,304,334};
//曜日を求める int youbihantei(int nanyou){ return nanyou%7; } int main(void) {
//日付の開始日、終了日の変数 int yearstart,yeargoal,yeardif; //開始年、終了年、終了年-開始年 int monthstart,monthgoal; //開始月、終了月 int daystart,daygoal; //開始日付け、終了日付け int uruFlg; //うるう年の判定フラグ int count=0; //うるう年の回数 int week; //曜日を表す配列の添え字
//月の配列 int tukihi[]={0,0,31,59,90,120,151,181,212,243,273,304,334};
;平成29春64ビットの加算とそれを使った乗算 ;メインプログラム MAIN START RPUSH LAD GR1,A ;掛け算に使う数Aの先頭アドレス LAD GR2,B ;掛け算に使う数Bの先頭アドレス LAD GR3,C ;A×Bの結果領域 CALL MUL32 RPOP RET A DC #0002 DC #0003 B DC #0004 DC #0005 C DS 4 TEMP DS 4 ;演算結果を見やすくする為にメインプログラムへ移動
;プログラム2 MUL32 RPUSH LAD GR7,TEMP ;初期化 LD GR0,0,GR1 ;GR1から始まる2語の領域の値を ST GR0,2,GR7 ;TEMPから始まる4語の領域のうち LD GR0,1,GR1 ;下位2語に格納 ST GR0,3,GR7 LD GR0,=0 ST GR0,0,GR7 ;TEMPから始まる4語の領域のうちの ST GR0,1,GR7 ;上位2語に0を格納 ST GR0,0,GR3 ;GR3から始まる4語の領域に0を格納 ST GR0,1,GR3 ST GR0,2,GR3 ST GR0,3,GR3 LD GR5,=0 ;ループカウンタ LD GR4,GR2 ;GR2の値をGR4に退避 LOOP2 LD GR6,GR5 SUBL GR6,=16 ;数Bの上位語か下位語か判断 JMI LOWORD ;空欄「e」32ビットのうちマイナスになるのは下位語 LD GR0,0,GR2 ;上位語の場合の処理 SRL GR0,0,GR6 JUMP TESTBIT LOWORD LD GR0,1,GR2 ;下位語の場合の処理 SRL GR0,0,GR5 TESTBIT AND GR0,=#0001 ;最下位ビットが0か1か JZE ELOOP LD GR1,GR3 ;ADD64を呼ぶ準備で乗数の末尾が1の時 LAD GR2,TEMP CALL ADD64 ELOOP CPL GR5,=31 JZE EXIT2 ADDL GR5,=1 ;カウントアップ LAD GR1,TEMP ;ADD64を呼ぶ準備 LAD GR2,TEMP ;空欄「f」乗数の末尾が1の時も0の時も行う CALL ADD64 LD GR2,GR4 ;GR4に退避した値をGR2に復帰 JUMP LOOP2 EXIT2 RPOP RET