📌  相关文章
📜  8085程序从给定的数字列表中分离奇数和偶数

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

问题:在8085微处理器中编写汇编语言程序,以从给定的50个数字列表中分离出奇数和偶数。从内存位置2100H开始将奇数存储在另一个列表中。从存储位置2200H开始,甚至将nos存储在另一个列表中。列表的起始地址为2000H。

例子:

解释:
如果数字的最低有效位为1,则数字为奇数,否则为偶数。因此,为了确定数字是偶数还是奇数,我们借助ANI指令对01执行AND运算。如果数字是奇数,那么我们将在累加器中得到01否则为00。 ANI指令还会影响8085的标志。因此,如果累加器包含00,则置零标志,否则将其复位。

算法:

  1. 将存储单元2000加载到HL寄存器对中。
  2. 将存储位置2100加载到DE寄存器对中以存储奇数。
  3. 将元素数存储在寄存器C中。
  4. 将列表中的下一个数字移至累加器。
  5. 用01H执行AND操作以检查数字是偶数还是奇数。
  6. 如果均匀,请跳至步骤9。
  7. 获取累加器中的数字,并将其存储在DE指向的存储位置中。
  8. 增量DE。
  9. 增量HL。减C.
  10. 如果C不为零,请跳至步骤4。

执行与上述类似的步骤来存储偶数。

程序:

Memory Location Mneumonics Comments
2000H LXI H, 2000H Initialize memory pointer 1
2003H LXI D, 2100H Initialize memory pointer 2
2006H MVI C, 32H Initialize counter
2008H MOV A, M Get the number
2009H ANI 0lH Check for odd number
200BH JZ 2011H If EVEN, don’t store
200EH MOV A, M Get the number
200FH STAX D Store the number in result list
2010H INX D Increment pointer 2
2011H INX H Increment pointer l
2012H DCR C Decrement counter
2013H JNZ 2008H If not zero, repeat
2016H LXI H, 2000H Initialize memory pointer l
2019H LXI D, 2200H Initialize memory pointer2
201CH MVI C, 32H Initialize counter
201EH MOV A, M Get the number
201FH ANI 0lH Check for even number
2021H JNZ 2027H If ODD, don’t store
2024H MOV A, M Get the number
2025H STAX D Store the number in result list
2026H INX D Increment pointer 2
2027H INX H Increment pointer l
2028H DCR C Decrement counter
2029H JNZ 201EH If not zero, repeat
202CH HLT Stop