PDP 11/45 light chaser

Brent Hilpert hilpert at cs.ubc.ca
Mon May 23 03:05:26 CDT 2005


Jay West wrote:
> It's been decades since I looked at '11 assembler

(Disclaimer: I haven't dealt with '11 assembler since ~1982 either.)


> So, why would the branch at location 1016 go back to the data
> at 1002? Obviously there's something I'm missing. 

The comment is incorrect. The intent is to go to 1004.


> Jim wrote....
> > Location  Content   Op-code            comment
> > 001000    012700    mov #1,r0          load ro with 1
                                                 ^ comment should be "r0" not "ro"
> > 001002    000001
> > 001004    006100    rol                rotate r1 left
                                                   ^ comment should be "rotate r0 left"
> > 001006    012701    mov delay r1       load register r1 with delay
> > 001010    007777    delay
> > 001012    005301    dec r1             decrement register 1
> > 001014    001376    bne -2             continue to decrement r1 until r1=0
                  -2   =    -2
> > 001016    000772    br -12             back to 001002 (dec r0)
                  -6  <>   -12                          ^ comment should be "001004", 
                                                            ^ comment should be "rotate r0" not "dec r0"

At 1014 the machine code and assembler instruction are consistent, and correct for word offsets.
At 1016 the machine code and assembler instruction are NOT consistent, but machine code is still correct for word offsets.
(And presuming branch offsets are calculated relative to instruction following the branch (after PC increment).)

There are some inconsistencies between the machine code / mnemonics / comments, but that doesn't explain why it doesn't work. 
I'm sure the '11 experts will chime in here...


More information about the cctalk mailing list