首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Z80标志-如何生成?

Z80标志-如何生成?
EN

Stack Overflow用户
提问于 2012-07-17 08:19:58
回答 2查看 356关注 0票数 0

我正在设计一个与Z80兼容的项目。我负责设计标志寄存器。

我最初认为这些标志是直接从ALU生成的,这取决于输入和ALU操作的类型。

但在查看指令和标志结果后,似乎标志并不总是与此逻辑一致。

因此,我假设我还必须向ALU提供操作码,以便每次生成正确的标志。但这似乎会使设计过于复杂。在进行这个巨大的设计步骤之前,我想在互联网上查看一下。

我说的对吗?或者只是真的很困惑,就像我最初想的那样简单?

EN

回答 2

Stack Overflow用户

发布于 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感兴趣。

票数 3
EN

Stack Overflow用户

发布于 2012-10-11 16:50:23

您的代码是为CP/M操作系统编写的。I/O通过BDOS (基本磁盘操作系统)接口完成。基本上,您将操作代码加载到C寄存器中,将任何其他参数加载到其他寄存器中,并调用位置0x5。功能代码C=2是将E寄存器中的字符写入控制台(=屏幕)。您可以在1200行看到这一点:

代码语言:javascript
复制
    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的调用,并使用您可以使用的任何工具来实现它们。

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

https://stackoverflow.com/questions/11514456

复制
相关文章

相似问题

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