Paul Gilmartin is of course quite right. The HLASM can assemble code for AMODE(64) execution, but it can use only 31-bit arithmetic in the course of doing so. Would that things were otherwise! About this topic, I do not share Tony Harminc's aversion to the use of assembly-time set symbols. There is a locally famous anecdote about Quine here in Cambridge. He is said to have waited to see if a speaker used 'data' in the singular or plural. Hearing it used in the singular, he decamped, secure in the knowledge that the speaker would have nothing interesting to say. Analogously, when I see a piece of assembly language that makes no use of the macro language, I decamp, secure in the knowledge that it will be of 1) of little interest and 2) gratuitously long-winded and detail-ridden.
John Gilmore Ashland, MA 01721-1817 USA > Date: Tue, 8 Mar 2011 08:01:04 -0700 > From: [email protected] > Subject: Re: EQUate to a character string > To: [email protected] > > On Mar 8, 2011, at 03:15, Robert A. Rosenberg wrote: > > > At 06:52 PM -0500 on 03/07/2011, Tony Harminc wrote about Re: EQUate > > to a character string: > > > >> Typically you would use > >> > >> CLC MYSTRING,=A(CODE) > >> > >> but this is a bit doubtful... It tempts the beginner into thinking that > >> > >> WRONG EQU C'ABCDE' > >> CLC MYSTRING,=A(WRONG) > >> > >> might work, and it won't. > > > > OTOH, since MYSTRING is apparently 5 bytes long, this SHOULD work: > > > > WRONG EQU C'ABCDE' > > CLC MYSTRING,=AL5(WRONG) > > > > Although you need to go AMODE 64 since this constant needs 33 bits to > > be stored and thus is beyond 32-bit addressing. > > Errr... I haven't tested this. But I believe you're conflating > assembly time expression evaluation which is always 32-bit with > execution time arithmetic. AMODE has no effect on the former. > > -- gil
