问题—— 编写一个汇编语言程序,用8085微处理器将2位BCD数转换成等价的二进制数。
null
例如:
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×OAH+2=46小时+2=48小时
步骤:
- 将BCD编号从内存位置(201FH,任意选择)加载到累加器中
- 将累加器的值暂时存储在B中
- 获取BCD 2. 通过将蓄能器与0FH并存储在C中
- 通过将B中的值移动到A,并使用F0H恢复累加器的原始值
- 如果累加器中的值等于0,则BCD 2. 是最终答案,并将其存储在内存位置2020H(任意)
- 否则,将蓄能器向右移动4次以获得BCD 1. .下一步是将BCD相乘 1. 到0AH
- 乘法:移动BCD 1. 用0AH作为计数器初始化E。将累加器清除到0,并将D添加到E中多次
- 最后,将C添加到累加器中,并将结果存储到2020H
2020H包含结果。
住址 | 标签 | 记忆的 |
---|---|---|
2000小时 | LDA 201FH | |
2001H | ||
2002H | ||
2003H | 莫夫B,A | |
2004H | ANI 0FH | |
2005H | ||
2006H | 莫瓦 | |
2007年 | 电影A,B | |
2008H | ANI F0H | |
2009年 | ||
200AH | JZ SKIPMULTIPLY | |
200BH | ||
200CH | ||
200DH | RRC | |
200EH | RRC | |
200FH | RRC | |
2010小时 | RRC | |
2011H | MOV D,A | |
2012年2月 | XRA A | |
2013H | MVI E,0AH | |
2014H | ||
2015小时 | 总和 | 加D |
2016H | DCR E | |
2017H | JNZ SUM | |
2018H | ||
2019H | ||
201AH | SKIPMULTIPLY | 加C |
201BH | STA 2020H | |
201CH | ||
201DH | ||
201EH | HLT |
将BCD号码存储在201FH中。2020H包含其二进制等价物。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END