assembly - 如何在 Z80 装配中进行“大于”跳转,而不是“大于或等于”?
问题描述
我正在尝试学习 Z80 组装 - 如果这非常明显,请原谅我 - 但我对整个组装相当陌生。
在比较之后,我已经熟悉了跳转的工作原理cp
以及它们如何等同于我所知道的事物,即NZ
“!=”的等价物,C
与“<”等相关。尽管据我所知,“>”并不容易。
NC
是相反的C
-NC
据我了解 - 在我的场景中与“> =”相关。我的假设是我可以组合NC
并NZ
在相同的跳转条件下删除“=”可以这么说,但它似乎不起作用。
我该怎么做才能使我的跳跃条件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:
...
推荐阅读
- sql - 编写查询以显示学生姓名和他们在任何科目中的最高分
- python - 如何将单个项目添加到numpy数组
- mysql - JDBC 未在 Google Apps 脚本上连接
- python - 如何优化使用 xarray 的代码以获得更好的性能?
- python - 打印带有整数的 PyTorch 张量时如何设置精度?
- kubernetes - kubernetes 自动缩放错误custome metriccs
- javascript - ScrollMagic 动画在 Windows 笔记本电脑或 Android 手机中不起作用
- python - 为什么我的零列表会导致 IndexError?
- python - PyTesseract - 被水平白线打断的文本
- c - MPI_Gather 动态 2D 分配数组 - MPI C