平面二進制格式
回答
bin
不保留任何結構,也不段。所有的代碼和數據都是一樣的,沒有特殊的頭文件或描述符。 .bss內容將被忽略,因爲bin
和resb/resw/resd/etc應該用作佔位符。
示例代碼:
bits 16
section .text
org 100h
; copy hw[] to copy[]
mov si, hw
mov di, copy
mov cx, 15
cld
rep movsb
; print copy[]
mov dx, copy
mov ah, 9
int 21h
ret
section .bss
blah db "abcdef" ; data will be ignored, nasm will warn here
copy resb 15 ; reserve 15 bytes for the text string
section .data
hw db "Hello Wrold!",13,10,"$"
編譯:
C:\>nasm nsm.asm -fbin -onsm.com
nsm.asm:20: warning: attempt to initialise memory in a nobits section: ignored
Disassemblying:
C:\>ndisasm -b 16 -o 100h nsm.com
00000100 BE1401 mov si,0x114
00000103 BF3401 mov di,0x134
00000106 B90F00 mov cx,0xf
00000109 FC cld
0000010A F3A4 rep movsb
0000010C BA3401 mov dx,0x134
0000010F B409 mov ah,0x9
00000111 CD21 int 0x21
00000113 C3 ret
00000114 48 dec ax ; this is hw db "Hello Wrold!",13,10,"$"
00000115 656C gs insb
00000117 6C insb
00000118 6F outsw
00000119 205772 and [bx+0x72],dl
0000011C 6F outsw
0000011D 6C insb
0000011E 64210D and [fs:di],cx
00000121 0A24 or ah,[si]
運行在Windows XP(或DOS):
C:\>nsm.com
Hello Wrold!
操作系統預計DOS .COM風格的程序沒有特殊的結構,文件的第一個字節包含必須執行的第一條指令。
有關詳細信息,請參閱NASM文檔。我相信你可以在那裏找到你所有問題的答案。
謝謝!這真的解決了問題。但是這是否意味着與BIN的段寄存器純粹是爲了尋址(實模式?)而不是段控制(保護模式)? – jimmyzmli
@ user982401:Nasm的二進制格式的段/段幾乎沒用,你可以將它們放在源文件中,但是在輸出二進制文件中幾乎沒有它們的蹤跡。如果您將源文件組合爲其他輸出格式,例如obj,coff/aout,elf,win32,那麼這些部分/段將使其進入輸出文件,並且鏈接器將能夠與他們做一些有意義的工作(爲OS創建一個合適的可執行文件,並標記爲代碼(可執行文件),數據(不可執行文件)等)。只有obj格式的段/段代表x86段。 –
@user:在真實模式下,分段僅用於地址,它們實際上是一種黑客,允許在16位機器上訪問1MB,否則只能訪問64KB。 – ninjalj
- 1. 偏移二進制格式
- 2. SystemML二進制格式
- 3. 瞭解二進制xls文件格式
- 4. 格式化二進制數字
- 5. osx下的二進制文件格式
- 6. JavaME的最佳二進制XML格式
- 7. 以二進制格式返回結果
- 8. 文件和二進制格式化器
- 9. 關於FBX二進制文件格式
- 10. 用二進制格式寫文件
- 11. 使用python解析二進制格式
- 12. 解密文件的二進制格式
- 13. 二進制加法IEEE格式
- 14. C++如何以二進制格式
- 15. 格式化Scala中的二進制值
- 16. Debian包括二進制文件格式
- 17. hadoop輸入格式二進制或ASCII
- 18. 解碼NovaPack(NPK)二進制格式
- 19. 反向索引二進制格式
- 20. 以二進制格式顯示文件
- 21. 不明白二進制格式
- 22. 在python轉換的HTML頁面,以二進制格式
- 23. 在十六進制格式和二進制格式之間轉換字符串
- 24. 蟒字面二進制進制轉換
- 25. 十進制轉換爲二進制格式轉換
- 26. 什麼是這種格式?二進制?十六進制?
- 27. 十進制轉換爲二進制,但在8位格式
- 28. 如何在Python中以二進制格式讀取二進制文件?
- 29. 有關'衝突'二進制格式的快速二進制讀寫問題
- 30. 基於二進制格式文檔訪問特定的二進制信息
平面二進制格式的目的不是沒有任何這種功能,並完全避免鏈接加載步驟?我認爲執行只是從二進制文件的字節'0'開始,並且從那裏你自己。 –
是的,我意識到這是這樣的。但我只是想知道如何放置不同的段,以及如果BSS段實際上在bin文件中填充了零。 – jimmyzmli