RosettaCodeData/Task/Leap-year/360-Assembly/leap-year.360
2019-09-12 10:33:56 -07:00

18 lines
835 B
Text

LPCK CSECT
USING LPCK,15
STM 0,12,20(13) STORE CALLER REGS
LM 1,2,0(1) R1 -> CCYY, R2 -> DOUBLE-WORD WORK AREA
PACK 0(8,2),0(4,1) PACK CCYY INTO WORK AREA
CVB 0,0(2) CONVERT TO BINARY (R0 = CCYY)
SRDL 0,32 R0|R1 = CCYY
LA 2,100 R2 = 100
DR 0,2 DIVIDE CCYY BY 100: R0 = YY, R1 = CC
LTR 0,0 YY = 0? IF CCYY DIV BY 100, LY IFF DIV BY 400
BZ A YES: R0|R1 = CC; CCYY DIV BY 100, TEST CC
SRDL 0,32 NO: R0|R1 = YY; CCYY NOT DIV BY 100, TEST YY
A LA 2,4 DIVISOR = 4; DIVIDEND = YY, OR DIV BY 100 CC
DR 0,2 DIVIDE BY 4: R0 = REMAINDER, R1 = QUOTIENT
LR 15,0 LOAD REMAINDER: IF 0, THEN LEAP YEAR
LM 0,12,20(13) RESTORE REGS
BR 14
END