disp=(unsigned int)(0x000000FF & d);
Write_Byte(GBR+disp,R[0]);
PC+=2;
}
MOVWSG(int d) /* MOV.W R0,@(disp,GBR) */
{
unsigned int disp;
disp=(unsigned int)(0x000000FF & d);
Write_Word(GBR+(disp<<1),R[0]);
PC+=2;
}
MOVLSG(int d) /* MOV.L R0,@(disp,GBR) */
{
unsigned int disp;
disp=(unsigned int)(0x000000FF & (long)d);
Write_Long(GBR+(disp<<2),R[0]);
PC+=2;
}
Example
MOV.L @(2,GBR),R0
MOV.B R0,@(1,GBR)
;Before execution (GBR+8) = H'12345670
;After execution
R0 = (H'12345670)
;Before execution R0 = H'FFFF7F80
;After execution
(GBR+1) = H'80
Rev. 2.0, 03/99, page 325 of 396