在汇编中增加字符值?

时间:2015-08-05 04:11:42

标签: assembly x86

我不知道该怎么做。例如,我的al注册表持有字母" a"这是0x41。如果我希望它转移到下一个角色,让我们说" b",我可以inc al吗?

2 个答案:

答案 0 :(得分:0)

您可以通过编写具有__asm {}块的函数在Visual Studio中检查此行为。

在此处查看更多内容:https://msdn.microsoft.com/en-us/library/45yd4tzz.aspx

函数的返回值将在eax寄存器中。

您可以尝试以下内容:

int myFunction(){
  __asm{
      mov eax,0;  //make sure eax is 0 since it will be the return value
      mov al,0x61;  //add "a"
      inc al;   //increment al, the return value is here in al(eax)
  }
}

据我记得(因为我很久以前使用过asm)是的,inc al会让你进入下一个角色,即" b"在你的情况下。

处理器不知道你是否有角色或参考,它只会看到数字。因此,您所做的只是增加一个数值。在这种情况下,char a 0x61 ,而char b 0x62 。 此外,处理器不知道有char,char是您选择打印的方式。

注意:您还可以使用它来隔离您遇到的其他一些问题,以便更轻松地进行调试。

您可以在MSDN文档中找到有关如何使用内联asm块获取函数参数的信息:https://msdn.microsoft.com/en-us/library/5sds75we.aspx

答案 1 :(得分:0)

是的,'a' + 1 == 'b'。这也适用于asm。