问题–编写一个汇编语言程序,以便使用8085微处理器将2位数的BCD编号转换为等效的二进制代码。
例子:
Input : 72H (0111 0010)2
Output : 48H (in hexadecimal) (0011 0000)2
((4x16)+(8x1))=72
算法:
- 将BCD编号加载到累加器中
- 将2位数的BCD号码解压缩为两个独立的数字。令左数字为BCD 1 ,右数字为BCD 2
- 将BCD 1乘以10,然后向其添加BCD 2
如果2位数的BCD编号为72,则其等效二进制数为
7 x OAH + 2 = 46小时+ 2 = 48小时
脚步:
- 将BCD编号从存储位置(201FH,任意选择)加载到累加器中
- 暂时将累加器的值存储在B中
- 通过将累加器与0FH相加获得BCD 2并将其存储在C中
- 通过将B中的值移到A来恢复累加器的原始值。并用F0H累加器
- 如果累加器中的值等于0,则BCD 2是最终答案,并将其存储在内存位置2020H(任意)
- 否则,将累加器右移4次以获得BCD 1 。下一步是将BCD 1乘以0AH
- 乘法:将BCD 1移至D并以0AH作为计数器初始化E。将累加器清除为0,然后将D加到E次
- 最后,将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包含其二进制等效项。