⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nasm中文文档资料.htm

📁 NASM中文文档资料 目录详细介绍 第一章:简介 第二章:运行NASM 第三章:NASM语法介绍 第四章:NASM的预处理器 第五章:汇编方向性 第六章:输出格式 第七章
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    <TD vAlign=center 
      align=top>--&nbsp;&nbsp;作者:航天奇侠<BR>--&nbsp;&nbsp;发布时间:2004-7-1 
      11:03:41<BR><BR>--&nbsp;&nbsp;NASM中文文档资料<BR>
      <P align=center><B>NASM中文文档资料</B></P>
      <P>剑雨销香 CNIDP组织 联合制作!</P>
      <P>目录详细介绍 </P>
      <P>第一章:简介 </P>
      <P>第二章:运行NASM </P>
      <P>第三章:NASM语法介绍 </P>
      <P>第四章:NASM的预处理器 </P>
      <P>第五章:汇编方向性 </P>
      <P>第六章:输出格式 </P>
      <P>第七章:写16位代码(DOS,Windows 3/3.1) </P>
      <P>第八章:写32位代码(Unix,Win32,DJGPP) </P>
      <P>第九章:16位与32位混和编程 </P>
      <P>第十章:问题解答 </P>
      <P>---------------- Copyright (c) 2003 CNIDP 剑雨销香 all rights reserved 
      ---------------- </P>
      <P><FONT color=#ff0000>本来我们也开始翻译这个,想不到已经有人翻译好了,衷心感谢那些翻译的人!</FONT></P>
      <HR>
    </TD></TR><!--printpage.asp##{$bbslist}循环部分-->
  <TR>
    <TD vAlign=center 
      align=top>--&nbsp;&nbsp;作者:航天奇侠<BR>--&nbsp;&nbsp;发布时间:2004-7-1 
      11:04:28<BR><BR>--&nbsp;&nbsp;<BR>nasm网际编译器手册:<BR>此手册为NASM,网际汇编器:一个目标为Intelx86系列处理器,开放源码的编译器。<BR>第一章:简介<BR>1.1节 
      什么是NASM?<BR>1.1.1节 为什么用另外的编译器?<BR>1.1.2节 许可证<BR>1.2节 联络方式<BR>1.3节 
      安装<BR>1.3.1节 在MS_DOS或Windows下安装NASM<BR>1.3.2节 
      在Unix下安装NASM<BR><BR>第二章:运行NASM<BR>第2.1节 
      :那NASM命令行参数<BR>第2.1.1节:-o参数:指定输出文件名<BR>第2.1.2节:-f参数:指定输出文件格式<BR>第2.1.3节:-l参数:输出列表文件<BR>第2.1.4节:-E参数:输出错误信息到文件中<BR>第2.1.5节:-s参数:输出错误信息到屏幕<BR>第2.1.6节:-i参数:指定头文件路径<BR>第2.1.7节:-p参数:预编译头文件<BR>第2.1.8节:-d参数:预编译宏<BR>第2.1.9节:-u参数:取消宏定义<BR>第2.1.10节:-e参数:只预处理<BR>第2.1.11节:-a参数:根本不预处理<BR>第2.1.12节:-w参数:允许或禁止汇编警告信息<BR>第2.1.13节:NASM的环境变量<BR>第2.2节 
      对于MASM用户的快速入门<BR>第2.2.1节 NASM是区分大小写的<BR>第2.2.2节 NASM对内存操作需要方括号<BR>第2.2.3节 
      NASM不存储存变量类型<BR>第2.2.4节 NASM不用ASSUME关键字<BR>第2.2.5节 NASM不支持内存模型<BR>第2.2.6节 
      浮点数方面的区别<BR>第2.2.7节 其它区别 <BR>第三章<BR>第3.1节 NASM源码行号的分布<BR>第3.2节 
      伪指令<BR>第3.2.1节 DB及相关指令:声明初始化数据<BR>第3.2.2节 RESB及相关指令:声明未初始化数据<BR>第3.2.3节 
      INCBIN:包含外部二进制文件<BR>第3.2.4节 EQU:定义常量<BR>第3.2.5节 TIMES:重复指令或数据<BR>第3.3节 
      有效地址<BR>第3.4节 常量<BR>第3.4.1节 数字常量<BR>第3.4.2节 字符常量<BR>第3.4.3节 
      字符串常量<BR>第3.4.4节 浮点数常量<BR>第3.5节 表达式<BR>第3.5.1节 |:位运算符或<BR>第3.5.2节 
      ^位运算符异或<BR>第3.5.3节 &amp;位运算符与<BR>第3.5.4节 
      &lt;&lt;和&gt;&gt;:位移动操作符<BR>第3.5.5节 +和-:加和减操作符<BR>第3.5.6节 
      *,/,//,%和%%:乘法与除法操作<BR>第3.5.7节 一元操作符:+,-,~和SEG<BR>第3.6节 SEG和WRT<BR>第3.7节 
      临界资源表达式<BR>第3.8节 本地变量<BR>第4章 NASM的预处理器<BR>第4.1节 单行的宏操作<BR>第4.1.1节 
      正常处理方式:%define<BR>第4.1.2节 立即处理的单行宏:%xdefine<BR>第4.1.3节 
      未定义的宏:%undef<BR>第4.1.4节 预处理变量:%assign<BR>第4.2节 多行宏的操作 <BR>第4.2.1节 
      重载多行宏:%macro<BR>第4.2.2节 本地宏标识<BR>第4.2.3节 贪婪的宏参数<BR>第4.2.4节 
      默认宏参数<BR>第4.2.5节 %0:宏参数记数<BR>第4.2.6节 %rotate:旋转宏参数<BR>第4.2.7节 
      控制台的宏参数<BR>第4.2.8节 用宏参数做为条件语句<BR>第4.2.9节 禁止列表展开<BR>第4.3节 条件汇编<BR>第4.3.1节 
      %ifdef:测试单行宏的存在性<BR>第4.3.2节 %ifctx:测试上下相连的堆栈<BR>第4.3.3节 
      %if:测试任意数字表达式<BR>第4.3.4节 %ifidn和%ifidni:测试试验性文本标记<BR>第4.3.5节 
      %ifid,%ifnum,%ifstr:测试标记类型<BR>第4.3.6节 %error:报告用户自定义的错误<BR>第4.4节 
      预处理循环:%rep<BR>第4.5节 包含其它文件<BR>第4.6节 上下相关的堆栈<BR>第4.6.1节 
      %push和%pop:创建和移走上下环境<BR>第4.6.2节 前后相关的本地变量<BR>第4.6.3节 前后相关的单行宏<BR>第4.6.4节 
      %repl:重命名一个前后相关环境<BR>第4.6.5节 用前后相关堆栈的一个例子:IFs块<BR>第4.7节 标准宏<BR>第4.7.1节 
      _NASM_MAJOR_和_NASM_MINOR_:NASM版本信息<BR>第4.7.2节 
      _FLLE_和_LINE_:文件名和行号<BR>第4.7.3节 STRUC 与ENDSTRUC:定义结构数据类型<BR>第4.7.4节 
      ISTRUC,AT 与IEND :定义结构的变量<BR>第4.7.5节 ALIGN 和ALIGNB:数据对齐方式<BR>第5章 
      汇编方向性<BR>第5.1节 BITS:指定目标处理器模式<BR>第5.2节 SECTION或SEGMENT:改变和定义段<BR>第5.2.1节 
      _SECT_宏<BR>第5.3节 ABSOLUTE:定义绝对标号<BR>第5.4节 EXTERN:从其它模块导入符号<BR>第5.5节 
      GLOBAL:向其它模块输入信息<BR>第5.6节 COMMON:定义通用数据块<BR><BR>第6章 输出格式<BR>第6.1节 
      bin:平坦二进制输出<BR>第6.1.1节 ORG:二进制文件源码<BR>第6.1.2节 bin扩展到SECTION方向<BR>第6.2节 
      obj:微软的OMF目标文件格式<BR>第6.2.1节 obj扩展到SECTION方向<BR>第6.2.2节 
      GROUP:定义段的组信息<BR>第6.2.3节 UPPERCASE:禁止输出时大小区别<BR>第6.2.4节 
      IMPORT:导入DLL符号<BR>第6.2.5节 EXPORT:导出DLL符号<BR>第6.2.6节 
      ..start:定义程序输入点位置<BR>第6.2.7节 obj 扩展到EXTERN 方向<BR>第6.2.8节 
      obj扩展到COMMON方向<BR>第6.3节 win32:微软Win32目标文件<BR>第6.3.1节 
      win32:扩展到SECTION方向<BR>第6.4节 coff:通用目标文件格式<BR>第6.5节 elf:Linux 
      ELF目标文件<BR>第6.5.1节 elf扩展到SECTION方向<BR>第6.5.2节 
      位置独立代码:elf指定符号和WRT<BR>第6.5.3节 elf扩展到GLOBAL方向<BR>第6.5.4节 elf扩展到COMMON方向 
      <BR>第6.6节 aout:Linux a.out目标文件<BR>第6.7节 aoutb:NetBSD/FreeBSD/OpenBSD 
      a.out目标文件<BR>第6.8节 as86:Linux as86 目标文件<BR>第6.9节 
      rdf:重定位动态目标文件格式<BR>第6.9.1节 需求库:LIBERARY方向<BR>第6.10节 dbg:Debuging 
      格式<BR><BR>第7章 写16位代码(DOS,Windows 3/3.1)<BR>第7.1节 生成.EXE文件<BR>第7.1.1节 
      用obj格式生成.exe文件<BR>第7.1.2节 用bin格式生成.exe文件<BR>第7.2节 生成.com文件<BR>第7.2.1节 
      用bin格式生成.com文件<BR>第7.2.2节 用obj格式生成.com文件<BR>第7.3节 生成.sys文件<BR>第7.4节 
      与16位C程序的接口<BR>第7.4.1节 外部符号名<BR>第7.4.2节 内存模型<BR>第7.4.3节 
      函数定义与函数调用<BR>第7.4.4节 数据项的访问<BR>第7.4.5节 c16.mac:16位C接口的帮助宏<BR>第7.5节 Borland 
      Pascal程序接口<BR>第7.5.1节 Pascal调用转换<BR>第7.5.2节 Borland Pascal段命名限制<BR>第7.5.3节 
      在Pascal程序中用c16.mac<BR>第8章 写32位代码(Unix,Win32,DJGPP)<BR>第8.1节 
      32位C语言接口<BR>第8.1.1节 外部符号名<BR>第8.1.2节 函数定义与函数调用<BR>第8.1.3节 
      数据项的访问<BR>第8.1.4节 c32.mac:32位C接口的帮助宏<BR>第8.2节 
      写NetBSD/FreeBSD/OpenBSD和Linux/ELF共享库<BR>第8.2.1节 包含GOT地址<BR>第8.2.2节 
      寻找程序本地数据项<BR>第8.2.3节 寻找外部和通用数据项<BR>第8.2.4节 导出符号到库用户<BR>第8.2.5节 
      在库外部调用过程<BR>第8.2.6节 生成库文件<BR><BR>第9章16位与32位混和编程<BR>第9.1节 混和尺寸的跳转<BR>第9.2节 
      不同尺寸段间的寻址<BR>第9.3节 其它的混和尺寸指令<BR><BR>第10章 问题解答<BR>第10.1节 常见问题<BR>第10.1.1节 
      NASM 生成无效的代码<BR>第10.1.2节 我程序中跳转出界了<BR>第10.1.3节 ORG不能工作了<BR>第10.1.4节 TIMES 
      不能工作了<BR>第10.2节 Bugs程序中的问题<BR>
      <HR>
    </TD></TR><!--printpage.asp##{$bbslist}循环部分-->
  <TR>
    <TD vAlign=center 
      align=top>--&nbsp;&nbsp;作者:航天奇侠<BR>--&nbsp;&nbsp;发布时间:2004-7-1 
      11:06:03<BR><BR>--&nbsp;&nbsp;<BR>
      <P><B>第1章 简介</B></P>
      <P><B></B><B>1.1 
      什么是NASM?</B><BR>网际汇编器,NASM是一个模块化和便携性的80x86汇编编译器。它支持多种目标格式包含Linux的a.out<BR>,ELF,NetBSD/FreeBSD,COFF,Microsoft的16位OBJ和Win32。 
      它输出平坦模式的二进制文件。 <BR>它在语法设计上简单且容易理解,和Intel的相似但没有那么复杂。 它支持Pentium,P6和MMX操作码, 
      <BR>并且宏操作方面兼容。</P>
      <P><BR><B>1.1.1 
      为什么不用其它编译器?</B><BR>网际编译器是在基于comp.lang.asm.x86(也可能是alt.lang.asm我记不清了)上的思想成长<BR>起来的。它在本质上不象周围很好的自由x86系列编译器, 
      并且应有人写一个。 <BR>a86是比较好的, 但并不免费,通常你不能得到任何32位兼容的除非你付费。 它只支持DOS。 <BR>gas是免费的, 
      并且适应于DOS和Unix, 但它不是很好用, 由于它被设计成相对于gcc的后端, <BR>所以必须给它输入一些正确的密码。 
      导致它的错误检查是很小。 因此, 从这方面来看待和<BR>真正写些代码来说,它的语法是很难懂的。 
      另外你不能用它写16位代码(正常情况下)。<BR>as86是Linux专用的, 并且有很多文档(至少对我来说)。<BR>MASM不是很好用, 
      它太贵了, 并且只能在DOS下运行。<BR>TASM好一些, 但仍在和MASM相兼容, 意味着将会有不计其数的指令的官文。 
      它的语法本质上<BR>和MASM相同。 但它也很贵。 只在DOS下运行。<BR>因此, 
      这里为了编码的快乐,用NASM。现在它仍然处理试验阶段-我不能保证它这些编译器好,但请向我<BR>们报告程序中的问题,修改意见及帮助信息, 
      和任何你现有的信息。 (感谢很多人会这样做, 你知道<BR>你也会) , 我们将不断的发展它。 </P>
      <P><B>1.1.2&nbsp;&nbsp;软件许可协议</B><BR>请查看许可协议文件,做为NASM描述档案的一部分提供, 
      你可以在许可协议下使用NASM。 </P>
      <P><B>1.2 联系方式</B><BR>当前版本的NASM(从0.98)是由H.Peter 
      Anvin(hpa@zytor.com)维护的。<BR>如果你想报告任何程序问题, 
      请先读一下第10.2节.<BR>NASM有一个网页为:htt//www.cryogen.com/Nasm.<BR>原始作者可邮寄电子信箱: 
      jules@earthcorp.com 
      和anakin@pobox.com<BR><BR>最新版本的NASM已经上传到ftp.kernel.org,sunsite.unc.edu,ftp.simtel.net和ftp.coast.net.<BR>通告将发布在 
      comp.lang.asm.x86,alt.lang.asm,comp.os.linux.announce和<BR>comp.archives.msdos.announce(最后一个将自动传到ftp.simtel.net上)<BR>如果你没有新闻组可以访问,或者更喜欢用电子邮件进行交流,你可以发送一行包含<BR>subscribe 
      nasm-announce的内容的邮件到majordomo@linux.kernel.org.<BR>如果你想了解NASM 
      beta版的有关信息,请发送一封含有subscribe nasm-beta信息的电子邮件到<BR><A 
      href="http://www.pop417.com/bbs/mailtmajordomo@linux.kernel.org" 
      target=_blank>http://www.pop417.com/bbs/mailtmajordomo@linux.kernel.org</A>.</P>
      <P><B>1.3安装</B></P><B>
      <P><BR>1.3.1 在MS_DOS 
      或Windows下安装NASM<BR></B>当你得到NASM的DOS版本的文件时,nasmXXX.zip(XXX表示NASM的版本号),将它解压到当前目录下<BR>(例如:C:\\NASM)<BR>这个文件包含4个执行文件:NASM的执行文件为:nasm.exe和nasmw.exe和NDISASM的执行文件:<BR>ndisasm.exe,ndisasmw.exe.这个文件夹里文件名后有w为一个win32可执行文件,被设计在windows95<BR>或windows 
      NT下运行,另外的是16位的DOS执行程序。<BR>NASM文件要运行它的自运行文件,因此拷贝(至少)nasm.exe和nasmw.exe的一个到你的目录下,或<BR>选择一个编辑autoexec.bat文件将nasm的路径加到你的PATH目录上。 
      (如果你要节省空间可以删除它);<BR>然而,你可以保留这个文件或测试程序。<BR>如果你下载了DOS的源码文件包, 
      nasmXXXs.zip,nasm目录将包含完事的NASM源代码,你可以选择一个<BR>MAKEFILE(推荐)来重新编译NASM,README文件列出了这些MAKEFILE之间的不同和用什么编译程序编译<BR>的。 
      注意源文件:insnsa.c,insnsd.c,insnsi.h和insnsn.c是自动从Perl角本文件:<BR>主指令列表文件insns.dat生成的。 
      <BR>文件macros.c是通过另一个Perl角本从standard.mac生成的。<BR>虽然NASM 
      0.98的发布包含这些生成文件,但如果你改变了insns.dat,standard.mac或相关文档,<BR>你还是需要重新编译它。(因此你需要一个Perl解释器),也许以后的源码发布文档根本就不包含<BR>这些文件。Perl在不同平台(包含DOS和Windows)的输出变化,在<A 
      href="http://www.cpan.org/" 
target=_blank>http://www.cpan.org/</A>可以找到。</P>
      <P><B>1.3.2 
      在Unix下安装NASM</B><BR>一旦你得到NASM的Unix源码文件:nasm-X.XX.tar.gz(这里X.XX表示档案中包含NASM的版本号),你<BR>就可以把它解压到如:/usr/local/src的目录下,这个档案一旦解压会生成它自己的子目录:nasm-X.XX.<BR>NASM是一个自配置压缩包:你解压后,用cd命令到它解压的目录下,然后用type 
      ./configure命令,<BR>这个shell角本将会找到最好的c编译器来编译NASM并建立相应的Makefiles文件。<BR>一旦NASM自动配置后,你就可以用命令type 
      make来编译nasm和ndisasm二进制文件,然后用命令install<BR>来将它们安装到/usr/loacl/bin下,将nasm.1和ndisasm.1的帮助文件安装到/usr/local/man/man1目录<BR>下。对于有选择的,你可以给出如--prefix来配置角本(关于安装的详细信息见INSTALL文件),或者安装<BR>你自己的程序。<BR>NASM也提供一些关于RDOFF自定义目标文件格式的工具,这些在NASM压缩包的rdoff子目录下,如果你想用<BR>他们的话。 
      <BR>如果NASM自配置失败的话,你可以用Unix的失败后退makefile文件Makefile.unx来编译它。对Makefile<BR>文件拷贝或重命名文件, 
      并试关重新编译。在rdoff子目录下也有一个Makefile.unx文件。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -