📜  8085程序将BCD编号转换为二进制

📅  最后修改于: 2021-06-28 16:57:18             🧑  作者: Mango

问题–编写一个汇编语言程序,以便使用8085微处理器将2位数的BCD编号转换为等效的二进制代码。

例子:

Input : 72H (0111 0010)2
Output : 48H (in hexadecimal) (0011 0000)2
((4x16)+(8x1))=72

算法:

  1. 将BCD编号加载到累加器中
  2. 将2位数的BCD号码解压缩为两个独立的数字。令左数字为BCD 1 ,右数字为BCD 2
  3. 将BCD 1乘以10,然后向其添加BCD 2

如果2位数的BCD编号为72,则其等效二进制数为
7 x OAH + 2 = 46小时+ 2 = 48小时

脚步:

  1. 将BCD编号从存储位置(201FH,任意选择)加载到累加器中
  2. 暂时将累加器的值存储在B中
  3. 通过将累加器与0FH相加获得BCD 2并将其存储在C中
  4. 通过将B中的值移到A来恢复累加器的原始值。并用F0H累加器
  5. 如果累加器中的值等于0,则BCD 2是最终答案,并将其存储在内存位置2020H(任意)
  6. 否则,将累加器右移4次以获得BCD 1 。下一步是将BCD 1乘以0AH
  7. 乘法:将BCD 1移至D并以0AH作为计数器初始化E。将累加器清除为0,然后将D加到E次
  8. 最后,将C添加到累加器中并将结果存储在2020H中

2020H包含结果。

ADDRESS LABEL MNEMONIC
2000H LDA 201FH
2001H
2002H
2003H MOV B, A
2004H ANI 0FH
2005H
2006H MOV C, A
2007H MOV A, B
2008H ANI F0H
2009H
200AH JZ SKIPMULTIPLY
200BH
200CH
200DH RRC
200EH RRC
200FH RRC
2010H RRC
2011H MOV D, A
2012H XRA A
2013H MVI E, 0AH
2014H
2015H SUM ADD D
2016H DCR E
2017H JNZ SUM
2018H
2019H
201AH SKIPMULTIPLY ADD C
201BH STA 2020H
201CH
201DH
201EH HLT

将BCD编号存储在201FH中。 2020H包含其二进制等效项。