问题–编写一个汇编语言程序,将8085微处理器中地址2050和地址2051上存储的两个8位数字相加。该程序的起始地址为2000。
例子 –
算法 –
- 将第一个数字从内存位置2050加载到累加器。
- 将累加器的内容移至寄存器H。
- 将第二个数字从内存位置2051加载到累加器。
- 然后使用“ ADD”指令添加寄存器H和累加器的内容,并将结果存储在3050
- 使用“ ADC”命令恢复生成的进位,并将其存储在存储位置3051中
程序 –
Memory Address | Mnemonics | Comment |
---|---|---|
2000 | LDA 2050 | A<-[2050] |
2003 | MOV H, A | H<-A |
2004 | LDA 2051 | A<-[2051] |
2007 | ADD H | A<-A+H |
2008 | MOV L, A | L←A |
2009 | MVI A 00 | A←00 |
200B | ADC A | A←A+A+carry |
200C | MOV H, A | H←A |
200D | SHLD 3050 | H→3051, L→3050 |
2010 | HLT |
解释 –
- LDA 2050将2050存储器位置的内容移至累加器。
- MOV H,A复制累加器的内容以将H注册到A
- LDA 2051将2051存储器位置的内容移至累加器。
- ADD H将A(累加器)和H寄存器(F9)的内容相加。结果存储在A本身中。对于所有算术指令,默认情况下A是一个操作数,A也会存储结果
- MOV L,A将A(34)的内容复制到L
- MVI A 00将立即数据(即00)移动到A
- ADC A将A(00)的内容,指定寄存器的内容(即A)和进位(1)相加。由于ADC也是一种算术运算,因此默认情况下A是一个操作数,A也会存储结果
- MOV H,A将A(01)的内容复制到H
- SHLD 3050将L寄存器(34)的内容移动到3050存储位置中,并将H寄存器(01)的内容移动到3051存储位置中
- HLT停止执行程序,并停止任何进一步的执行