为了账号安全,请及时绑定邮箱和手机立即绑定

如何在x86汇编编程中表示十六进制值(例如FFFFFFBB)?

如何在x86汇编编程中表示十六进制值(例如FFFFFFBB)?

FFIVE 2019-12-30 00:00:38
我正在学习x86内联汇编编程。我想写mov ecx, FFFFFFBB,但是编译器无法识别。这样的十六进制数字应该如何用内联汇编代码编写?
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这取决于您的汇编程序的风格。

  • AT&T: movl $0xFFFFFFBB, %ecx

  • 英特尔: mov ecx, 0FFFFFFBBh

FYI,AT&T语法由GNU Assembler之类的汇编器使用,而NASM和其他大多数语言则使用Intel的汇编器



查看完整回答
反对 回复 2020-01-06
?
米脂

TA贡献1836条经验 获得超3个赞

请参阅x86标签Wiki,以获取到汇编器手册的链接,以及许多其他内容。


不同的x86汇编器对十六进制常量支持以下一种或两种语法:


0xDEADBEEF:NASM(和兼容),GNUas,FASM,MSVC内联汇编(但不是 MASM)

0DEADBEEFh:NASM(和兼容),FASM,MASM和TASM。

仅限DOS / Windows的汇编器通常仅支持...h语法。

便携式汇编程序通常支持0x...语法,或两者都支持。


请注意0开头:数字常量始终必须以数字开头,以将其与符号名称区分开。


还要注意,汇编器(如C编译器)可以在汇编时评估表达式,因此可以编写foo & 0xF(如果foo是用foo equ 0xABC或定义的汇编器常量)。您甚至可以从标签中添加/减去标签(它们是链接时常量,而不是汇编时),因此诸如此类的东西mov eax, OFFSET label - 20仍会汇编为mov r32, imm32。


从NASM手册的常量部分:


一些示例(都产生完全相同的代码):


    mov     ax,200          ; decimal 

    mov     ax,0200         ; still decimal 

    mov     ax,0200d        ; explicitly decimal 

    mov     ax,0d200        ; also decimal 

    mov     ax,0c8h         ; hex 

    mov     ax,$0c8         ; hex again: the 0 is required 

    mov     ax,0xc8         ; hex yet again 

    mov     ax,0hc8         ; still hex 

    mov     ax,310q         ; octal 

    mov     ax,310o         ; octal again 

    mov     ax,0o310        ; octal yet again 

    mov     ax,0q310        ; octal yet again 

    mov     ax,11001000b    ; binary 

    mov     ax,1100_1000b   ; same binary constant 

    mov     ax,1100_1000y   ; same binary constant once more 

    mov     ax,0b1100_1000  ; same binary constant yet again 

    mov     ax,0y1100_1000  ; same binary constant yet again

大多数汇编器还允许使用字符文字,例如'0'ASCII零。甚至'0123'对于打包成32位整数的四个ASCII数字。有些支持转义序列(\n'),有些则支持(例如YASM)。NASM仅支持反引号内的转义序列,而不支持双引号。


其他平台:


ARM汇编器:0xDEADBEEF有效。


我认为0x是典型的。0 ... h主要是DOS的东西。



查看完整回答
反对 回复 2020-01-06
?
皈依舞

TA贡献1851条经验 获得超3个赞

它取决于您的汇编程序,但是十六进制文字的常见表示法是0FFFFFFBBh

查看完整回答
反对 回复 2020-01-06
  • 3 回答
  • 0 关注
  • 561 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信