8085程序将8位BCD码转换为ASCII码

2021年3月22日15:01:42 发表评论 832 次浏览

问题–编写汇编级语言程序, 以将8位BCD编号转换为其相应的ACSII代码。

假设–

程序的起始地址:2000

输入存储器位置:2050

输出存储器位置:3050和3051

ASCII码数字0 – 9

8085程序将8位BCD号码转换为ASCII码1

示例–

8085程序将8位BCD号码转换为ASCII码2

算法

  1. 在累加器中输入2050的内容
  2. 将累加器的内容移至寄存器B
  3. 使用AND与0F和ADD 30分隔最低有效位到累加器
  4. 将累加器的内容存储到内存位置3050
  5. 将寄存器B的内容移至累加器
  6. 使用AND与F0分隔最高有效位
  7. 旋转累加器内容4次
  8. 向累加器加30
  9. 将累加器的内容存储到内存位置3051

程序–

地址 助记符 注释
2000 LDA 2050 A <-[2050]
2003 MOV B, A B <-A
2004 ANI 0F A <-A和0F
2006 ADI 30 A <-A + 30
2008 STA 3050 [3050] <-A
200B MOV A, B A <-B
200C ANI F0 A <-A和F0
200E RLC 向左旋转
200F RLC 向左旋转
2010 RLC 向左旋转
2011 RLC 向左旋转
2012 ADI 30 A <-A + 30
2014 STA 3051 [3051] <-A
2017 HLT 停止执行

说明–

  1. LDA 2050将内存位置2050的内容加载到累加器
  2. MOV B, A复制累加器的内容到寄存器B
  3. ANI 0FAND累加器的内容与立即数0F
  4. ADI 30向累加器加30
  5. STA 3050将累加器的内容存储到内存位置3050
  6. MOV A, B将寄存器B的内容复制到累加器
  7. ANI F0AND累加器的内容与立即数据F0
  8. RLC向左旋转累加器的内容, 不带进位
  9. RLC向左旋转累加器的内容, 不带进位
  10. RLC向左旋转累加器的内容, 不带进位
  11. RLC向左旋转累加器的内容, 不带进位
  12. ADI 30向累加器加30
  13. STA 3051将累加器的内容存储到内存位置3051
  14. HLT停止执行程序

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: