回答
從人的角度來看 - 如果你寫(例如在紙上)一個十六進制數 - 比如0xABCD - 這意味着你用位置系統表示一些值,基數爲16.現在你的思想不應該擔心endianess在所有。使用十六進制時,您總是會將此數字寫爲0xABCD,並且您的數字(A,B ..)必須始終寫在相同的位置以保持相同的值。
寫在紙上的數量不超過在任何彙編或C/C寫它太大的不同++,JAVA ....
例如 - 十六進制數0xABCD在一些語言:
的Java:
short s = 0xABCD;
C/C++:
short s = 0xABCD;
MASM/TASM:
s DW ABCDh
不管所使用的語言的 - 所有上述用途0xABCD其中,如果考慮無符號的值必須被理解爲(A * 4096 + B * 256 + C * 16 + d = 43981即。 A是MSB,D是LSB)。
如果你在字節級別工作,你可能會開始擔心endianess。正如你所看到的,我沒有談到如何在Java,C,C++,MASM和TASM中存儲0xABCD值。你使用你的號碼,就像你在紙上做的那樣,雖然它不存在字節度,但在字節級上,它可能是小端或大端,具體取決於你的機器,網絡接口等,雖然在你的程序中這仍然是0xABCD。
在你的情況下,如果你在'word'/'short'抽象層次上工作 - 不要擔心endianess。
更新:
如果要使用「byte'類指令這將取決於你的機器字節序(或網絡字節順序)來存儲0x0A0B值。假設你想把它存儲在內存中。
在小端機(X86爲例),你應該做的:
.byte 0xB
.byte 0xA
在大端機器,你應該做的:
.byte 0xA
.byte 0xB
很好的答案,除了你,我會爲你+1沒有真正回答他的問題。如果他在內存中有字節序列「0xa,0xb」,並且他想將該序列聲明爲一個字,他必須考慮字節序,並且必須知道主機如何存儲該字以匹配字節序列。 –
@CareyGregory:他的兩個問題都沒有意義,因此很難準確回答。首先** .word(和其他)命令是否改變字節順序?**這個問題本身是不正確的,除非他想問使用.word是否將0xA0B存儲爲0xA,0xB等等,第二**我應該使用.word 0xAB或.word 0xBA?**它依賴於他需要的數字;-) – Artur
我認爲他的問題是如何使用'.word'聲明覆制字節序列'0xa,0xb'。但我同意這個問題的寫作很差。 –
Endian-ness只描述字節存儲的順序。當你將存儲的字節看作單詞,雙字等時,它們總是以最重要的字節顯示。所以,在你的例子,如果你沒有
.word 0x0A0B
小端系統將這些字節存儲爲0B 0A。大端系統會將字節存儲爲0A 0B。但是,如果您將字節視爲單詞,則始終是0x0A0B,無論它們是如何存儲的。
在你上面的例子,如果你想放下用little endian系統中的兩個輪空,你希望確保他們在爲了0A 0B(例如,這就是你希望它們存儲在內存中)你應該使用
.byte 0xA
.byte 0xB
或
.word 0x0B0A
然而,這是奇怪的是,你會用字節順序這樣的擔心。通常,如果你正在定義單詞,那是因爲你想要稍後(作爲單詞)檢索內存來執行操作,因此它們存儲的方式(字節順序)應該不重要。
- 1. Leiningen彙編命令?
- 2. 6502彙編 - RTS命令和堆棧
- 3. 集成sbt DIST和彙編命令
- 4. Maven Shade彙編命令
- 5. 彙編x86命令行參數
- 6. 彙編命令組裝零頁
- 7. 彙編代碼:認識LEA命令
- 8. 如何使用gcc彙編命令(.type)?
- 9. 說「CMP命令是最長的彙編命令」是否正確?
- 10. Actionscript littleEndian to c#
- 11. 「set_w」和「set_sw」彙編語言命令有什麼作用?
- 12. 內聯彙編在C:INT命令和C變量
- 13. ARM彙編指令
- 14. MSP430彙編指令
- 15. smulwb彙編指令
- 16. gcc彙編和彙編
- 17. 爲什麼GCC添加彙編命令到我的內聯彙編?
- 18. 指令和彙編參考文獻
- 19. ARM彙編中的STR和LDR指令
- 20. 彙編:jmpf,TESTB和其他指令
- 21. 十六進制彙編編輯器命令入門?
- 22. MYSQL命令和編碼
- 23. JSch Esc命令和編碼
- 24. 彙編mips指令lbu
- 25. ARM彙編「retne」指令
- 26. 彙編比較指令
- 27. 彙編語言指令
- 28. PIC16F84A指令BSF - 彙編
- 29. 內聯彙編,out指令
- 30. pusha彙編語言指令
字狀指令會照顧你的字節序,但2字節0xA和0xB不會導致0xAB或0xBA值,而是0xB0A或0xA0B – Artur
低位地址 - > MSB,高位地址 - > LSB =低位末位 – Sam
低位地址 - > LSB,高位地址 - > MSB =大端位 – Sam