📜  8085程序在8位数字中查找数字的最小值

📅  最后修改于: 2021-06-28 15:04:59             🧑  作者: Mango

问题–在8085微处理器中编写汇编语言程序,以找到8位数字中的最小值。

示例–假设8位数字存储在存储位置2050,最小值位数存储在存储位置3050。

算法 –

  1. 将存储单元2050中的内容加载到累加器A中。
  2. 将A的内容移到寄存器B中。
  3. 用0F对A的内容执行AND运算,并将结果存储在A中。
  4. 将A的内容移到寄存器C中。
  5. 将B的内容移到A中。
  6. 通过使用RLC指令4次反转A的内容。
  7. 用0F对A的内容执行AND运算,并将结果存储在A中。
  8. 借助CMP C指令比较A和C的内容。
  9. 检查是否设置了进位标志,然后跳转到存储位置2013,否则将C的内容移动到A中。转到存储位置2013。
  10. 将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用于一般用途。

  1. LDA 2050:将存储位置2050的内容加载到A中。
  2. MOV B,A:在B中移动A的内容。
  3. ANI 0F:在A的内容和0F值之间执行“与”运算。
  4. MOV C,A:在C中移动A的内容。
  5. MOV A,B:在A中移动B的内容。
  6. RLC:将A的内容左移一位而不进位。使用此指令4次以反转A的内容。
  7. ANI 0F:在A的内容和0F值之间执行“与”运算。
  8. CMP C:比较A,C的内容,并相应地更新进位标志的值。
  9. JC 2013:如果CY = 1,则跳至内存位置2013。
  10. MOV A,C:在A中移动C的内容。
  11. STA 3050:将A的内容存储在存储器位置3050中。
  12. HLT:停止执行程序,并停止任何进一步的执行。