微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Z80装配体中执行“大于”跳转,而不是“大于或等于”跳转?

如何解决如何在Z80装配体中执行“大于”跳转,而不是“大于或等于”跳转?

我正在尝试学习Z80组装-如果这非常明显,请原谅我-但是我对组装整体还是比较陌生的。

我已经熟悉了与cp进行比较后跳跃如何工作以及它们如何等同于我所知道的东西,NZ等同于“!=”,C与“ ”并不是那么容易。

NCC相反,NC-据我所知-在我的情况下与“> =”相关。我的假设是我可以在相同的跳转条件下组合NCNZ删除“ =”,但这似乎无效。

我可以做些什么来使自己的跳跳条件是a比比较量更多允许它们等于零?

解决方法

CP执行减法并适当设置标志。它不存储减法的结果。

因此要比较A大于操作数,您需要查找该减法的结果,该结果严格为正数,即等于或大于1。

没有直接的方法,您必须将其作为一个复合词-NC消除所有小于0的结果,使您大于或等于,然后再NZ进行计算消除平等的可能性。但是您可能想要翻转它们以获得更直接的代码。例如

      CP <whatever>
      JR C,testFailed   ; A was less than the operand.
      JR Z,testFailed   ; A was exactly equal to the operand.

testSucceeded:
      ; A was not less than the operand,and was not
      ; equal to the operand. Therefore it must have
      ; been greater than the operand.
      ...

testFailed:
      ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。