8085代码,用于将二进制数转换为ASCII码

问题—— 8085中的汇编级程序,将二进制数转换为ASCII数。

null

例如——

图片[1]-8085代码,用于将二进制数转换为ASCII码-yiteyi-C++库

假设—— 必须转换为ASCII值的二进制数存储在存储位置2050,输出将显示在存储位置3050和3051。

算法-

  1. 加载2050的内容。
  2. 然后使用ANI 0F指令分离编号的LSB,并再次加载2050的内容,将其旋转一位4次,以获得数字的倒数,然后再次使用ANI 0F分离数字。
  3. 如果数字大于或等于0A(十六进制),则加37,否则加30以转换为ASCII值(用于检查数字大于或等于A,则使用指令:CPI 0A,然后检查进位标志,如果为0,则表示数字大于或等于A,如果1位小于A)。
  4. 现在将两个数字的ASCII值分别存储在3050和3051中。

项目-

主要程序:

住址 记忆法 评论
2000 LDA 2050 A
2003 打2500 请到地址2500
2006 STA 3050 A->[3050]
2009 LDA 2050 A
200C RLC 将数字向左旋转一位,不带进位
200D RLC 将数字向左旋转一位,不带进位
200E RLC 将数字向左旋转一位,不带进位
200F RLC 将数字向左旋转一位,不带进位
2010 打2500 请到地址2500
2013 STA 3051 A->[3051]
2016 HLT 终止程序

子程序:

住址 助记符 评论
2500 ANI 0F A
2502 CPI 0A [A] -0A
2504 JNC 250A 如果结转滞后为0,则跳至[250A]
2507 ADI 30 A
2509 RET 返回到主例程中调用子程序地址的下一条指令
250A ADI 37 A
250摄氏度 RET 返回到主例程中调用子程序地址的下一条指令

解释——

主要程序:

  1. LDA 2050: 此指令将从地址2050向累加器加载数字。
  2. 拨打2500: 此指令将停止执行主例行程序指令,并移动到子程序地址2500以执行子任务,执行子例行程序指令后,返回主例行程序并在调用2500后执行指令。
  3. STA 3050: 该指令将累加器的结果(在子程序中执行)存储到地址3050。
  4. LDA 2050: 此指令将再次将地址2050中的数字加载到累加器中,因为先前加载的数字在累加器中发生了更改。
  5. RLC: 将累加器的内容向左旋转一位,不带进位。
  6. RLC: 将累加器的内容向左旋转一位,不带进位。
  7. RLC: 将累加器的内容向左旋转一位,不带进位。
  8. RLC: 将累加器的内容向左旋转一位,不带进位。 (应用RLC 4次,将反转蓄能器的内容)
  9. 9.拨打2500: 此指令将停止执行主例行程序指令,并移动到子程序地址2500以执行子任务,执行子例行程序指令后,返回主例行程序并在调用2500后执行指令。
  10. 10.STA 3051: 该指令将累加器的结果(在子程序中执行)存储到地址3051。
  11. 11.HLT: 此指令将终止程序。

子程序:

  1. ANI 0F: 此指令将分离累加器中数字的LSB,并将结果存储回累加器。
  2. CPI 0A: 此指令将比较累加器的内容与0A,即[A]-0A。
  3. JNC 205A: 如果结转延迟变为0,则它将跳转到205A,否则将移动到下一条指令。
  4. ADI 30: 它将向累加器的内容中添加30,并再次将结果存储回累加器。
  5. RET: 现在,在调用下一条指令后,它将返回到主例程,并开始执行主例程的指令。
  6. 它将向累加器的内容中添加37,并再次将结果存储回累加器。
  7. RET: 现在,在调用下一条指令后,它将返回到主例程,并开始执行主例程的指令。

下一篇文章: 8085将8位BCD数转换为ASCII码的程序

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享