z80相关内容

Z80 上的溢出和进位标志

我已经开始在我的 Z80 内核上实现 ADD A,r 操作码集.我对进位和溢出标志有点困惑,我认为我已经确定了,但我想把它提交给社区以检查我是否正确. 基本上,据我所知,Z80 中的 ALU 不关心有符号/无符号操作,它只是添加位.这意味着如果两个 8 位值相加并导致 9 位值作为它们相加的结果,则进位标志将被设置.这包括将两个负的二进制补码相加,例如 -20 (11101100) 和 -4 ..
发布时间:2021-12-17 14:48:01 其他开发

Z80汇编程序/机器码中的字节/字/地址是带符号的还是无符号的?

我正在为Z80二进制文件创建模拟器,但是我无法确定所有整数数据类型是带符号的还是无符号的来自手册或来自Google.那么寄存器 A , B ... HL , BC 等中的数字是否已签名? 在机器代码中,指令后的字节/字/地址是带符号还是无符号的? 就像这些示例一样(来自 8080/Z80指令集): 8080助记符Z80助记符机器代码操作------------- ----------- ..
发布时间:2021-04-24 21:05:18 其他开发

游戏男孩:什么构成“半携带”?

Game Boy Z80 CPU具有半进位标志,我似乎找不到太多有关何时设置/清除它的信息。 我该做什么到目前为止,我们了解的是任何8位加,减,移位或旋转运算(可能还有其他运算)将其设置为result(?)的第4位,而DAA指令以某种方式设置/使用。我不确定16位指令如何影响它,以及是否受到某些寄存器的使用。 解决方案 这是从第3位到第4位的进位,就像正常的进位标志记录从第7位进位一 ..
发布时间:2020-10-29 05:33:30 其他开发

如何确定目标文件中指令的开始和结束?

因此,我一直在尝试编写模拟器,或者至少了解东西的工作原理。我对汇编语言(尤其是z80和x86)有相当的了解,但是我从来没有真正理解过目标文件(或者我的情况是.gb ROM文件)如何指示指令的开始和结束。 我正在尝试为每条指令解析操作码,但是我发现这并不像每条指令后都有换行符。那么这是怎么发生的呢?对我来说,它看起来像是一堆字节,无法分辨操作码及其操作数之间的区别。 解决方案 对于大多 ..
发布时间:2020-10-22 04:11:02 其他开发

使用dec创建延迟的问题

我已经开始尝试使用Z80程序集进行Gameboy编程,但是我发现有些奇怪. 我发现了一段用于创建延迟的代码: simpleDelay: dec bc ld a,b or c jr nz, simpleDelay ret 与此同时,我发现写两次dec bc会缩短延迟,但是写3次会使延迟比使用一到两次更长.为什么偶数个dec语句会缩短延迟? 编辑:这是调用延迟的代码片段: ..
发布时间:2020-09-13 01:42:01 其他开发

关于仿真CPU时周期计数准确性的问题

我计划在接下来的几个月中创建一个Sega Master System模拟器,这是Java的一个业余项目(我知道这不是最好的语言,但是我觉得工作起来非常舒适, Windows和Linux的经常使用者,我认为跨平台的应用程序会很棒).我的问题是关于循环计数; 我已经查看了另一个Z80模拟器以及其他模拟器的源代码,尤其是execute循环引起了我的兴趣-调用它时,将int作为参数传递(比如说100 ..
发布时间:2020-07-20 19:28:59 其他开发

标志寄存器中保留/未定义位的作用是什么?

在Z80、8080、8085和8086处理器的标志寄存器中,记录为“保留"或“未定义"的位1、3、5的用途是什么? 解决方案 这些位未使用;也就是说,没有指令将它们显式设置为任何值.设计人员认为5/6标志就足够了,他们只是不使用标志寄存器的其余位. 它们被记录为“未定义",因为在执行任何一条指令后无法事先知道它们将具有哪个值-处理器设计更简单,与将它们显式设置为0或1. 现在, ..
发布时间:2020-07-16 18:42:46 其他开发

编写Z80汇编器-编写ASM词法并使用合成来构建解析树?

我对编写汇编程序的概念很陌生,即使在阅读了大量材料后,我仍然很难将脑袋围绕着几个概念. 实际上将源文件分解为令牌的过程是什么?我相信这个过程称为词法化,我在高低两下搜索了一个有意义的真实代码示例,但是我找不到一个非常受欢迎的简单代码示例;) 解析时,是否需要在树上向上或向下传递信息?我问的原因如下: LD BC,nn 一旦被标记化(???),它就需要变成下面的解析树 ..
发布时间:2020-05-25 01:02:35 其他开发

Z80 DAA指令

为这个看似次要的问题表示歉意,但我似乎找不到任何答案-我只是打算在我的Z80仿真器中实现DAA指令,并且在Zilog手册中注意到这是针对调整累加器以进行二进制编码的十进制算术的目的.它说该指令旨在在加法或减法指令之后立即运行. 我的问题是: 如果在另一条指令后运行该怎么办? 它如何知道之前的指令是什么? 我意识到这里有N标志-但这肯定不能肯定地表明前一条指令是加法还是减法指令? ..
发布时间:2020-05-06 11:03:14 其他开发

SDCC不接受code

我有SDCC的问题。我的code(这我从另一个编译器试图端口)使用灵活的阵列成员结构。然而,当我尝试编译以下code: / **字符串列表*的页眉/ typedef结构{ INT NCOUNT; INT nMemUsed; INT nMemAvail; } STRLIST_HEADER;/ **字符串列表项的数据类型* / typedef结构{ INT nLen ..
发布时间:2016-08-23 12:08:49 C/C++

编写C或C图形Z80模拟器++

我想在写我自己的简单的模拟器为 Z80 处理器的兴趣。我有这种类型的节目的经验。我主要是用基于C的语言,因为他们是我最了解的那些罚款。 什么我需要做到这一点,什么是一些很好的教程/引用,可以帮助我在这个项目呢? 我也想用于编码ROM倾销申请我的 TI-84 Plus的计算器这样我就可以使用它的ROM这个仿真器。 解决方案 也许通过看这些启动: 有一个很好的教程可以在这里找到:独立Z8 ..
发布时间:2016-08-18 22:04:39 C/C++开发

写一个Z80汇编 - 乐星ASM,建设使用成分解析树?

我很新编写汇编的理念和阅读材料大量甚至后,我仍然有困难的包装我的头周围的几个概念。 1)什么是真正打破了一个源文件转换为标记的过程?我相信,这个过程被称为词法,我已经搜查高和低一个真正的code例子有意义,但我不能找到一个东西那么简单code的例子非常欢迎;) 2)在解析时,就不断需要传递向上或向下的树,我想问的原因是信息如下,以: LD BC,NN 它需要变成一次记号化?下面解析树 ..
发布时间:2016-07-18 20:56:29 .NET Framework

GBZ80:如何LD HL,(SP + E)影响H和C标志位?

在游戏机Z80,究竟是如何做的 LD HL,(SP + E)操作影响H和C标志位? (半进+利差) 参考: http://www.devrs.com/gb/文件/ OP codes.html 解决方案 我意识到这是一个老问题,但我前一阵子也有类似的问题,只是想加我的解决方案,绝对不存在的文件或开放源模拟器,正确地做它给我的知识。我花了一些实际调试一个真正的GAMEBOY,以找到解决方案。 ..
发布时间:2016-07-18 20:16:00 .NET Framework

Z80 ASM BNF结构......我在正确的轨道上吗?

我想学习BNF并试图组装一些Z80 ASM code。由于我是新来的这两个领域,我的问题是,我是连在正确的轨道?我想写Z80作为ASM EBNF的格式,这样我可以再找出哪里从那里从源头上创建计算机code。目前,我有以下几点: 分配=标识符“:”指令运算= code,[操作数],[操作数];操作数=标识| *的东西;东西* =“(”,标识符,“)”;标识符=字母,数字{| Α } ;欧普code ..
发布时间:2016-07-18 19:43:45 .NET Framework

溢出和Z80携带旗帜

我已经得到了全面实施的ADD A,我的Z80核心研发集运codeS的。我有一些关于进位和溢出标志,我想我已经钉混乱,但我希望把它放到社区来检查我是对​​的。 基本上,从我所看到的,ALU在Z80并不关心符号/无符号运算,它只是增加了位。这意味着,如果两个8位值加在一起,并导致一个9位值作为其相加结果,进位标志将被设置。这包括添加两个负二的补数,例如-20(11101100)和-40(110110 ..
发布时间:2016-07-18 19:41:27 .NET Framework