亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在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 關注
  • 704 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號