MAIN START
LD GR0,A ; GR0 ← A
LAD GR1,B ; GR1 ← Bのアドレス
LD GR2,=10 ; GR2 ← n
LAD GR3,C ; GR3 ← Cのアドレス
CALL BITINS
RET
A DC #5E96
B DC #EF18
C DS 2
BITINS START
RPUSH
LD GR6,=16
SUBA GR6,GR2 ; GR6 ← シフト数
LD GR1,0,GR1 ; GR1 ← ビット列 B
LD GR4,GR1 ; GR4 ← ビット列 B
LD GR5,GR0 ; GR5 ← ビット列 A
SRL GR1,0,GR6
SLL GR1,0,GR6 ; GR1 ← ビット列 B の左 n ビット(b1)
SLL GR4,0,GR2
SRL GR4,0,GR2 ; GR4 ← ビット列 B の右(16-n)ビット(b2)
SRL GR0,0,GR2 ; GR0 ← ビット列 A の左(16-n) ビット(a1)
SLL GR5,0,GR6 ; GR5 ← ビット列 A の右 n ビット(a2)
OR GR1,GR0 ; C1 ← b1+a1
OR GR4,GR5 ; C2 ← a2+b2
ST GR1,0,GR3
ST GR4,1,GR3
RPOP
RET
END
A:a1,a2 → 00a1,a200
B:b1,b2 → b100,00b2
C:c1,c2 = b1a1,a2b2
b1,a2:n桁
b2,a1:(16-n)桁