设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 2123|回复: 0
收起左侧

C51汇编实现将DPTR寄存器二进制高低位颠倒排序的方法

[复制链接]
发表于 2018-3-6 13:36:09 | 显示全部楼层 |阅读模式

  1. MOV DPTR,#02C48H        ;DPTR寄存器送立即数 0x2C48
  2. ;处理前:0010 1100 0100 1000 0x2C48
  3. ;处理后:0001 0010 0011 0100 0x1234
  4. CALL INV_DPTR
  5. JMP $


  6. INV_DPTR: ;将DPTR(16位寄存器)的二进制高低位颠倒
  7. PUSH ACC

  8. MOV A,DPH
  9. CALL INV_A
  10. MOV DPH,A

  11. MOV A,DPL
  12. CALL INV_A
  13. MOV DPL,A

  14. PUSH B
  15. MOV A,DPH
  16. MOV B,DPL
  17. MOV DPH,B
  18. MOV DPL,A

  19. POP B

  20. POP ACC
  21. RET

  22. INV_A:                ;将A寄存器的二进制高低位颠倒 如0x01 处理后是0x80。
  23. PUSH 32                ;字节地址0x20(32)可以位寻址,压入堆栈保护现场。
  24. PUSH 33 ;        ;字节地址0x21(33)也可以位寻址,存放进位标志C。
  25. MOV 33.0,C        ;将进位标志C存入地址33的第0位,(最大7位),此处的.0不能省略,否则按位地址寻址的。
  26. MOV C,ACC.7        ;将A寄存器的第7位放入C中
  27. MOV 32.0,C        ;将C位标志放入地址32的第0位,以此类推。
  28. MOV C,ACC.6
  29. MOV 32.1,C
  30. MOV C,ACC.5
  31. MOV 32.2,C
  32. MOV C,ACC.4
  33. MOV 32.3,C
  34. MOV C,ACC.3
  35. MOV 32.4,C
  36. MOV C,ACC.2
  37. MOV 32.5,C
  38. MOV C,ACC.1
  39. MOV 32.6,C
  40. MOV C,ACC.0
  41. MOV 32.7,C
  42. MOV A,32        ;地址32的值送A寄存器。
  43. MOV C,33.0        ;将地址33的第0位放入进位标志C
  44. POP 33                ;地址33是后压入堆栈的,所以先弹出。
  45. POP 32                ;地址32的堆栈弹出,恢复现场。
  46. RET

  47. END
复制代码


您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-27 12:41 , Processed in 1.249072 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表