首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >8085 -如何比较堆栈中的2个值

8085 -如何比较堆栈中的2个值
EN

Stack Overflow用户
提问于 2017-12-13 03:29:53
回答 1查看 337关注 0票数 0

我想知道如何比较堆栈中的两个值以发现较小的那个。我是一个乞讨者,所以我不确定我是否应该使用累加器以及如何使用,考虑到它只是一个8位寄存器,而Stack对每个值都使用成对的寄存器。如果你能帮助我,我将不胜感激,谢谢!

英特尔语法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-13 06:02:10

如果您不能从堆栈中读取这些值,那么就必须以一种很难的方式来实现;无论是8085 (还是Zilog )都不能直接从堆栈中读取数据。pop Z80也不能直接从堆栈中读取。

您必须将指向该值的指针复制到HL寄存器对,并读取(HL)内存位置的内存。

请注意,8085不允许您直接将堆栈指针复制到HL,而只能将其添加到HL

例如:我们想要将位于堆栈地址(SP+5)的字节与位于地址(SP+10)的字节进行比较。

然后我们执行以下操作(这里使用8080/8085语法,而不是Z80语法):

代码语言:javascript
复制
LXI H, 5   ; Set HL to 5
DAD SP     ; Add the address of the stack to HL -> HL contains (SP+5)
MOV A,M    ; Load the byte at (HL) into the accumulator
LXI H, 10  ; Set HL to 10
DAD SP     ; Add the address of the stack to HL -> HL contains (SP+10)
CMP M      ; Compare the byte at (HL) to the accumulator

CMP指令之后,根据比较结果设置标志。

如果你想比较16-,24-,32- ...位数你必须先比较最上面的字节。如果设置了零标志,这意味着两个字节是相同的。在这种情况下,您将比较下一个字节,直到最低的字节,或者直到不再设置零标志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47780176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档