8085程序以n个数字的数组搜索数字

问题–在8085中编写汇编语言程序, 以在n个数字的数组中搜索给定的数字。如果找到数字, 则将F0存储在内存位置3051中, 否则将0F存储在3051中。
假设–数组中元素的数量存储在存储位置2050。数组从起始存储地址2051存储, 用户要搜索的编号存储在存储位置3050。
例子 -

8085程序以n个数字的数组搜索数字

文章图片
8085程序以n个数字的数组搜索数字

文章图片
算法–
  1. 通过以下命令使内存指针指向内存位置2050LXI H 2050指令
  2. 将数组大小的值存储在寄存器C中
  3. 要在寄存器B中搜索的商店编号
  4. 将内存指针增加1, 使其指向下一个数组索引
  5. 将数组的元素存储在累加器A中, 并将其与B的值进行比较
  6. 如果两者相同, 即ZF = 1, 则将F0存储在A中, 并将结果存储在存储器单元3051中, 然后转到步骤9
  7. 否则将0F存储在A中并将其存储在内存位置3051中
  8. 将C减01并检查C是否不等于零, 即ZF = 0, 如果为true, 则转到步骤3, 否则转到步骤9
  9. 程序结束
程序–
内存地址 记忆 注释
2000 LXI H 2050 H < -20, L < -50
2003 MOV C, M C < -M
2004 LDA 3050 A < -M [3050]
2007 MOV B, A B < -A
2008 INX H HL < -HL + 0001
2009 MOV A, M A < -M
200A CMP B A – B
200B JNZ 2014 如果ZF = 0则跳转
200E MVI A F0 A < -F0
2010 STA 3051 M [3051] < -A
2013 HLT 结束
2014 MVI A 0F A < -0F
2016 STA 3051 M [3051] < -A
2019 DCR C C < -C – 01
201A JNZ 2008 如果ZF = 0则跳转
201D HLT 结束
【8085程序以n个数字的数组搜索数字】说明–使用A, B, C, H, L和间接存储器M的寄存器:
  1. LXI H 2050 –用20初始化寄存器H并用50初始化寄存器L
  2. MOV C, M –将由寄存器H和L表示的间接存储位置M的内容分配给寄存器C
  3. LDA 3050 –在累加器A中加载存储单元3050的内容
  4. MOV B, A –将寄存器B中A的内容移动
  5. INX H –HL增加1, 即M增加1, 现在M将指向下一个存储位置
  6. MOV A, M –移动累加器A中存储位置M的内容
  7. CMP B –从A减去B并更新8085标志
  8. 2014年JNZ –如果重置零标志即ZF = 0则跳转到存储位置2014
  9. MVI A F0 –将F0分配给A
  10. STA 3051 –将A的值存储在3051中
  11. HLT –停止执行程序并停止任何进一步的执行
  12. MVI A 0F –将0F分配给A
  13. STA 3051 –将A的值存储在3051中
  14. DCR C –将C减01
  15. JNZ 2008 –如果重置零标志, 则跳转到内存位置2008
  16. HLT –停止执行程序并停止任何进一步的执行

    推荐阅读