我正在设计一个与Z80兼容的项目。我负责设计标志寄存器。
我最初认为这些标志是直接从ALU生成的,这取决于输入和ALU操作的类型。
但在查看指令和标志结果后,似乎标志并不总是与此逻辑一致。
因此,我假设我还必须向ALU提供操作码,以便每次生成正确的标志。但这似乎会使设计过于复杂。在进行这个巨大的设计步骤之前,我想在互联网上查看一下。
我说的对吗?或者只是真的很困惑,就像我最初想的那样简单?
发布于 2012-07-17 09:12:31
当然,操作的类型很重要。在做加法和减法时,考虑溢出。比方说,你正在增加或减少8位字节:
1+5=6 -无溢出
255+7=6 -溢出
1-5=252 -溢出
200-100=100 -无溢出
200+100=44 -溢出
100-56=44 -无溢出
显然,进位标志的状态不仅取决于输入字节或结果字节值,还取决于操作。并且它表示无符号溢出。
逻辑是非常一致的。如果不是,那么是时候阅读文档来学习官方逻辑了。
您可能会对this question感兴趣。
发布于 2012-10-11 16:50:23
您的代码是为CP/M操作系统编写的。I/O通过BDOS (基本磁盘操作系统)接口完成。基本上,您将操作代码加载到C寄存器中,将任何其他参数加载到其他寄存器中,并调用位置0x5。功能代码C=2是将E寄存器中的字符写入控制台(=屏幕)。您可以在1200行看到这一点:
ld e,a
ld c,2
call bdos
pop hl
pop de
pop bc
pop af
ret
bdos push af
push bc
push de
push hl
call 5
pop hl
pop de
pop bc
pop af
ret 有关BDOS调用的参考,请尝试here。为了模拟这一点,您需要捕获对地址5的调用,并使用您可以使用的任何工具来实现它们。
https://stackoverflow.com/questions/11514456
复制相似问题