📜  8085程序查找最大和最小10个数字

📅  最后修改于: 2021-06-28 09:43:27             🧑  作者: Mango

问题–在8085微处理器中编写汇编语言程序,以查找最大和最小10个数字。

例子 –

Minimum: 01H,  Maximum: FFH

在CMP指令中:
如果累加器>寄存器,则进位和零标志被重置
如果累加器=寄存器,则置零标志
如果累加器<寄存器,则进位标志置位

假设–从2050H到2059H的数字列表,并在2060H和2061H输出。

算法 –

  1. 最大数量存储在B寄存器中,最小数量存储在C寄存器中
  2. D寄存器中的加载计数器
  3. 加载累加器中的启动元素,B和C寄存器
  4. 比较累加器和B寄存器
  5. 如果未设置进位标志,则将累加器的内容传输到B。否则,将累加器与C寄存器进行比较;如果设置了进位标志,则将累加器的内容传输到C
  6. 递减D寄存器
  7. 如果D> 0,则取累加器中的下一个元素,然后转到点4
  8. 如果D = 0,则将B和C寄存器存储在内存中
  9. 程序结束

程序-

Address Label Instruction Comment
2000H LXI H, 2050H Load starting address of list
2003H MOV B, M Store maximum
2004H MOV C, M Store minimum
2005H MVI D, 0AH Counter for 10 elements
2007H LOOP MOV A, M Retrieve list element in Accumulator
2008H CMP B Compare element with maximum number
2009H JC MIN Jump to MIN if not maximum
200CH MOV B, A Transfer contents of A to B as A > B
200DH MIN CMP C Compare element with minimum number
200EH JNC SKIP Jump to SKIP if not minimum
2011H MOV C, A Transfer contents of A to C if A < minimum
2012H SKIP INX H Increment memory
2013H DCR D Decrement counter
2014H JNZ LOOP Jump to LOOP if D > 0
2017H LXI H, 2060H Load address to store maximum
201AH MOV M, B Move maximum to 2060H
201BH INX H Increment memory
201CH MOV M, C Move minimum to 2061H
201DH HLT Halt

解释 –

  1. 将所有元素一一与B和C寄存器进行比较。
  2. 将元素与最大值进行比较,如果元素大于最大值,则将其存储在B寄存器中。否则,将其与最小值进行比较,如果小于最小值,则将其存储在C regiter中。
  3. 循环执行10次。
  4. 在10次迭代结束时,最大值和最小值分别存储在2060H和2061H中。