📜  线性搜索的8085程序|套装2

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

问题–在8085微处理器中编写汇编语言程序,以在10个数字的列表中找到给定的数字,如果找到,则在输出中存储1,在输出中存储0。

例子 –

假设–将在2040H找到数据,列出2050H至2059H的数字,并在2060H输出。

算法 –

  1. 将要搜索的数据字节加载到B寄存器中,并将计数器加载到D寄存器中。
  2. 将起始元素加载到累加器中。
  3. 比较累加器和B寄存器。
  4. 如果设置了零标志,则JUMP指向点8(因为CMP指令在两个相等时将零标志设置为零)。
  5. 递减D寄存器
  6. 如果D> 0,则取累加器中的下一个元素,然后转到第3点。
  7. 如果D = 0,则表示未找到元素,然后存储00H。结束程序。
  8. 将01H存储为找到的元素。结束程序。

程序 –

Address Label Instruction Comment
2000H Data LXI H, 2040H Load address of data to be searched
2003H MOV B, M Store data to be searched in B register
2004H LXI H, 2050H Load starting address of list
2007H MVI D, 0AH Counter for 10 elements
2009H NEXT MOV A, M Retrieve list element in Accumulator
200AH CMP B Compare element with data byte
200BH JZ STOP Jump if data byte found
200EH INX H Next element of list
200FH DCR D Decrement counter
2010H JNZ NEXT Jump to NEXT if D>0
2013H LXI H, 2060H Load address of output
2016H MVI M, 00H Store 00H
2018H HLT Halt
2019H STOP LXI H, 2060H Load address of output
201CH MVI M, 01H Store 01H
201EH HLT Halt

解释 –

  1. 将所有元素一一对应地与B寄存器中的数据字节进行比较
  2. 如果找到元素,则循环结束并存储01H
  3. 循环执行10次
  4. 如果在10次迭代结束时未找到数据字节,则存储00H

请参阅Set-1:8085程序以n个数字的数组搜索数字