问题–在8085微处理器中编写汇编语言程序,以找到8位数字的总和。
例子 –
假设–输入数据和输出数据的地址分别为2050和3050。
算法 –
- 加载值存储在累加器A的存储位置2050中
- 将累加器A的值移到寄存器B中
- 执行半字节的屏蔽,即在ANI指令的帮助下使用OF对累加器A进行AND操作。我们将在累加器A中获得较低的半字节值
- 将累加器A的值移动到寄存器C中
- 将寄存器B的值移动到累加器A中
- 通过使用RLC指令反转存储在累加器A中的数字4次,然后再次屏蔽半字节,如步骤3所示
- 累加器A中寄存器C的值相加
- 将A的值存储在内存位置3050
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENT |
---|---|---|
2000 | LDA 2050 | A <- M[2050] |
2003 | MOV B, A | B <- A |
2004 | ANI 0F | A <- A (AND) 0F |
2006 | MOV C, A | C <- A |
2007 | MOV A, B | A <- B |
2008 | RLC | Rotate left without carry |
2009 | RLC | Rotate left without carry |
200A | RLC | Rotate left without carry |
200B | RLC | Rotate left without carry |
200C | ANI 0F | A <- A (AND) 0F |
200E | ADD C | A <- A + C |
200F | STA 3050 | M[3050] <- A |
2012 | HLT | END |
说明–使用的寄存器A,B,C
- LDA 2050 –将存储器位置2050的内容加载到累加器A中
- MOV B,A –将累加器A的值移动到寄存器B中
- ANI 0F –对累加器A和0F的值执行“与”运算
- MOV C,A –将累加器A的值移动到寄存器C中
- MOV A,B –移动累加器A中寄存器B的值
- RLC –指令将累加器A的值左移1位。由于它执行了4次,因此这将反转数字,即将低阶半字节与高阶半字节交换
- 重复步骤3
- ADD C –在累加器A中添加C寄存器的内容
- STA 3050 –在3050中存储A的值
- HLT –停止执行程序,并停止任何进一步的执行