汇编中有多少字节.fill .long意味着什么?

时间:2017-10-10 07:34:54

标签: assembly binaryfiles data-conversion

我有来自github https://github.com/akatrevorjay/edid-generator

的脚本

是用汇编编写的,现在我想用这个Edid Stuff做更多的动作,因为我从来没有用Python编写程序集。 为此,我需要知道多少字节

  1. .ascii
  2. .fill 7,2,0x0101
  3. .long
  4. .data
  5. 通常必须在python中“转换”它。

    如果有帮助,这里是每个代码的完整代码行:

    start1:         .ascii  "Linux #0"
                    .fill   7,2,0x0101      /* Unused */
    serial_number:  .long   SERIAL
                    .data (Dont have more here)
    

2 个答案:

答案 0 :(得分:2)

这些很简单

  • .long value放置一个长值(4个字节)
  • .word value放置一个字值(2个字节)
  • .byte value放置一个字节值(1个字节)
  • .ascii "text"只是放置没有NUL终止符的文本字节

实施例

.ascii "HELLO"

相同
.byte 'H'
.byte 'E'
.byte 'L'
.byte 'L'
.byte 'O'

相同
.byte 'H', 'E', 'L', 'L', 'O'

这个不太明显:

.fill repeat , size , value

它会将repeat timesvalue放入size

的大小

<强>实施例

.fill 3, 2, 0xab

相同

.word 0xab, 0xab, 0xab

.fill 3, 1, 0xab

相同

.byte 0xab, 0xab, 0xab

完整示例:

.ascii "HELLO"
.fill 3,2,0xab
.word 5
.long 6

这将在一个小端系统上为你提供内存中的这些字节:

'H', 'E', 'L', 'L', 'O', 0, 0xab, 0, 0xab, 0, 0xab, 0, 5,   0, 0, 0, 6
|   .ASCII              |  .FILL                   | .WORD |   .LONG  |

答案 1 :(得分:1)

我到目前为止发现的是,.long X表示32位 - 所以我可以将其转换为4字节并获得相同的结果,对吧?

在这里找到: What .long 0xXXXXXXXX stands for in asm?

我看到的另一件事是,例如.fill 50,0xAB,1定义了包含0xAB的50个字节,但“1”在这里是什么意思?