nasm简单用法和dd指令解析
nasm Netwide Assembler (简称 NASM)是一款基于x86架构的汇编与反汇编软件。它可以用来编写16位(8086、80286等)、32位(IA-32)和64位(x86_64)的程序。 NASM被认为是Linux平台上最受欢迎的汇编工具之一。
用于将汇编程序编译成二进制文件。
nasm -f 〈filename> [-o ]
以上是nasm 的基本用法, 对咱们来说, 够用了。 注意我说的是 “基本”, 还有好多其他参数呢, 不过
咱们用不着。 甚至, 大多数时候连-f都不用呢。
-o 就是指定输出可执行文件的名称。
查看一下nsam的帮助, ok, 执行mannasm 回车, 输出的信息、太多了, 我们只看-f的说明就就行了。
-f format
Specifies the output file format
To see a list of valid output formats, use the -hf option.
Linux dd 命令用于读取、转换并输出数据。
dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=<关键字>,关键字可以有以下11种:
conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swap:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
–help:显示帮助信息
–version:显示版本信息
if=E工LE .
read from FILE instead of stdin′
此项是指定要读取的文件。
of=官工LB _
write to FILE instead Of .st’dout
此项是指定把数据输出到哪个文件。`
bS=BYTEs′
read and write BYTES bytes at a time (also see ibs=, obS=)
此项指定块的大小, dd是以块为单位来进行I0操作的, 得告诉人家块是多大字节。 此项是统计配置
了输入块大小ibs 和输出块大小obs。 这两个可以单独配I。
count=BLOCKS
copy only BLOCKS input blocks
此项是指定拷贝的块数。
′ seek=BLOCKS
skip BLOCKS obs-sized blocks at start of output
此项是指定当我们把块输出到文〈牛时想要跳过多少个块
convert the file as per the comma separated symbol list
此项是指定如何转换文件。
_ append append {node (m卓kes sense only for output; conv=notrunc suggested)
这句话建议在追加数据时, conv最好用 notrunc方式也就是不打断文件.
齐了, dd 的介绍就到这了, 赶紧试验一下这个神奇的工具吧
dd if=/your_path/mbr. bin of=/your_path/bochs/hd60.img bs=512 count=1 conv=notrunc