Guest User

Untitled

a guest
Nov 18th, 2018
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. Q123 START
  2. LAD GR1,FIG1
  3. LD GR2,P
  4. LD GR3,Q
  5. CALL PREVRS
  6. RET
  7. FIG1 DC #B3D1 ; 図1のビットの並び
  8. P DC 4 ; p = 4
  9. Q DC 8 ; q = 8
  10. END
  11. REVRS START
  12. RPUSH
  13. LD GR4,=0 ; 結果のビット列を初期化
  14. LAD GR2,15 ; ループカウンタ
  15. LD GR3,0,GR1 ; GR3 ← ビット列
  16. LOOP SLL GR4,1 ; 結果のビット列を左シフト
  17. SRL GR3,1 ; 元のビット列を右シフト
  18. JOV ON
  19. JZE FIN1 ; 残りのビット列の残りのビット列は全てゼロ
  20. JUMP OFF
  21. ON OR GR4,=#0001
  22. OFF SUBA GR2,=1
  23. JMI FIN2 ; 16ビット処理済み
  24. JUMP LOOP
  25. FIN1 SLL GR4,0,GR2 ; 結果のビット列を残りのビット数だけシフト
  26. FIN2 ST GR4,0,GR1
  27. RPOP
  28. RET
  29. END
  30. PREVRS START
  31. RPUSH
  32. LD GR4,0,GR1 ; ビット列を保存
  33. CALL REVRS ; ビット列のビットの並びを逆転
  34. LD GR5,0,GR1 ; GR5 ← 逆転したビット列
  35. LD GR6,=16
  36. SUBA GR6,GR3 ; GR6 ← 16-q
  37. SRL GR5,0,GR2 ; 逆転した部分ビット列αを右端に移動
  38. SLL GR5,0,GR6 ; 逆転した部分ビット列αを左端に移動
  39. SRL GR5,0,GR2 ; 逆転した部分ビット列αをpビット右に移動
  40. LD GR6,=#8000
  41. SRA GR6,-1,GR3 ; qビット連続した1の並びを作成
  42. SRL GR6,0,GR2
  43. XOR GR6,=#FFFF
  44. AND GR6,GR4 ; 元のビット列中の部分ビット列αにゼロを設定
  45. OR GR6,GR5
  46. ST GR6,0,GR1
  47. RPOP
  48. RET
  49. END
Add Comment
Please, Sign In to add comment