1: アルデバラン(北海道) [US] 2026/05/21(木) 19:26:32 ;--------------------------------------------------- ; 16bit 線形合同法 (X = X * 5 + 1) ; 入力: なし ; 出力: HLレジスタ = 16bit乱数 (下位8bitのLレジスタを抽選に使用) ;--------------------------------------------------- NEXT_LCG: LD HL, (RAND_SEED_16) ; HL = 前回値 X LD D, H LD E, L ; DE = X ; HL = X * 5 を乗算命令なしで計算 (X * 4 + X) ADD HL, HL ; HL = X * 2 ADD HL, HL ; HL = X * 4 ADD HL, DE ; HL = X * 4 + X (つまり X * 5) ; + 1 を行う INC HL ; HL = X * 5 + 1 LD (RAND_SEED_16), HL ; 次回のために保存 LD A, L ; 下位8bitをAレジスタに取り出す RET…