18

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

但是,我手头没有 Z80 处理器,想在我的 PC 上做(我有 windows 或 linux,所以两者都很好)。我在互联网上找到了各种汇编程序,但我对汇编成 hex 文件并不是特别感兴趣,我只想能够将它汇编成 PC 上某种模拟器可以运行的东西。最好这个模拟器会向我显示所有寄存器的内容、内存位置等,并让我逐步完成指令。我发现一些软件暗示他们可能会这样做——但他们要么拒绝编译,要么似乎不能正常工作。有没有人有任何建议?如果有很好的模拟器/IDE 可用于另一种类型的汇编器,那么我可以尝试使用它(假设有一个很好的在线参考手册可用)。

4

16 回答 16

11

我发现一些软件暗示他们可能会这样做——但他们要么拒绝编译,要么似乎不能正常工作。有没有人有任何建议?

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

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

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

于 2008-08-31T17:11:41.253 回答
9

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

于 2009-03-13T21:33:41.880 回答
5

MipSim是免费的

MIPSim 2 的主要特点

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

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

它的用户界面比任何其他模拟器都好。这个模拟器还提供了内存映射的实时视图(也在执行时)。

但是这个不支持 Windows 98 或更低版本,您需要检查其他模拟器,如GNUSim8085

于 2013-03-30T09:31:57.447 回答
4

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

于 2009-02-02T09:36:34.567 回答
4

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

像 DEC 的 VAX 这样的东西被认为是指令集的劳斯莱斯。然后有一些疯狂的 Risc 指令集会做一些非常奇怪的事情。也许您可以找到这些定义,以便您可以尝试实施它们。

于 2009-03-13T22:32:33.720 回答
3

您可能对Z80 模拟器感兴趣,我在 WinAsm 方面有很好经验

于 2008-08-26T08:43:38.020 回答
3

您也可以考虑学习 x86 汇编语言,您可以使用 Visual Studio 中的内联汇编程序来完成 - 尽管它是一个比 Z80 更大的指令集,但您将拥有能够使用比可用的工具更好的工具的优势Z80。

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

于 2008-08-26T08:57:27.563 回答
3

如果您碰巧已经了解 .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 之类的东西,然后使用它。我敢肯定车库销售(汽车后备箱销售?庭院销售?)或二手书店会有彼得诺顿的旧 DOS 中断圣经的副本。:)

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

于 2008-08-26T09:26:43.703 回答
3

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

  • 主存储器和寄存器显示
  • 带有语法高亮的内置编辑器
  • 运行、步进和中断功能
于 2008-08-26T15:00:04.837 回答
3

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

http://www.emu8086.com/

于 2011-11-17T16:36:59.793 回答
1

查看Thomas Scherrer Z80 仿真器,了解您可以使用的潜在仿真器列表。

于 2008-08-26T08:45:07.407 回答
1

我为 ZX Spectrum 编写 z80 asm(不过,我知道 :))并使用 SJasmPlus 链接到频谱仿真器文件。许多更好的 Spectrum 仿真器,如 Fuse 和 ZXSpin 都内置了编辑器,用于动态调试和修补。

于 2008-08-26T09:00:50.600 回答
1

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

于 2009-04-27T18:05:19.540 回答
1

为什么要使用模拟器?

下载MASMNASM并编写好的旧 80386 架构。大量在线示例和学习工具。

大量使用汇编程序的真实理由!

于 2012-08-30T12:30:59.743 回答
1

有一个模拟器是Visual6502,用于教授微处理器架构的基础知识。它有一个编辑器、汇编器、I/O 操作和如何操作微处理器的动画。我在以下链接中可用。

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

于 2013-04-22T08:34:00.897 回答