问题–在8085微处理器中编写汇编语言程序,以将8位BCD数转换为十六进制数。
假设–假定程序的起始地址为2000,输入存储位置为2050、2051,输出存储位置为2052。
例子 –
INPUT: 2050:02H
2051: 09H
OUTPUT:2052: 1DH
算法 –
- 初始化指向2050的内存指针
- 获取最高有效位数
- 使用重复加法将MSD乘以10
- 将LSD添加到以上步骤中获得的结果中
- 将转换后的结果存储在存储器2052中
程序 –
Memory Address | Mnemonics | Comments |
---|---|---|
2000 | LXI H, 2050 | |
2003 | MOV A, M | A<-M |
2004 | ADD A | A<-A+A |
2005 | MOV B, A | B<-A |
2006 | ADD A | A<-A+A |
2007 | ADD A | A |
2008 | ADD B | A<-A+B |
2009 | INX H | |
200A | ADD M | A<-A+M |
200B | INX H | |
200C | MOV M, A | M<-A |
200D | HLT | TERMINATE THE PROGRAM |
说明–寄存器H,L,B,A用于一般用途。
- LXI H,2050:将用存储单元的地址2050加载HL对寄存器。
- MOV A,M:将存储器的内容复制到寄存器A中。
- 添加A:将累加器的内容与其自身相加。
- MOV B,A:将累加器的内容移到寄存器B中。
- 添加A:将累加器的内容与其自身相加。
- 添加A:将累加器的内容与其自身相加。
- ADD B:将累加器的内容与寄存器B相加,并将结果存储在累加器中。
- INX H:增量寄存器对HL。
- 添加M:将累加器的内容与内存相加,并将结果存储在累加器中。
- INX H:增量寄存器对HL。
- MOV M,A:将累加器的内容复制到内存中。
- HLT:停止执行程序,并停止任何进一步的执行。