0

我不确定哪个是询问打孔卡的正确平台,所以我在这里尝试一下(毕竟打孔卡也是编程的一部分)。

我认为打孔卡已经用二进制表示代码,因为孔意味着打孔卡上的0位置和休息位置意味着1打孔卡。但后来我读到你可以使用打孔卡来展示 Cobol 或 Fortran 代码。我还注意到打孔卡上每列总是有 2 个孔。这样的事情让我很困惑。

在此处输入图像描述

问题: ****我想知道打孔卡是否真的是二进制文件或需要某种汇编程序才能将打孔卡提供的输入转换为机器代码?****

4

2 回答 2

3

我认为打孔卡已经代表二进制代码,因为孔表示 0,而其余位置表示打孔卡上的 1。

有不同类型的穿孔卡片。

System 3 打孔卡上,数据以二进制数据的形式存储,就像您期望的那样。

但是,您图片中显示的卡片是80 列 IBM 卡片,这似乎是最常见的打孔卡片类型。

使用这种类型的打孔卡,您最初可以在每张卡上存储多达 80 个十进制数字:

每列有 10 个位置(标记为“0”-“9”)。要在列中存储数字,请在相应位置打孔:要存储数字“5”,请在位置“5”打孔。

这意味着最初每列只有一个孔。

后来,其他字符被存储在这些卡片上。这是通过每列打两个孔并在卡顶部添加两行(内部命名为“11”和“12”)来完成的。

在每一列中,您可以:

  • 在 12 个位置之一打一个孔或
  • 在“1”-“9”位置之一打一个孔,在“0”、“11”或“12”位置打第二个孔。

这允许您存储多达 12 + 3*9 = 39 个不同的字符加上空格字符(这似乎由没有孔的列表示)。

我想知道打孔卡是否真的是二进制文件还是需要某种汇编程序才能将打孔卡提供的输入转换为机器代码?

IBM 1401 的二进制代码存储在“80 列”型穿孔卡片上。穿孔卡片中的代码被加载到 RAM(实际上是:磁芯存储器)并直接执行。

然而,据我记得在 1401 上,每列最多可以有 3 个孔。

但这种穿孔卡片也非常流行用于存储 Fortran 程序:每行代码一张卡片。如果您有一张包含 Fortran 代码的卡,那么您需要一个 Fortran 编译器。

于 2020-03-11T06:36:00.610 回答
2

如图所示,IBM 打孔卡用于输入字符。各种漏洞被映射到 IBM 大型机使用的“EBCDIC”字符代码。

整体到 EBCDIC 编码的映射非常随意。

编码方案(如果我没记错的话)是有 12 行和 80 列。前两行是 11 和 12,后十行是 0 到 9。

有关血腥细节,请参见此处: https ://en.wikipedia.org/wiki/Punched_card#IBM_80-column_punched_card_format_and_character_codes

0-9 中的单个整数映射到 EBCIC 编号 F0-F9。第 11 行的一个孔加上一个映射到字母 A->JA 第 12 行的孔加上一个映射到第 0 行的 K->RA 孔的数字加上另一个映射到“/S->Z”的数字

还有其他半官方的“overpunch”代码涉及三个或更多的孔,可以代表所有可能的二进制值。我记得一些目标代码被输出到打孔卡以传输到另一台机器。结果看起来像一组纸巾,接收处的阅读器需要多次尝试才能读取整个卡片组而不会卡住或撕开卡片。

于 2020-03-13T17:37:16.670 回答