Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 (Tek) 9/28/84 based on 9/17/84; site hammer.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!allegra!bellcore!decvax!tektronix!orca!hammer!steveg
From: steveg@hammer.UUCP (Steve Glaser)
Newsgroups: net.micro.16k
Subject: Re: Questions about Scaled Index addressing mode
Message-ID: <1138@hammer.UUCP>
Date: Fri, 8-Mar-85 02:53:54 EST
Article-I.D.: hammer.1138
Posted: Fri Mar  8 02:53:54 1985
Date-Received: Mon, 11-Mar-85 04:45:20 EST
References: <200@gitpyr.UUCP>
Reply-To: steveg@hammer.UUCP (Steve Glaser)
Distribution: net
Organization: Tektronix, Wilsonville OR
Lines: 31
Summary: 

In article <200@gitpyr.UUCP> dcs@gitpyr.UUCP (David Sowell) writes:
>------
>
>I have some questions about the NS32032's addressing modes:
>
>	What does the Scaled Index addressing option do when applied
>	to a Register addressing mode?  In other words, what does
>	something like "MOVW R1[R3:B],R0" do?  
>
>	What results from doing something like "ADDR R1,R0"?
>

In both of these examples the "access class" for the register operand
is "addr" (scaled index addressing mode overrides the access class and
forces it to "addr").

Since taking the address of a register doesn't make much sense (unless
you're a PDP-10 I guess), National defined this case to be equivalent
to 0(Rn).  In other words, MOVW R1[R3:B],R0 puts the contents of the
word at location (R1+R3) into the low word of R0 (upper word of R0 is
unchanged) and the instruction ADDR R1,R0 is equivalent to MOVD R1,R0.

This stuff also happens for Top of Stack addressing mode.  In access
class "addr", it means 0(SP).

This "strange behaviour" is a minor win for code density cause normally
0(Rn) costs at least 1 byte for the displacement (displacements are
either 1, 2 or 4 bytes).

	Steve Glaser
	tektronix!steveg