NES(6502组装)精灵动作

2023-12-12

我目前正在开发 NES(6502) 组装游戏,但我不明白如何使精灵移动。我认为它应该是这样工作的:

(loop)
LDA $200 ;will load into the A register the content of address $200,wich contain the Y position of my sprite
INA ;Increment the A register which would increment the content of A which is the Y position of my sprite..?

然而,您似乎无法递增 A 寄存器累加器,因为在尝试使用 INA 指令进行汇编时出现错误。所以我有点迷失了。我应该使用 STA 而不是 LDA 吗?但我想使用地址 $200 的内容,而不是在其中放置我选择的值。我不知道如何让我的精灵移动。


确实没有INA可用于 NES 中使用的 6502 变体。您可以增加A1 使用以下指令对:

CLC     ; Clear carry
ADC #1  ; A = A + 1 + carry = A + 1

或者,如果任一索引寄存器空闲,您可以使用:

LDX $200  ; or LDY
INX       ; or INY

但请记住,其他算术运算如ADC, SBC, LSR等,无法执行X or Y.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NES(6502组装)精灵动作 的相关文章

  • 阴影空间示例

    EDIT 我接受了下面的答案 并添加了我自己的代码的最终修订版 希望它向人们展示影子空间分配的实际示例 而不是更多的文字 编辑 2 我还设法在 YouTube 视频 所有内容 的注释中找到了一个调用约定 PDF 的链接 其中有一些关于 Li
  • 设置 IRQ 映射

    我正在遵循一些教程和参考文献来尝试设置我的内核 我在教程中遇到了一些不熟悉的代码 但根本没有解释它 这是我被告知映射的代码16 IRQs 0 15 到 ISR 地点32 47 void irq remap void outportb 0x2
  • 这个反斜杠在这段汇编代码中起什么作用?

    我不确定这些推线有什么区别 修剪下来来自 Linux 的 x86 entry calling h https github com torvalds linux blob 241e39004581475b2802cd63c111fec43b
  • AndEngine Sprite/Box2D Body 删除使我的程序崩溃,没有错误/异常信息?

    我正在制作一个滑板游戏 其中有障碍 你必须使用 box2D 和 AndEngine 跳过 我试图做到这一点 以便当玩家与物体碰撞时 该物体被移除 并在物体的旧位置放置爆炸 但是精灵移除代码中的某些内容冻结了我的程序 导致它结束 甚至没有强制
  • LC3 LEA指令和存储的值

    我对这个问题感到困惑 指令后寄存器0中存储的值是多少 LEA R0 A 被处决了吗 为什么答案是x370C 我认为应该将A的地址加载到R0中 如果是这样我们怎么知道地址 有人可以帮忙吗 非常感谢 ORIG X3700 LEA R0 A LD
  • 在 x86 汇编中将 64 位常量移至内存

    我正在使用 Intel x64 程序集 NASM 编译器 尝试将 0x4000000000000000 常量移至内存 该常量在 ieee 754 标准双精度中应等于 2 0 我正在使用的代码是 define two 0x4000000000
  • 高效memcspn

    有谁知道 memcspn 函数的有效实现吗 它的行为应该类似于 strcspn 但在内存缓冲区中查找跨度 而不是在以 null 结尾的字符串中查找跨度 目标编译器是 VisualC 谢谢 卢卡 一种近乎最佳的实现 size t memcsp
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • 何时可以重用avx指令中的源寄存器

    在 avx 指令中用作源的寄存器何时可以在指令开始处理后重用 例如 我想使用vgatherdps该指令消耗两个 ymm 寄存器 其中之一是位移索引 我意识到vgatherdps由于数据的局部性较差 因此需要花费大量时间来收集 位移索引寄存器
  • Grub 和进入实模式(低级汇编语言编程)

    我一直在开发一个玩具操作系统 并一直使用 grub 作为我的引导加载程序 最近尝试使用 VGA 时 我发现无法使用硬件中断 我发现这是因为我被 grub 置于保护模式 有人知道如何在不删除 grub 的情况下回到实模式吗 如果您使用 GRU
  • 调用可以是 cdecl 或 stdcall 的函数

    我需要编写调用外部函数的代码 该函数可以是 32 位 Windows 应用程序中的 stdcall 调用或 cdecl 我的代码 调用者 无法提前知道其中的哪一个 现在 如果我尝试从定义为 stdcall 的调用站点调用 cdecl 函数
  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • ICC 中的 -O3 会扰乱内在函数,使用 -O1 或 -O2 或相应的手动汇编即可

    这是后续这个问题 http stackoverflow com questions 49791664 o2 in icc messes up assembler fine with o1 in icc and all optimizatio
  • 为什么前向引用 ADR 指令在 Thumb 代码中以偶数偏移进行汇编?

    To bx对于 Thumb 函数 需要设置地址的最低有效位 GNU 作为文档states https sourceware org binutils docs as ARM Opcodes html当地址是从一个生成时这是如何工作的adr伪
  • x86 程序集 Pushl/popl 不适用于“错误:后缀或操作数无效”

    我是汇编编程的新手 正在努力解决编程基础 http savannah nongnu org projects pgubook 在带有 GNU 汇编器 v2 20 1 的 Ubuntu x86 64 桌面上 我已经能够汇编 链接执行我的代码
  • 汇编语言程序中连续两次相乘

    我正在使用 8086 模拟器以及 DOSBOX 和 MASM 我知道当我们将 8 位与 8 位相乘时 答案将是 16 位 al 8 bit ax 当我们将 16 位与 16 位相乘时 答案将是 32 位 ax 16 bit dx ax 但如
  • 如何从程序内部获取指向程序的特定可执行文件部分的指针? (也许是诽谤)

    我在 Linux 环境中 需要编写一个程序来检索放置在其可执行文件的某个部分中的一些数据 那么 如何从程序内部获取指向程序某个部分 通过其名称 的指针呢 我知道可以使用elf getdata 将节的索引作为参数传递给 get 和Elf Da
  • INT 13h 无法读取超出特定扇区的数据

    我正在为我的操作系统编写内核 在将磁盘扇区加载到内存时遇到问题 以下是从磁盘加载扇区的函数代码部分 mov ax 0x3000 mov es ax mov ax 0x0201 mov bx word ptr bp 6 bx 0x000 0x
  • NASM:如何正确访问SSD驱动器?

    我需要使用 NASM 16 位代码访问 SSD 驱动器 访问普通硬盘时 需要设置寄存器AX DX CX来选择柱面 磁道 扇区 扇区数 AH 选择读扇区功能 DL 选择驱动器号 CH 选择气缸 DH 选择磁盘上的一侧 CL 选择步入正轨的部门
  • 如何在汇编中使用 ReadString?

    mov edx offset Prompt1 call WriteString mov ecx 32 mov edx offset String1 call ReadString 现在 我该如何访问String1 如何将其移入寄存器以便对其

随机推荐

  • 在win7-64位中通过mingw使用boost.python编译一些代码

    我决定让我的程序兼容windows环境 但是我在windows上的编程经验很少 有一些错误需要帮助 环境 操作系统 win7 64位 IDE 代码块12 11 python Python 2 7 3 Windows X86 64 安装程序
  • googleapi:错误 403:需要“compute.organizations.enableXpnHost”权限

    我已在组织级别为我的用户授予我的管理员用户和服务帐户用户 计算共享 VPC 管理员 角色 但我似乎无法启用请求的权限 我还授予了拥有 namidalab dev networks 项目的文件夹级别的角色 在 IAM 和管理控制台 UI 中选
  • 获取单个 NSDateComponents 的 2 个日期之间的确切差异

    如何获得两个值之间的精确差异 以十进制表示 NSDate Eg 2016 年 1 月 15 日 to 2017 年 7 月 15 日 1 5年 我可以使用类似的东西 NSCalendar currentCalendar components
  • 在 awk 中对块内的行进行排序

    我有一个很长的文件 其中包含依赖项列表 它们的版本以及依赖项所属的服务 该文件按块排序和分隔 这是我引用的文件文件的片段 foo bar baz json jar 2 2 2 compile service ServiceTwo foo b
  • 如何在 JPanel 中为矩形设置动画?

    我想为我的项目学习一些有关 JAVA 的技巧 我想从左到右 从右到左对我的矩形进行动画处理 但我无法对球动画应用相同的功能 另外 如何以 y 坐标边框在不同的 x 方向上启动我的球 非常感谢您的建议和帮助 我的代码 import javax
  • 使用宏构建 #include 指令的路径

    我希望包含由宏为程序的目标配置相关部分动态创建的文件路径 例如 我想构造一个将像这样调用的宏 include TARGET PATH OF header h 这将扩展为这样的内容 include corefoundation header
  • 未安装的内部 Testflight 版本挂起于 90%

    我的客户正在尝试安装一个版本 每次都挂在90 有时他们会留下它 仍然挂着 然后检查应用程序并看到版本号增加 但这一次 他们让它运行了 5 分钟 但版本仍然没有更新 他们删除了该应用程序并尝试再次安装 但它没有安装 只是挂起 我该如何解决 我
  • Git 恢复:“目标文件为空”。如何重新创建树木?

    注意 我没有此存储库的任何损坏前克隆 我相信我的情况与这里描述的其他人不同 因为我缺少一棵树 而不是一个斑点 发生了什么 当我尝试通过 LAN 通过 SSH 克隆存储库时 Git 返回一条错误 指出存储库已损坏 remote error o
  • Django 通道在模型更改时发送消息

    我正在使用 django channels 在后端组织我的 websocket 现在 除了当数据库中的信息发生更改时向前端发送消息之外 一切正常 有http端点可以改变模型 这是我的 websocket 消费者 import asyncio
  • 如何重复数据框?

    重复一次 data frame 很容易 mt2 lt rbind mtcars mtcars 但是一般来说 类似 R 的方法是什么 如果我想要 10 份mtcars在一起我可以 mt10 lt mtcars for i in 2 10 mt
  • Pry-Remote 未触发 Rails 4

    Problem 在另一个分支升级到 Rails 4 并尝试上次有效的解决方案后使用 Pow on Rails 4 进行遥控撬 我仍然发现新的 Rails 4 和 Pry 调试器有困难 我在运行什么 rvm 1 26 11 latest by
  • 支持 iOS 8 的设备在代码更新后未收到推送通知

    我最近将我的一台测试 iPhone 升级到了 iOS 8 然后升级了 PUSH 注册码 如下 使用 xCode 6 BOOL hasNotificationsEnabled NSString iOSversion UIDevice curr
  • 将 CopyToDataTable 与“new {..}”LINQ 查询一起使用时出现异常

    从这段代码中 我可以按照我的预期调用 bmwCars CopyToDataTable var bmwCars from car in dataTable AsEnumerable where car Field
  • 如何将 ClientScript.RegisterClientScriptBlock 与内联代码一起使用?

    我有 aspx 页面 其中没有隐藏代码 服务器端代码写在带有 runat 服务器属性的标签内 如果我使用 ClientScript RegisterClientScriptBlock this GetType Email GetEmail
  • SQLite游标中moveToFirst()的用途是什么

    我是一个编程新手 我在互联网上找到了这段代码 它运行得很好 Cursor c db query DataBase TB NAME new String DataBase KEY ROWID DataBase KEY RATE DataBas
  • 如何将不常见格式的字符串转换为日期时间

    我使用的是 NET 3 5 并且有一个日期 该日期以字符串形式出现 格式如下 2009 年 1 月 20 日星期二 20 47 43 GMT 第一个问题 该格式的名称是什么 第二个问题 将此字符串转换为日期时间的最简单 最清晰的方法是什么
  • 如何在 iPad 上的 UIWebView 中上传文件?

    我正在开发一个 iPad 应用程序 我的应用程序的一个组件有一个 UIWebView 其网页有一个浏览按钮来上传文件 在本例中为照片 我知道应用程序无法访问文件系统 但我在 App Store 上看到过可以通过照片实现此功能的应用程序 其中
  • 视图的边框纹理

    有没有办法设置边框纹理LinearLayout或任何其他View 由于屏幕尺寸不同 我不能只将图像设置为背景 这是我正在讨论的纹理示例 我尝试使用九片 但它拉伸了应该重复的白线 Draw 9 patch 工具的截图 您可以使用shape像这
  • PackageInfo LoadLabel 性能缓慢

    我正在为 Android 编写一个应用程序 其中获取应用程序的标签 实际名称 非常慢 特别是这段代码的性能非常糟糕 packageInfo loadLabel pm 只是为了给您一些指标 在安装了 400 个应用程序的 Android 设备
  • NES(6502组装)精灵动作

    我目前正在开发 NES 6502 组装游戏 但我不明白如何使精灵移动 我认为它应该是这样工作的 loop LDA 200 will load into the A register the content of address 200 wi