【问题标题】:NASM - Variable BasicsNASM - 变量基础
【发布时间】:2015-05-06 16:44:48
【问题描述】:

我知道你可以通过这样写在 nasm 中创建一个字符串:

mystring db 'Hello World'

但是如果我想移动一个字符,比如说 e,字符串中的第二个字符到 al 寄存器。我怎样才能做到这一点?我应该写吗

mov al, mystring+1

还是什么?以及如何制作一个 int 变量?我可以写吗:

myint db 4

【问题讨论】:

  • 您应该阅读您的 NASM 文档。但是整数变量将是 myint dw 4 用于“单词”或 myint dd 4 用于双字。 db 是一个定义 byte。并且mov al, mystring+1 尝试将mystring地址 的低字节加1 移动到al
  • @lurker 那我怎样才能给字节一个值呢?

标签: assembly nasm


【解决方案1】:

'mystring + 1'是字符串第二个字节的地址。

mov al, mystring + 1

将该地址(的最低有效字节)存储在 al 中。要表明您不想存储地址而是存储位于该地址的字节,请写下:

mov al, [mystring + 1]

要声明一个等于 42 的四字节整数,请使用:

myint dd 42

【讨论】:

  • 以及如何将值设置为整数?
  • 根据你的汇编风格,你也可以说mov al, byte ptr mystring+1
  • @DavidHoelzer OP 的问题是关于 NASM
  • @AntoineMathys 我认为您可以更具体地说明mov al, string + 1,明确指出它存储了 AL 中第二个字节的 截断地址
猜你喜欢
  • 2015-04-07
  • 2018-09-08
  • 2016-10-02
  • 1970-01-01
  • 2022-02-07
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多