Assembly 将PEP/8汇编伪操作转换为十六进制机器语言

Assembly 将PEP/8汇编伪操作转换为十六进制机器语言,assembly,data-conversion,machine-language,pep8-assembly,Assembly,Data Conversion,Machine Language,Pep8 Assembly,我正在读课本。下面的问题是关于Pep/8虚拟计算机的。在练习中,我被问到以下问题: 将以下汇编语言伪操作转换为十六进制机器语言: .ASCII“Bear\x00” .字节0xF8 .WORD 790 我试图将这些值转换成十六进制,但我无法理解我的教科书对这个过程的解释,我觉得这本书没有给出太多的解释 对于第一个答案,我认为它是ASCII转换表中的一个简单查找: 4265617200 本练习的答案如下: 4265617200 F8 0316 尽管知道这些答案,但我不知道如何得到2和3的答案 下面是

我正在读课本。下面的问题是关于Pep/8虚拟计算机的。在练习中,我被问到以下问题:

将以下汇编语言伪操作转换为十六进制机器语言:

  • .ASCII“Bear\x00”
  • .字节0xF8
  • .WORD 790
  • 我试图将这些值转换成十六进制,但我无法理解我的教科书对这个过程的解释,我觉得这本书没有给出太多的解释

    对于第一个答案,我认为它是ASCII转换表中的一个简单查找:

    4265617200

    本练习的答案如下:

  • 4265617200
  • F8
  • 0316
  • 尽管知道这些答案,但我不知道如何得到2和3的答案

    下面是Pep/8汇编程序和模拟器的示例。
    这是汇编程序的代码。

    所以第2个。。。是十六进制形式

    您只需要将其更改为8位的二进制形式

    例如

    如果您有0xA7

    在十进制中,这是167

    答案是。。。 无符号二进制 10100111


    这就是问题的解释,这就是你的意思吗?您还有其他信息吗?

    谢谢!我不知道事情有那么简单。这本书根本不清楚转换过程。没问题,我相信word是指32位大小的二进制字,对吗?书中说,.word命令为加载程序生成代码。它总是生成一个字(两个字节)的代码,而不是任意数量的字节。他们使用.word 5表示.word 0x0030的示例,这意味着“生成一个值为0030(十六进制)的单词。”这是一种汇编语言?这是今天生产中使用的吗?还是为学习目的而创建的语言?看起来这本书使用最多的语言是Pep\8。将它们输入汇编程序,然后查看hexdump可能会有所帮助。您可以使用
    nasm-fbin test.asm
    /
    hextump-C test
    (或者您最喜欢的hextump工具)。“bin”格式没有任何标题或结构:汇编程序只是将字节汇编到一个平面输出文件中。@PeterCordes这个问题基于Pep/8体系结构(不幸的是没有这样标记)。这个问题来自书中。我记得Pep/8是大端的(如果我错了,有人可以纠正我)。如果要使用NASM为
    .WORD
    生成输出,其字节将被反转,因此可能无法呈现OP所寻找的答案。@MichaelPetch我刚刚在GitHub上添加了一个指向该页面的链接以及下载页面。它来自计算机系统。第四版。
    BYTE 0xF8
    表示要在机器代码中生成一个值为0xF8的字节。0x表示后面的值采用十六进制表示法。因此,字面上的答案是
    F8
    。由于790上没有基本前缀,因此它被视为十进制。您需要将十进制转换为十六进制,即0x0316。在像Pep/8.Oh这样的大端体系结构中,机器语言生成的十六进制字节将是
    0316
    !好啊比书中的解释好多了!谢谢你,@MichaelPetch