6502

    2热度

    2回答

    我来回答关于6502汇编语言以下问题: “在堆栈中,有以下值(顶级元素在前):0x01, 0x02, 0x03, 0x04, 0x05, 0x06 在地址0xc000是指令jsr 0xABCD。在取/执行周期后哪个值将被存储在程序计数器中,堆栈的顶部元素是什么? 我知道程序计数器将是0xABCD,但我对堆栈元素感到困惑。我知道在6502架构中,堆栈从顶部到底部(从0x01FF到0x0100)增长。

    1热度

    1回答

    我正在制作一个6502仿真器(之后我会模仿其他NES组件来创建一个功能齐全的NES仿真器),并且我遇到了分支条件指令(相对)。现在,我想知道的是,被认为保存为二进制补码的字节还是常规的负字节?这就是我的意思是: 在6502个文件之一(当然非官方)也给出了这样的例子: BEQ $A7 ;Branch-on-equal with value 0xA7 $F0 $A7 ;Translation int

    1热度

    2回答

    我正在为6502写一个模拟器,基本上,有一些指令,其中一个寄存器(主要是X和Y)保存偏移量,我想知道,因为分支指令使用带符号的8位整数,寄存器的值是否保持为8位?这意味着: switch(opcode) { //Bunch of opcodes case 0xD5: //Read the memory area with final address being add

    4热度

    2回答

    我正在模拟6502处理器,而且我几乎完成了(现在处于测试阶段),我正在使用nesdev网站的一些NES测试,它告诉我中断标志和未使用的第5个标志应该初始设置为1(即禁用中断),但为什么?我可以理解未使用的标志部分,因为它...好...未使用,但我不了解中断标志。我尝试过在Google上搜索,有些网站确认它应该设置为1,但没有人解释背后的原因。为什么中断应该在程序开始时被阻止?

    3热度

    2回答

    目前,我正在Java中制作一个NES模拟器。除了一些小问题,我的6502内核可以使用99%。问题是,我正在模拟NES的6502,但我从来没有像PS1,N64或DOS那样对它感兴趣。我一直想仿效一个控制台/系统,它能够做的比在屏幕上绘制一些简单的2D精灵更有效,就像前面提到的系统一样。 我想问的是:与6502相比,什么让x86处理器难以仿真?我能想到的唯一的事情就是庞大的x86指令集,而且x86仿真

    -2热度

    1回答

    ; We now have about 30,000 cycles to burn before the PPU stabilizes. ; One thing we can do with this time is put RAM in a known state. ; Here we fill it with $00, which matches what (say) a C compil

    1热度

    1回答

    我最初(寻求帮助),并在6502宠物模拟器中添加了两个n字节整数的BASIC程序。但是,我的反馈是,它只是简单地添加两个16位整数(不添加n字节整数)。 任何人都可以通过查看我的代码来帮助我理解此反馈,并指出我在正确的方向上创建一个添加了两个n字节整数的程序? 感谢您的合作! 文档: 使用绝对索引寻址添加两个n字节整数。加值开始于内存位置$ 0600,$ 0700,答案为$ 0800。整数的字节长

    1热度

    2回答

    所以我想弄清楚如何绕过LDX没有间接索引的选项,但我都运气不好。 (漂亮的新汇编) 我使用LDA(arrPoint),Y加载从int数组中获取MSB,我想使用LDX(arrPoint),Y获取LSB。 关于如何写这个的任何提示,以便我可以使用间接索引X寄存器? 这是我的一些代码,其中arrPoint位于内存$ 1000,slask是2数据位。 getInt: ASL STA $

    2热度

    2回答

    我学习编程的C编译器(www.cc65.org) 的NES FC有8位6502处理器和RAM 2K的8位6502。但是,以下C编译(成为nes文件)并在VirtualNES仿真器中成功加载。 #include "conio.h" #include "stdlib.h" int dump[1000]; void main() { int *a; a = (int*)m

    1热度

    2回答

    我正在重做,但我这次关闭。使用6502芯片。 我在写一个程序集的打印缓冲区。 我遇到的一个问题是检查字符串是否为空。 这里是我到目前为止的代码:(人类可读) buffer = $03ff x = $01 [START]: $0500 LDX buffer // load buffer (at safe memory address $03ff) LDY #$00 /