问题–在8085微处理器中编写汇编语言程序,以在10个数字的列表中找到给定的数字,如果找到,则在输出中存储1,在输出中存储0。
例子 –
假设–将在2040H找到数据,列出2050H至2059H的数字,并在2060H输出。
算法 –
- 将要搜索的数据字节加载到B寄存器中,并将计数器加载到D寄存器中。
- 将起始元素加载到累加器中。
- 比较累加器和B寄存器。
- 如果设置了零标志,则JUMP指向点8(因为CMP指令在两个相等时将零标志设置为零)。
- 递减D寄存器
- 如果D> 0,则取累加器中的下一个元素,然后转到第3点。
- 如果D = 0,则表示未找到元素,然后存储00H。结束程序。
- 将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 |
解释 –
- 将所有元素一一对应地与B寄存器中的数据字节进行比较
- 如果找到元素,则循环结束并存储01H
- 循环执行10次
- 如果在10次迭代结束时未找到数据字节,则存储00H
请参阅Set-1:8085程序以n个数字的数组搜索数字