我想学习如何使用汇编程序进行编程。我之前(在我的 A-Level 计算课程期间)做过一些汇编,但这绝对是一个简化的“伪汇编程序”。我借了我爸爸的旧 Z80 汇编器参考手册,这看起来很有趣,所以如果可能的话我想尝试一下 Z80 汇编器。

但是,我手头没有 Z80 处理器,并且想在我的 PC 上执行此操作(我有 Windows 或 Linux,所以两者都很好)。我在互联网上找到了各种汇编器,但我对汇编成十六进制文件并不是特别感兴趣,我只想能够将其汇编成 PC 上某种模拟器可以运行的东西。最好这个模拟器会向我显示所有寄存器的内容、内存位置等,并让我逐步执行指令。我发现一些软件表明他们可能会这样做 - 但他们要么拒绝编译,要么似乎无法正常工作。有人有什么建议吗?如果有好的模拟器/IDE 可用于另一种类型的汇编器,那么我可以尝试一下(假设有一个好的在线参考手册可用)。

有帮助吗?

解决方案

我找到了一些软件,暗示他们可能会这样做 - 但他们要么拒绝编译,要么似乎无法正常工作。有人有什么建议吗?

写一个。您最好选择一个漂亮、简单的指令集(Z80 应该是完美的)。我记得这是作为一年级本科生练习做的 - 我认为我们用 C++ 编写了模拟器并模拟了 6800 汇编,但实际上任何语言/指令集都可以。

如今“学习汇编语言”的想法是了解计算机如何在最低级别工作,现在只有少数人(编译器编写者等)有真正的理由实际编写汇编代码。现代处理器充满了旨在供编译器使用的功能,以帮助优化代码的速度/并发执行/功耗/等,并且尝试为现代处理器手动编写汇编将是一场噩梦。

除非您愿意,否则不要担心让您的应用程序做好生产准备 - 到目前为止您发现的软件很可能是由与您完全相同的人编写的,他们想要弄清楚汇编是如何工作的并编写了自己的模拟器,然后意识到要使其“做好生产准备”以便公众可以使用它需要做多少工作。

其他提示

您可能想查看开源 8085 模拟器”GnuSim8085”,它专门用于教育目的,实际上是学生在准备考试时编写的。它可以在 Linux 和 Windows 上运行。

如果您在 Windows 上 8085模拟器 是最好的选择。8085 Simulator by J-tech Softwares

它的用户界面比任何其他模拟器都优秀。此外,该模拟器还随时提供内存映射的实时视图(也在执行过程中)。

但这个不支持Windows 98或更低版本,你需要检查其他模拟器,如“GnuSim8085”。

MipSim 是免费的

http://www.mipsim.com

MIPSim 2的主要特点

  • 内置代码编辑器,具有语法突出显示和折叠等功能
  • 以不同的表示形式显示寄存器和内存值(有符号整数、无符号整数、十六进制和 ASCII)
  • 设置内存单元的块大小(全字、半字、字节),以便于检查内存值
  • 即使在仿真和调试期间,也只需单击一下即可更改寄存器和存储单元的值
  • 实时用户界面更新允许您查看寄存器和内存单元的值在执行过程中如何变化
  • 内置调试器,具有逐步指令执行、指令跳过和断点功能
  • 用于将 ASCII、UNICODE 字符串和整数值插入内存以测试代码的工具
  • 用于检查重复或缺失标签和指令参数的工具
  • 保存计算机状态(所有寄存器和存储单元的值),以便下次运行模拟器时可以从离开的地方继续!
  • 设置模拟速度 - 低速非常适合跟踪代码并查看其行为方式
  • 编码指令 - 以二进制或十六进制表示形式生成机器代码
  • 捕获汇编时间和运行时错误
  • 通过描述性错误消息更轻松地进行调试
  • 多线程设计 - 即使执行的汇编代码错误或包含无限循环,MIPSim 也不会卡住(希望如此;)
  • MIPSim API - 制作您自己的程序,可以读取和写入 MIPSim 的寄存器和内存,为强大的测试提供极大的灵活性!

更高的目标!尝试获取更强大的汇编语言的模拟器。请记住,Z80 和 808x 是低端处理器,具有低端且笨拙的指令集。

DEC 的 VAX 之类的东西被认为是指令集中的劳斯莱斯。还有一些疯狂的 Risc 指令集可以做一些非常奇怪的事情。也许您可以找到它们的定义,以便您可以尝试实现它们。

您可能感兴趣 对于 Z80 模拟器,我有过很好的经验 汇编语言.

您还可以考虑学习 x86 汇编语言,您可以使用 Visual Studio 中的内联汇编器来完成此操作 - 尽管它的指令集比 Z80 更大,但您将具有能够使用比 Z80 可用的工具更好的工具的优势。 Z80。

我还记得 Keil 8051 和 Arm 工具在 IDE 中有一个模拟器 - 这些版本有大小限制的版本,可以从 www.keil.com 免费下载

如果您碰巧已经了解 .NET,那么这可能会有用:

http://www.viksoe.dk/code/asmil.htm

它有一点限制,可能只能与 .NET 1.1 一起使用,但您至少可以使用“现代”IDE,并且有很多相关文档。

<%@ page language="Asm80386" %>
<%
Str:  DB "Testing...", 0

  mov eax, -2
  cmp eax, 2
  jle Label1
  xor eax, eax
Label1:
  lea esi, Str
  push esi
  call "Response.Write(string)"
  pop esi
%>
<br>EAX: <%= eax %>

如果您想要“硬核”,另一种选择是使用 FreeDOS 和 VMWare 之类的东西,并使用它们。我确定车库出售(汽车后备箱出售?旧货出售?)或者二手书店会有一本 Peter Norton 的旧 DOS 中断圣经。:)

就我个人而言,我通过使用 Turbo Pascal(我认为它现在已经从 Borland 中免费了?)学习了 x86 asm,它能够将汇编指令嵌入到函数中。让应用程序的设置变得更加容易,我可以专注于我想做的事情。后来我在奥克兰大学使用了 MacVAX,还可以,但是 VAX 已经死了——你不妨学习 x86 :)

辛普辛 绝对值得一看。它仅适用于 Windows,但功能集相当不错:

  • 主存储器和寄存器显示
  • 具有语法突出显示功能的内置编辑器
  • 运行、单步和中断功能

温猿 是一个很好的模拟器 阿姆斯特拉德CPC. 。Amstrad CPC 是 80 年代生产的家用电脑。它使用 Z80 作为 CPU。使用模拟器,您可以在编程时显示许多内部结构。它包括 Z80 代码的调试器和反汇编器。

现在这对你来说没有任何意义,但对路过的人来说却没有任何意义。这是我遇到过的最好的汇编代码模拟器。真的值得!

http://www.emu8086.com/

看一眼 Thomas Scherrer Z80 模拟器 有关您可以使用的潜在模拟器的列表。

我为 ZX Spectrum 编写 z80 asm(我仍然知道:))并使用 SJasmPlus 链接到频谱模拟器文件。许多更好的 Spectrum 模拟器(例如 Fuse 和 ZXSpin)都内置了编辑器,用于即时调试和修补。

当我上大学时,我们使用 PIC 微处理器。它们是由一家名为 Microchip 的公司制造的。他们还有一个很棒的 IDE,带有芯片仿真器/模拟器,可以让您在没有实际芯片的情况下完成任务。

为什么要使用模拟器?

下载 MASM 或者 NASM 并编写良好的旧 80386 架构。大量在线示例和学习工具。

使用汇编程序有很多现实的理由!

有一个模拟器是Visual6502,用于微处理器体系结构的基础教学。它有一个编辑器、汇编器、I/O 操作和如何工作微处理器的动画。我可以通过以下链接获得。

http://www.pcsistem.net/visual/index.htm

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top