; Xの2語とYの1語の積をAの2語に格納し、表示 MAIN START LAD GR1,X LD GR2,Y LAD GR3,A CALL MULS LAD GR2,A LD GR1,0,GR2 CALL OUTI LD GR1,1,GR2 CALL OUTI RET X DC 1000,10000 Y DC 8 A DS 2 END MULS START ; 32ビット×16ビット→32ビット RPUSH LAD GR6,0 ; 積 上位語の初期化 LAD GR7,0 ; 積 下位語の初期化 LD GR4,0,GR1 ; 被乗数 上位語の取出し LD GR5,1,GR1 ; 被乗数 下位語の取出し LP SRL GR2,1 ; 乗数を1ビット右にシフト JOV ADD32 JZE FIN JUMP NEXT ; 加算処理をスキップ ADD32 ADDL GR6,GR4 ; 32ビット+32ビット→32ビット ADDL GR7,GR5 JOV ADJ1 JUMP NEXT ADJ1 ADDL GR6,=1 ; けた上げ処理 NEXT SLL GR4,1 ; 被乗数(32ビット)を1ビット左にシフト SLL GR5,1 JOV ADJ2 JUMP LP ADJ2 OR GR4,=1 JUMP LP FIN ST GR6,0,GR3 ; 乗算結果の格納 ST GR7,1,GR3 RPOP RET END