数组中的最大数字 - 8085 微处理器
Largest number in an array - 8085 microprocessor
我想在HL中存储最大数的地址,但我真的不知道该怎么做
这是我到目前为止所做的
0000 LXI H,3000H ;Load H-L pair with address 3000H
0001
0002
0003 MOV E,M ;Move counter from memory to reg. E.
0004 INX H ;Increment H-L pair
0005 MOV A,M ;Move the 1st number from memory to reg. A.
0006 DCR E ;Decrement counter.
0007 INX H ;Increment H-L pair
0008 MOV D,M ;Move the next number from memory to reg. D.
0009 CMP D ;Compare D with A.
000A JNC 000EH ;Jump to address 000EH if there is no carry
000B
000C
000D MOV A,D ;Move largest from reg. D to reg. A.
000E DCR E ;Decrement counter.
000F JNZ 0007H ;Jump to address 0007H if counter is not zero.
0010
0011
0012 INX H ;Increment H-L pair.
0013 MOV C,A ;Move the result from reg. A to C
0014 HLT
**MEMORY**
3000H: 05 (counter)
3001H: 2C
3002H: 1E
3003H: 58
3004H: 46
3005H: 53
代码在查找最大数的部分工作正常,但我想要的是最后也将最大数的地址存储在 HL 中
我不太了解 8085,所以我只给出适用于任何注册机的一般性答案。 (或者在 C 或其他语言中:这是答案为 "the same as you would in any other language" 的问题之一)
当您找到新的最大值时,将地址复制到某处以及作为值。 (在与 MOV A,D
相同的指令块中,您有条件地跳过)。您仍然需要比较值。
如果8085没有足够的寄存器,存入内存。循环完成后,您可以在需要时从那里重新加载 HL。将值作为函数的结果保留在内存中。
确保将起始值和地址都初始化为第一个元素,以防它是最大值。与仅值搜索不同,您不能只使用最小可能值作为最大值的初始值设定项。
我想在HL中存储最大数的地址,但我真的不知道该怎么做 这是我到目前为止所做的
0000 LXI H,3000H ;Load H-L pair with address 3000H
0001
0002
0003 MOV E,M ;Move counter from memory to reg. E.
0004 INX H ;Increment H-L pair
0005 MOV A,M ;Move the 1st number from memory to reg. A.
0006 DCR E ;Decrement counter.
0007 INX H ;Increment H-L pair
0008 MOV D,M ;Move the next number from memory to reg. D.
0009 CMP D ;Compare D with A.
000A JNC 000EH ;Jump to address 000EH if there is no carry
000B
000C
000D MOV A,D ;Move largest from reg. D to reg. A.
000E DCR E ;Decrement counter.
000F JNZ 0007H ;Jump to address 0007H if counter is not zero.
0010
0011
0012 INX H ;Increment H-L pair.
0013 MOV C,A ;Move the result from reg. A to C
0014 HLT
**MEMORY**
3000H: 05 (counter)
3001H: 2C
3002H: 1E
3003H: 58
3004H: 46
3005H: 53
代码在查找最大数的部分工作正常,但我想要的是最后也将最大数的地址存储在 HL 中
我不太了解 8085,所以我只给出适用于任何注册机的一般性答案。 (或者在 C 或其他语言中:这是答案为 "the same as you would in any other language" 的问题之一)
当您找到新的最大值时,将地址复制到某处以及作为值。 (在与 MOV A,D
相同的指令块中,您有条件地跳过)。您仍然需要比较值。
如果8085没有足够的寄存器,存入内存。循环完成后,您可以在需要时从那里重新加载 HL。将值作为函数的结果保留在内存中。
确保将起始值和地址都初始化为第一个元素,以防它是最大值。与仅值搜索不同,您不能只使用最小可能值作为最大值的初始值设定项。