问题–在8085微处理器中编写汇编语言程序,以找到8位数字中的最小值。
示例–假设8位数字存储在存储位置2050,最小值位数存储在存储位置3050。
算法 –
- 将存储单元2050中的内容加载到累加器A中。
- 将A的内容移到寄存器B中。
- 用0F对A的内容执行AND运算,并将结果存储在A中。
- 将A的内容移到寄存器C中。
- 将B的内容移到A中。
- 通过使用RLC指令4次反转A的内容。
- 用0F对A的内容执行AND运算,并将结果存储在A中。
- 借助CMP C指令比较A和C的内容。
- 检查是否设置了进位标志,然后跳转到存储位置2013,否则将C的内容移动到A中。转到存储位置2013。
- 将A的值存储在内存位置3050中。
注– CMP C指令比较A和C的值。如果A> C,则进位标志将复位,否则置1。
程序 –
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 content of accumulator right by 1 bit without carry |
2009 | RLC | Rotate content of accumulator right by 1 bit without carry |
200A | RLC | Rotate content of accumulator right by 1 bit without carry |
200B | RLC | Rotate content of accumulator right by 1 bit without carry |
200C | ANI 0F | A <- A (AND) 0F |
200E | CMP C | A – C |
200F | JC 2013 | Jump if CY = 1 |
2012 | MOV A, C | A <- C |
2013 | STA 3050 | M[3050] <- A |
2016 | HLT | END |
说明–寄存器A,B,C用于一般用途。
- LDA 2050:将存储位置2050的内容加载到A中。
- MOV B,A:在B中移动A的内容。
- ANI 0F:在A的内容和0F值之间执行“与”运算。
- MOV C,A:在C中移动A的内容。
- MOV A,B:在A中移动B的内容。
- RLC:将A的内容左移一位而不进位。使用此指令4次以反转A的内容。
- ANI 0F:在A的内容和0F值之间执行“与”运算。
- CMP C:比较A,C的内容,并相应地更新进位标志的值。
- JC 2013:如果CY = 1,则跳至内存位置2013。
- MOV A,C:在A中移动C的内容。
- STA 3050:将A的内容存储在存储器位置3050中。
- HLT:停止执行程序,并停止任何进一步的执行。