Assembly 将PDP-11汇编语言编码/解码为二进制和十六进制?

Assembly 将PDP-11汇编语言编码/解码为二进制和十六进制?,assembly,binary,hex,machine-language,pdp-11,Assembly,Binary,Hex,Machine Language,Pdp 11,我被分配了一个任务,在这个任务中,我将为一个应用程序编写编码和解码按钮的actionPreformed方法,在这个应用程序中,用户可以假设编码/解码PDP-11指令,这些指令仅限于添加、SUB、MOV[B]和CMP[B]。应用程序应该能够获取一个4位十六进制数或一个16位二进制数并将其解码到汇编,或者输入汇编指令之一并将其编码为二进制/十六进制 这对我来说都是新鲜事,我似乎不知道该怎么做。有没有人能更简单地分解这个过程,或者有没有人能告诉我应该从哪里开始?我不太确定从哪里开始。谢谢大家! 如果你

我被分配了一个任务,在这个任务中,我将为一个应用程序编写编码和解码按钮的actionPreformed方法,在这个应用程序中,用户可以假设编码/解码PDP-11指令,这些指令仅限于添加、SUB、MOV[B]和CMP[B]。应用程序应该能够获取一个4位十六进制数或一个16位二进制数并将其解码到汇编,或者输入汇编指令之一并将其编码为二进制/十六进制


这对我来说都是新鲜事,我似乎不知道该怎么做。有没有人能更简单地分解这个过程,或者有没有人能告诉我应该从哪里开始?我不太确定从哪里开始。谢谢大家!

如果你有一个项目列表,比如

灯罩 镊子 玻璃 门 花 承蒙

你可以给每个人分配一个数字1=灯罩,2=镊子,等等,我们称之为。 这将事物映射成数字,但数字仍然是抽象的概念,我们需要使用具体的事物来编码它们。 在设计时,所使用的具体事物的数量是有限且固定的,它决定了这些数字的大小。 由于当前和过去用于制造计算机的技术,通常使用编码数字,每个实体有两种状态,我们传统上表示为0和1,n这些条目有2n种可能的状态。 如果我们用一个图形来表示一个特定的状态,其中显示了单个实体的所有状态,那么我们最终会得到像01101这样的字符串。 在映射前k个自然数(因此包括0)时,在数字编码(例如01101)和数字编码(例如01101表示的数字13)之间产生自然映射

因此,我们可以用有限大小的数字对事物进行编码,并用我们想要的任何数字基来表示这些数字。 如图所示,特别令人感兴趣的是基数2,其他重要的基数是八进制和十六进制。 它们的重要性源于这样一个事实,即每一个基数中的一个数字都用精确的二进制数字(也称为位)表示,3表示八进制,4表示十六进制。 这会将长数字转换为短数字

指令是抽象的东西,我们可以用数字对它们进行编码。 出现了一个困难:当考虑操作数时,指令有很多变体:加法r0 r1和加法r0 r1是两个不同的东西,因此它们必须有两个不同的数字。 这样做太长了,相反,我们做了一个分类抽象,我们把我们正在编码的东西分解成本体论的部分,并分别对每个部分进行编码。 诀窍在于其中一些是微不足道的

让我们看一个例子,假设我们有一个这样的十字路口

 \ | /
 --+--
 / | \
这里有8条街道交汇。 我们可以用0到7的数字对每条街道进行编码,在顶部道路上设置0并顺时针计数。 这正好是一个八进制数字,多么方便! 如果我们想对在任何街道上进入十字路口并在任何其他街道上退出的销售人员所走的路径进行编码,我们可以使用两个八进制数字:第一个是进入路径,第二个是出口路径。 例如,37意味着它们从东南方向进入,继续向西北方向移动

我们将编码大量内容的问题简化为编码街道上的一小部分内容。 如果我们还想对销售人员的诚实程度进行编码,无论诚实与否,我们可以添加另一个数字:0=不诚实,1=诚实。 因此,他是一个诚实的推销员。 请注意,234不是有效的编码,这是因为每个八进制数字是3位,但我们只需要一个乳清二进制是首选方式

我们可以使用这种技术对操作数、寻址模式和指令的任何相关部分进行编码。 始终存在的一部分是指令类型,简称为操作码或操作码。 幸运的是,我们不必进行编码,PDP-11设计者已经完成了编码。 我们需要找到指令集架构ISA参考

您需要仔细阅读该文档,尤其是使用的约定。 以下是add的编码方式:

从格式上看,每条指令的长度为16位,因此我们需要ceiling16/3=6个八进制数字,但第一个只能是0或1。 该格式还告诉我们,位0-5是目标2个八进制数字,位6-11是源2个八进制数字,位12-15是操作码。 您可以看到,这正是我们为编码销售人员旅程所做的。 在PDP-11 ISA中,目的地和源是相同的概念,这个概念被称为。 我们只考虑登记地址模式,上面的链接有其他的。 当目标和源是寄存器时,它们的第一个数字是0,第二个数字是寄存器的编号。 你能看到为编码一个寄存器而保留的位数,即3和r的位数是如何变化的吗 egisters,即8个关系

格式是

   2 digits      1  digit     1 digit
  ______         ___         ___
 |opcode|   0   |src|   0   |dst|
这是每两个操作数指令的通用格式,要了解add是如何具体编码的,我们看一下格式下面的表格。 它告诉我们操作码是06

宾果!我们拥有一切,add memory的通用格式,只有寄存器是060s0d,其中s和d是源寄存器和目标寄存器的两位数字

添加r4 r6为060406

剩下的作业是在数字之间转换,例如6106十六进制的060406 oct,它实际上与PDP-11编码无关。 到处都有很多材料


其余指令、其余寻址模式和实现的编码留给读者作为练习

如果你有一个项目列表,比如

灯罩 镊子 玻璃 门 花 承蒙

你可以给每个人分配一个数字1=灯罩,2=镊子,等等,我们称之为。 这将事物映射成数字,但数字仍然是抽象的概念,我们需要使用具体的事物来编码它们。 在设计时,所使用的具体事物的数量是有限且固定的,它决定了这些数字的大小。 由于当前和过去用于制造计算机的技术,通常使用编码数字,每个实体有两种状态,我们传统上表示为0和1,n这些条目有2n种可能的状态。 如果我们用一个图形来表示一个特定的状态,其中显示了单个实体的所有状态,那么我们最终会得到像01101这样的字符串。 在映射前k个自然数(因此包括0)时,在数字编码(例如01101)和数字编码(例如01101表示的数字13)之间产生自然映射

因此,我们可以用有限大小的数字对事物进行编码,并用我们想要的任何数字基来表示这些数字。 如图所示,特别令人感兴趣的是基数2,其他重要的基数是八进制和十六进制。 它们的重要性源于这样一个事实,即每一个基数中的一个数字都用精确的二进制数字(也称为位)表示,3表示八进制,4表示十六进制。 这会将长数字转换为短数字

指令是抽象的东西,我们可以用数字对它们进行编码。 出现了一个困难:当考虑操作数时,指令有很多变体:加法r0 r1和加法r0 r1是两个不同的东西,因此它们必须有两个不同的数字。 这样做太长了,相反,我们做了一个分类抽象,我们把我们正在编码的东西分解成本体论的部分,并分别对每个部分进行编码。 诀窍在于其中一些是微不足道的

让我们看一个例子,假设我们有一个这样的十字路口

 \ | /
 --+--
 / | \
这里有8条街道交汇。 我们可以用0到7的数字对每条街道进行编码,在顶部道路上设置0并顺时针计数。 这正好是一个八进制数字,多么方便! 如果我们想对在任何街道上进入十字路口并在任何其他街道上退出的销售人员所走的路径进行编码,我们可以使用两个八进制数字:第一个是进入路径,第二个是出口路径。 例如,37意味着它们从东南方向进入,继续向西北方向移动

我们将编码大量内容的问题简化为编码街道上的一小部分内容。 如果我们还想对销售人员的诚实程度进行编码,无论诚实与否,我们可以添加另一个数字:0=不诚实,1=诚实。 因此,他是一个诚实的推销员。 请注意,234不是有效的编码,这是因为每个八进制数字是3位,但我们只需要一个乳清二进制是首选方式

我们可以使用这种技术对操作数、寻址模式和指令的任何相关部分进行编码。 始终存在的一部分是指令类型,简称为操作码或操作码。 幸运的是,我们不必进行编码,PDP-11设计者已经完成了编码。 我们需要找到指令集架构ISA参考

您需要仔细阅读该文档,尤其是使用的约定。 以下是add的编码方式:

从格式上看,每条指令的长度为16位,因此我们需要ceiling16/3=6个八进制数字,但第一个只能是0或1。 该格式还告诉我们,位0-5是目标2个八进制数字,位6-11是源2个八进制数字,位12-15是操作码。 您可以看到,这正是我们为编码销售人员旅程所做的。 在PDP-11 ISA中,目的地和源是相同的概念,这个概念被称为。 我们只考虑登记地址模式,上面的链接有其他的。 当目标和源是寄存器时,它们的第一个数字是0,第二个数字是寄存器的编号。 你能看到f的保留位数是多少吗 或者对寄存器(即3)和寄存器数量(即8)进行编码

格式是

   2 digits      1  digit     1 digit
  ______         ___         ___
 |opcode|   0   |src|   0   |dst|
这是每两个操作数指令的通用格式,要了解add是如何具体编码的,我们看一下格式下面的表格。 它告诉我们操作码是06

宾果!我们拥有一切,add memory的通用格式,只有寄存器是060s0d,其中s和d是源寄存器和目标寄存器的两位数字

添加r4 r6为060406

剩下的作业是在数字之间转换,例如6106十六进制的060406 oct,它实际上与PDP-11编码无关。 到处都有很多材料


其余指令、其余寻址模式和实现的编码留给读者作为练习

您确实需要发布至少一些代码。当然你的老师至少给了你一些提示。发布你所拥有的,并提出一个特定的问题。数字只是对指令进行编码。例如,0=ADD,1=SUB等。。。通常,数字的一部分用于对操作数进行编码。如何对指令进行编码。例如,加法r2 r4是060204,其中06是加法,02和04是操作数r2源和r4目标。在链接的pdf中,数字是八进制的,每个数字是3位,第一个数字总是0或1。你真的需要发布至少一些代码。当然你的老师至少给了你一些提示。发布你所拥有的,并提出一个特定的问题。数字只是对指令进行编码。例如,0=ADD,1=SUB等。。。通常,数字的一部分用于对操作数进行编码。如何对指令进行编码。例如,加法r2 r4是060204,其中06是加法,02和04是操作数r2源和r4目标。在链接的pdf中,数字是八进制的,每个数字是3位,第一个数字总是0或1。