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

📅  最后修改于: 2021-06-28 14:47:10             🧑  作者: Mango

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

假设–
程序的起始地址:2000
输入存储器位置:2050
输出存储器位置:3050和3051

数字的ASCII码0 – 9

例子 –

算法 –

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

程序 –

Address Mnemonics Comments
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 Rotate A left
200F RLC Rotate A left
2010 RLC Rotate A left
2011 RLC Rotate A left
2012 ADI 30 A <- A + 30
2014 STA 3051 [3051]<-A
2017 HLT Stop Execution

解释 –

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