平面二进制格式
回答
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