问题标签 [intel-8080]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
3822 浏览

assembly - 谁能解决这个 8080 汇编代码“难题”?

我的一个朋友得到了 8080 汇编代码,作为他试图解决的谜题的一部分。这是代码:

他需要 B、DE、C 和 HL 的值

任何人都可以解决这个问题或为我指出如何运行它的正确方向吗?

更新

剧透:解决方案似乎是:

C = 02,B = 06,D = 01,E = 41,H = 01,L = AA

0 投票
5 回答
5887 浏览

interrupt - 中断如何在 Intel 8080 上工作?

中断如何在 Intel 8080 上工作?我搜索了谷歌和英特尔的官方文档(197X),我只找到了一点关于这个的描述。我需要一个详细的解释来模拟这个 CPU。

0 投票
4 回答
3103 浏览

assembly - Intel 8080 指令...“DAD”指令助记符的词源是什么?

我正在 Charles Petzold 的优秀书籍Code中了解 Intel 8080 处理器。DAD 指令被解释为它完成了什么,但我对这样的字母代码有一个奇怪的事情,我必须知道它们代表什么。例如 ADC 代表带有进位的 ADd。或 SBB 用于带借的减法。

但是爸爸呢?我知道这是一个愚蠢的问题,但我想知道是否有人知道答案。谷歌一无所获……

0 投票
1 回答
505 浏览

assembly - Intel 8080:内存偏移计算

我正在阅读有关 Intel 8080 emulation Emulator 101的指南,当我阅读代码以检查我写的内容时,我偶然发现了这个

从一本名为 Intel 8080/8085 Assembly Language Programming 的书中,我读到了 MVI 这个

该指令将存储在其第二个字节中的数据复制到由 H 和 L 寻址的内存位置。M 是对 H 和 L 寄存器对的符号引用。

所以我猜测偏移量是 H 和 L 寻址的内存位置,但我们为什么要这样做呢?那是(state->h<<8) | state->l

谢谢

0 投票
2 回答
2451 浏览

port - 英特尔 8080 指令:输出

我正在尝试模拟英特尔 8080 指令集,但我被困在这条指令上OUT D8,根据英特尔 8080/8085 汇编语言编程一书,它说

OUT指令将累加器的内容放在 8 位数据总线上,将所选端口的编号放在 16 位地址总线上。由于端口数的范围从 0 到 255,因此端口号在地址总线上是重复的。

问题是我不明白这是做什么的。有人可以向我解释一下,或者让我看一篇解释它的文章或一本书。

0 投票
4 回答
3027 浏览

assembly - 8 位和 16 位处理器如何通过两个寄存器访问更多 RAM?

一直让我感到困惑的是 8 位计算机如何访问超过 256 字节的 RAM。我知道它必须使用两个寄存器,但是任何人都可以向我展示一个在汇编代码中会是什么样子的例子吗?

像:

0 投票
1 回答
2963 浏览

assembly - 英特尔 8080 仿真器测试仪

我为 Intel 8080 编写了一个模拟器,我想检查我实现的指令是否正确。是否有测试套件或方法来测试每条指令是否正确?

我的模拟器是用 C 编写的。

0 投票
2 回答
387 浏览

intel-8080 - 在 CP/M 上构建 ROM 映像

我正在尝试使用 CP/M 上古老的 M80 和 L80 工具来构建 ROM 映像。(它用于 CP/M 仿真器,因此我使用 CP/M 工具。)

不幸的是 L80 似乎真的很粗糙 --- AFAICT 它只是将每个目标文件加载到其绝对地址,修复它,然后将所有内容从 0x0100 转储到磁盘。这意味着基于其自身工作空间之外地址的目标文件似乎根本不起作用(只是产生错误消息)。我的 ROM 的基地址是 0xd000,这远远超出了这个范围。

有谁知道是否可以使用 M80 和 L80 来做到这一点,如果可以,怎么做?或者,任何人都可以推荐(并指出我!)一个 CP/M 汇编器/链接器套件吗?

(请注意,如果可能的话,我想避免交叉编译。)

0 投票
2 回答
1108 浏览

assembly - 加法的结果在哪里?英特尔 8080

我无法理解英特尔 8080 处理代码的行为。例如,我想添加两个十六进制数字:3H 和 4H,所以我写道:

但是处理后在哪里可以找到结果呢?我应该将结果从 A 复制到某个内存地址还是什么?对不起,但这是我第一次使用这种东西,我看不出它是如何工作的。

例如,图片显示了我在 8085 模拟器中的示例。 在此处输入图像描述

另一个问题是为什么有些标志改变了但寄存器保持不变?不应该MVI B, 4H改变 B 寄存器的值吗?如果不是,请解释它是如何工作的。

在为每条指令提供 2 个字节后,累加器也没有结果。 在此处输入图像描述

似乎唯一可能影响累加器或任何其他注册表的指令是 INR。“我的”模拟器是否有可能存在缺陷并且无法正常工作? 在此处输入图像描述

0 投票
1 回答
308 浏览

assembly - 为 Intel 8080 打印带有组件的形状

因此,作为我教科书的练习,我正在尝试为英特尔 8080 编写一个汇编程序,该程序将打印三个三角形朝下在上排和两个朝上在下排的可缩放图像。准确地说是这样的:

和:

但是,作为一个汇编新手,我很难想象只使用六个寄存器来实现这样的事情,并且还要记住语言本身的不友好性。我能想到的最好的是:

我们知道第一行是 6*height-1 所以没问题。不过,问题稍后开始:似乎我们必须跟踪(为简单起见,我会给它们一些名称):
-outer_margin外部三角形左右两侧的空格数。它随着每一行递增,但在绘制上三角形后它将不起作用,因此我们需要在寄存器中添加一个新值
-inner_spaces三角形之间的空格。首先,它们会是 3、5,然后是 3,直到我们到达下方三角形的底部——问题是它们必须在前两行之后出现得更频繁
——up_star_counter跟踪要打印的星星该行中的每个上部三角形
- down_star_counter- 相同,但底行中的三角形
-row- 跟踪行,以便我知道何时开始使用一组标签,这些标签也将打印底部三角形
- height- 保存每个三角形高度的变量,由用户输入

这为我们提供了六个寄存器(和自由累加器)的六个值,这看起来不太乐观。此外,这似乎是一场噩梦。我在这里遗漏了什么可以以某种方式简化任务还是和看起来一样难?