Advertisement
Ladies_Man

#NUP LSH_72_LE (PDP-11) rk1

Jun 18th, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .psect code,gbl,i,con,ro
  2.  
  3. ;lsh72(b,a,n)
  4. ;b = a << n
  5. ;typedef int int72_x[5]
  6. ;LE
  7.  
  8. lsh72:: mov R5, -(SP)
  9.         mov SP, R5
  10.         mov R4, -(SP)
  11.         mov R3, -(SP)
  12.         mov R2, -(SP)           ;R2,R3,R4,R5,ret...
  13.  
  14.     mov 4(R5), R1       ;B
  15.         mov 6(R5), R3       ;A
  16.        
  17. ;copy A to B
  18. ;<-- better add here cycle -->
  19.         mov R1, R4
  20.         mov (R3)+, (R4)+
  21.         mov (R3)+, (R4)+
  22.         mov (R3)+, (R4)+
  23.         mov (R3)+, (R4)+
  24.         movb (R3)+, (R4)+
  25.  
  26.     mov 10(R5), R0      ;N
  27.         beq EXIT
  28.  
  29. loop:   mov R1, R4        
  30.         clr R2
  31.         clr R5
  32.         asl (R4)+       ;[0]<<
  33.         adc R2          ;R2=carry[0]
  34.  
  35.         asl (R4)        ;[1]<<
  36.         adc R5          ;R5=carry1
  37.         add R2, (R4)+
  38.         clr R2          
  39.  
  40.         asl (R4)        ;[2]<<
  41.         adc R2          ;R2=carry2
  42.         add R5, (R4)+
  43.         clr R5        
  44.  
  45.         asl (R4)        ;[3]<<
  46.         adc R5          ;R5=carry3
  47.         add R2, (R4)+
  48.         clr R2          ;R2=0
  49.  
  50.         movb (R4), R2   ;R2=b[last]
  51.         asl R2          ;b[last]<<
  52.         movb R2, (R4)   ;R4=b[last]<<
  53.         add R5, (R4)    ;+carry3
  54.  
  55.         sob R0, loop
  56.  
  57. EXIT:   mov (SP)+, R2
  58.         mov (SP)+, R3
  59.         mov (SP)+, R4
  60.         mov (SP)+, R5
  61.  
  62.         return
  63. .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement