昼黑时代 發表於 2020-4-19 09:39:00

汇编语言 基于x86处理器 第三章

<p><span style="font-family: 宋体">第一个汇编语言程序</span>:</p>
<p>Main PROC</p>
<p>  Mov eax,5</p>
<p>  Add &nbsp; eax,6</p>
<p>&nbsp;</p>
<p>  INVOKE ExitProcess,0</p>
<p>Main ENDP</p>
<p><span style="font-family: 宋体">加上变量</span>: ;<span style="font-family: 宋体">程序有代码段,数据段,还会有堆栈段</span></p>
<p>.data                 ;.data<span style="font-family: 宋体">与</span><span style="font-family: Calibri">.code</span><span style="font-family: 宋体">为</span><span style="font-family: 宋体">段(和PE文件格式有点关系)</span></p>
<p>sum DWORD 0 ;<span style="font-family: 宋体">变量定义</span></p>
<p>.code</p>
<p>Main PROC</p>
<p>  Mov eax,5</p>
<p>  Add eax,6</p>
<p>  Mov sum,eax</p>
<p>&nbsp;</p>
<p>  INVOKE ExitProcess,0</p>
<p>Main ENDP</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">算术优先级</span>:</p>
<p>(), <span style="font-family: 宋体">一元</span>+-, */, MOD, +- ;<span style="font-family: 宋体">一元加减指 </span><span style="font-family: Calibri">-5,+9</span><span style="font-family: 宋体">此类</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">常数声名:</span></p>
<p>[ { + | - } ] digits [ radix ] ;radix<span style="font-family: 宋体">指进制符号</span><span style="font-family: Calibri">: h,q/o,d,b </span><span style="font-family: 宋体">默认下为十进制</span></p>
<p><span style="font-family: 宋体">比如</span>:</p>
<p>  26d</p>
<p>  11010011b</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">实数常数声名</span>:</p>
<p>Sign { + | - }</p>
<p>Exponent E [ { + | - } ] interger</p>
<p><span style="font-family: 宋体">比如</span>:1.0&nbsp; +3.0 -44.2E+05 26.E5</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">字符串常量声名:</span></p>
<p>‘ABC’ ‘X’ “4096” “This isn’t a test”</p>
<p><span style="font-family: 宋体">保留字</span>≈关键字</p>
<p><span style="font-family: 宋体">标识符:</span></p>
<p align="justify"><span style="font-family: 宋体">例如上文中的</span>sum<span style="font-family: 宋体">变量 或是</span>(loop)<span style="font-family: 宋体">:</span></p>
<p align="justify">  loop:</p>
<p align="justify">    jmp loop</p>
<p align="justify">&nbsp;</p>
<p align="justify"><span style="font-family: 宋体">伪指令不作为指令执行,用于定义变量、宏和子程序等操作</span>(<span style="font-family: 宋体">下文伪指令 与 指令</span><span style="font-family: Calibri">)</span></p>
<p align="justify">Cont DWORD 26</p>
<p align="justify">Mov eax, Cont</p>
<p align="justify">.386               ;<span style="font-family: 宋体">表示这是一个</span><span style="font-family: Calibri">32</span><span style="font-family: 宋体">位程序</span></p>
<p align="justify">.model flat,stdcall         ;<span style="font-family: 宋体">选择程序的内存模式(</span><span style="font-family: Calibri">flat</span><span style="font-family: 宋体">),并确定了子程序的调用规范(</span><span style="font-family: Calibri">stdcall</span><span style="font-family: 宋体">)</span></p>
<p align="justify">                ;<span style="font-family: 宋体">其原因是</span><span style="font-family: Calibri">32</span><span style="font-family: 宋体">位</span><span style="font-family: Calibri">Windows</span><span style="font-family: 宋体">服务要求使用</span><span style="font-family: Calibri">stdcall</span><span style="font-family: 宋体">规范</span></p>
<p align="justify">.stack 4096           &nbsp; ;<span style="font-family: 宋体">为运行时堆栈保留了</span><span style="font-family: Calibri">4096</span><span style="font-family: 宋体">字节的存储空间,每个程序都必须有</span></p>
<p align="justify">Invoke              ;<span style="font-family: 宋体">比</span><span style="font-family: Calibri">call</span><span style="font-family: 宋体">好用,会帮你检查参数</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">参数用‘</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">’隔开</span></p>
<p align="justify">Invoke expression[ ,arguments ]</p>
<p align="justify">&nbsp;</p>
<p align="justify"><span style="font-family: 宋体">定义段</span>:</p>
<p align="justify">.data .code .stack 100h</p>
<p align="justify"><span style="font-family: 宋体">指令:</span></p>
<p align="justify"><span style="font-family: 宋体">四个组成成分:标号(可选)</span>,<span style="font-family: 宋体">指令助记符(必须)</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">操作数(通常必须)</span><span style="font-family: Calibri">,</span><span style="font-family: 宋体">注释(可选)</span></p>
<p align="justify">  [ label: ] mnemonic [ operands ] [ ;comment ]</p>
<p align="justify"><span style="font-family: 宋体">汇编器为每个标号分配一个数字地址。可以在一个标号后面定义多个数据项。在下面的例子中,</span>array<span style="font-family: 宋体">定义了第一个数字(</span><span style="font-family: Calibri">1024</span><span style="font-family: 宋体">)的位置,其他数字在内存中的位置紧随其后:</span></p>
<p align="justify">  Array DWORD 1024, 2048</p>
<p align="justify">  DWORD 4096, 8192</p>
<p align="justify"><span style="font-family: 宋体">代码标号可以与指令在同一行上,也可以自己独立一行</span>:</p>
<p align="justify">L1: mov ax,bx</p>
<p align="justify">L2:<span style="font-family: 宋体">…………</span></p>
<p align="justify"><span style="font-family: 宋体">注释:</span></p>
<p align="justify"><span style="font-family: 宋体">单行注释:</span> ;XXXX</p>
<p align="justify"><span style="font-family: 宋体">块注释</span>(<span style="font-family: 宋体">使用</span><span style="font-family: Calibri">COMMENT</span><span style="font-family: 宋体">伪指令和一个用户定义的符号开始,到再次出现用户定义符号</span><span style="font-family: Calibri">)</span><span style="font-family: 宋体">:</span></p>
<p align="justify">COMMENT !</p>
<p align="justify">    This line is a comment.</p>
<p align="justify">    This line is also a comment.</p>
<p align="justify">  !</p>
<p align="justify"><span style="font-family: 宋体">空指令:</span>NOP</p>
<p align="justify"><strong><span style="font-family: 宋体">示例</span>:</strong></p>
<p align="justify">.386</p>
<p align="justify">.model flat,stdcall                  &nbsp;;32<span style="font-family: 宋体">位程序总是使用平面</span><span style="font-family: Calibri">(flat)</span><span style="font-family: 宋体">模式</span></p>
<p align="justify">.stack 4096</p>
<p align="justify">ExitProcess PROTO, dwExitCode:DWORD       ;<span style="font-family: 宋体">声明了</span><span style="font-family: Calibri">ExitProcess</span><span style="font-family: 宋体">函数的原型</span></p>
<p align="justify">                          ;<span style="font-family: 宋体">它是一个标准的</span><span style="font-family: Calibri">windows</span><span style="font-family: 宋体">服务</span></p>
<p align="justify">.code</p>
<p align="justify">Main PROC</p>
<p align="justify">  Mov eax, 5</p>
<p align="justify">  Add eax, 6</p>
<p align="justify">&nbsp;</p>
<p align="justify">  INVOKE ExitProcess, 0</p>
<p align="justify">  Main ENDP</p>
<p align="justify">END Main</p>
<p align="justify"><span style="font-family: 宋体">注:使用</span>RadASM<span style="font-family: 宋体">编译并连接时,需加上</span> Includelib Kernel32.lib</p>
<p align="justify"><span style="font-family: 宋体">否则会报错</span></p>
<p align="justify">  Value1 BYTE ‘A’</p>
<p align="justify">  Value2 BYTE 0</p>
<p align="justify">  Value3 DB 255</p>
<p align="justify">  Value4 SBYTE -128</p>
<p align="justify">  Value5 DB +127</p>
<p align="justify">  Value6 BYTE ? ;<span style="font-family: 宋体">问号使得变量未初始化,这意味着在运行时分配数值到该变量</span></p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong><span style="font-family: 宋体">多初始值:</span></strong></p>
<p align="justify">  List &nbsp; BYTE 10,20,30,40</p>
<p align="justify">&nbsp;</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong><span style="font-family: 宋体">定义字符串:</span></strong></p>
<p align="justify">;<span style="font-family: 宋体">最常见的字符串类型是用一个空字节(值为</span><span style="font-family: Calibri">0</span><span style="font-family: 宋体">)作为结束标记,称为以空字节结束的字符串</span></p>
<p align="justify">  Greeting1 BYTE “Good afternoon”, 0</p>
<p align="justify">  Greeting2 BYTE “Good night”,0</p>
<p align="justify">  Greeting3 BYTE “welcome to the Encryption Demo program ”</p>
<p align="justify">  BYTE “created by Kip Irvine.”, 0dh,0ah</p>
<p align="justify">  BYTE “If you wish to modify this program, please ”</p>
<p align="justify">  BYTE “send me a copy.”,0dh,0ah,0</p>
<p align="justify"><span style="font-family: 宋体">十六进制代码</span>0dh<span style="font-family: 宋体">和</span><span style="font-family: Calibri">0ah</span><span style="font-family: 宋体">也被称为</span><span style="font-family: Calibri">CR/LF</span><span style="font-family: 宋体">(回车换行符)或行结束字符。在编写标准输出时,它们将光标移动到当前行的下一行的左侧。</span></p>
<p align="justify"><span style="font-family: 宋体">行连续字符(</span>\<span style="font-family: 宋体">)把两个源代码行连接成一条语句,他必须是一行的最后一个字符。下面的语句是等价的:</span></p>
<p align="justify">  Greeting1 BYTE “welcome to the Encryption Demo program ”</p>
<p align="justify">  Greeting1 \</p>
<p align="justify">  BYTE “welcome to the Encryption Demo program ”</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong>DUP<span style="font-family: 宋体">操作符:</span></strong></p>
<p align="justify">DUP<span style="font-family: 宋体">操作符使用一个整数表达式作为计算器,为多个数据项分配存储空间。在为字符串或数组分配存储空间时,这个操作符非常有用,它可以使用初始化或非初始化数据。</span></p>
<p align="justify">  BYTE 20 DUP(0) ;20<span style="font-family: 宋体">个字节,值都为</span><span style="font-family: Calibri">0</span></p>
<p align="justify">  BYTE 20 DUP(?) ;20<span style="font-family: 宋体">个字节,非初始化</span></p>
<p align="justify">  BYTE &nbsp;4 DUP(“STACK”) ;20<span style="font-family: 宋体">个字节</span></p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong>WORD<span style="font-family: 宋体">和</span><span style="font-family: Calibri">SWORD----16</span><span style="font-family: 宋体">位整数</span></strong></p>
<p align="justify">  Word1 WORD 65535 ;<span style="font-family: 宋体">最大无符号数</span></p>
<p align="justify">  Word2 SWORD -32768 ;<span style="font-family: 宋体">最小有符号数</span></p>
<p align="justify">  Word3 WORD ? ;<span style="font-family: 宋体">未初始化,无符号</span></p>
<p align="justify">  Word4 DW 65535</p>
<p align="justify">&nbsp;</p>
<p align="justify">16<span style="font-family: 宋体">位字数组:</span></p>
<p align="justify"><span style="font-family: 宋体">通过列举元素或使用</span>DUP<span style="font-family: 宋体">操作符来创建字数组。下面的数组包含了一组数值:</span></p>
<p align="justify">  myList DW 1,2,3,4,5</p>
<p align="justify">  Array DW 5 DUP(?) ; 5<span style="font-family: 宋体">个数值,未初始化</span></p>
<p align="justify">&nbsp;</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong><span style="font-family: 宋体">定义</span>DWORD<span style="font-family: 宋体">和</span><span style="font-family: Calibri">SDWORD</span><span style="font-family: 宋体">(双字</span><span style="font-family: Calibri">32</span><span style="font-family: 宋体">位)数据</span><span style="font-family: Calibri">:</span></strong></p>
<p align="justify">  Val1 DD 12345678h</p>
<p align="justify">  Val2 DD -2147483648</p>
<p align="justify">  DWORD<span style="font-family: 宋体">还可以用于声名一种变量,这种变量包含的是另一个变量的</span><span style="font-family: Calibri">32</span><span style="font-family: 宋体">位偏移量。如下所示,</span><span style="font-family: Calibri">pVal</span><span style="font-family: 宋体">包含的就是</span><span style="font-family: Calibri">val3</span><span style="font-family: 宋体">的偏移量:</span></p>
<p align="justify">  pVal DWORD val3</p>
<p align="justify">32<span style="font-family: 宋体">位双字数组:</span></p>
<p align="justify">  myList DWORD 1,2,3,4,5</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong><span style="font-family: 宋体">定义浮点类型:</span></strong></p>
<p align="justify">  REAL4 4<span style="font-family: 宋体">字节单精度浮点变量</span> ; DD</p>
<p align="justify">  REAL8 8<span style="font-family: 宋体">字节双精度数值</span> ; DQ</p>
<p align="justify">  REAL10 10<span style="font-family: 宋体">字节扩展精度数值</span> ; DT</p>
<p align="justify">&nbsp;</p>
<p align="justify">  rVal1 REAL4 -1.2</p>
<p align="justify">  rVal2 REAL8 3.2E-260</p>
<p align="justify">  rVal3 REAL10 4.6E+4096</p>
<p align="justify">  ShortArray REAL4 20 DUP(0.0)</p>
<p align="justify"><strong>&nbsp;</strong></p>
<p align="justify"><strong><span style="font-family: 宋体">变量加法程序</span>:</strong></p>
<p align="justify">.386</p>
<p align="justify">.model flat, stdcall</p>
<p align="justify">.stack 4096</p>
<p align="justify">ExitProcess PROTO, dwExitCode:DWORD</p>
<p align="justify">&nbsp;</p>
<p align="justify">.data</p>
<p align="justify">Firstval DD 20002000h</p>
<p align="justify">Secondval DD 11111111h</p>
<p align="justify">Thirdval DD 22222222h</p>
<p align="justify">Sum DD 0</p>
<p align="justify">&nbsp;</p>
<p align="justify">.code</p>
<p align="justify">Main PROC</p>
<p align="justify">  Mov eax,Firstval</p>
<p align="justify">  Add eax,Secondval</p>
<p align="justify">  Add eax,Thirdval</p>
<p align="justify">  Mov Sum,eax</p>
<p align="justify">&nbsp;</p>
<p align="justify">  INVOKE ExitProcess, 0</p>
<p align="justify">Main ENDP</p>
<p align="justify">END Main</p>
<p align="justify">&nbsp;</p>
<p align="justify">X86<span style="font-family: 宋体">处理器在内存中按小端顺序(从低到高)存放和检索数据。最低有效字节存放在分配给该数据的第一个内存地址中,剩余字节存放在随后的连续内存位置中。</span></p>
<p align="justify"><span style="font-family: 宋体">汇编器允许在程序中进行代码和数据的来回切换,但会使得程序变得难以阅读。</span></p>
<p align="justify"><strong><span style="font-family: 宋体">等号伪指令(符号常量):</span></strong></p>
<p align="justify">  Name = expression</p>
<p align="justify"><span style="font-family: 宋体">通常,表达式是一个</span>32<span style="font-family: 宋体">位的整数值。当程序进行汇编,在汇编器的预处理阶段,所有出现的</span><span style="font-family: Calibri">name</span><span style="font-family: 宋体">都会被替换成</span><span style="font-family: Calibri">expression</span><span style="font-family: 宋体">。</span></p>
<p align="justify"><span style="font-family: 宋体">使用等号伪指令来获得更好的编码风格</span></p>
<p align="justify">  Esc_key = 27</p>
<p align="justify">  Mov al, Esc_key ;<span style="font-family: 宋体">好的风格</span></p>
<p align="justify">  --------------------------</p>
<p align="justify">  Mov al, 27 ;<span style="font-family: 宋体">不好的风格</span></p>
<p align="justify"><span style="font-family: 宋体">重定义:</span></p>
<p align="justify">  COUNT = 5</p>
<p align="justify">  Mov al, COUNT</p>
<p align="justify">  COUNT = 10</p>
<p align="justify">  Mov al, COUNT</p>
<p align="justify">  COUNT = 100</p>
<p align="justify">  Mov al, COUNT</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong><span style="font-family: 宋体">当前地址计数器:</span></strong></p>
<p align="justify"><span style="font-family: 宋体">当前地址计数器表示为</span> $</p>
<p align="justify">  selfPtr DWORD $</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong><span style="font-family: 宋体">计算数组大小</span>(<span style="font-family: 宋体">必须紧跟其后</span><span style="font-family: Calibri">):</span></strong></p>
<p align="justify">  List BYTE 10,20,30,40</p>
<p align="justify">  ListSize = ( $ - list ) &nbsp;/ &nbsp;1</p>
<p align="justify">&nbsp;</p>
<p align="justify">  List WORD 1000h,2000h,3000h,4000h</p>
<p align="justify">  ListSize = ( $ - list ) &nbsp;/ &nbsp;2</p>
<p align="justify">&nbsp;</p>
<p align="justify">  List DWORD 10000000h,20000000h,30000000h,40000000h</p>
<p align="justify">  ListSize = ( $ - list ) &nbsp;/ &nbsp;4</p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong>EQU<span style="font-family: 宋体">伪指令:</span></strong></p>
<p align="justify">EQU<span style="font-family: 宋体">伪指令把一个符号名称与一个整数表达式或任意文本连接起来</span></p>
<p align="justify">  Name EQU expression</p>
<p align="justify">  Name EQU symbol</p>
<p align="justify">  Name EQU &lt;text&gt;</p>
<p align="justify"><span style="font-family: 宋体">第一种格式中,</span>expression<span style="font-family: 宋体">必须是有效整数表达式(每个表达式的计算结果必须是一个整数)</span></p>
<p align="justify"><span style="font-family: 宋体">第二种格式中,</span>symbol<span style="font-family: 宋体">是一个已存在的符号名称,已经用</span><span style="font-family: Calibri">=</span><span style="font-family: 宋体">或</span><span style="font-family: Calibri">EQU</span><span style="font-family: 宋体">定义过了。</span></p>
<p align="justify"><span style="font-family: 宋体">第三种格式中,任何文本都可以出现在</span>&lt;<span style="font-family: 宋体">…</span><span style="font-family: Calibri">&gt;</span><span style="font-family: 宋体">内。</span></p>
<p align="justify"><span style="font-family: 宋体">当汇编器在程序后面遇到</span>Name<span style="font-family: 宋体">时,他就用整数值或文本来代替符号。</span></p>
<p align="justify">  PI EQU &lt;3.1416&gt;</p>
<p align="justify">  PressKey EQU &lt;”Press any key to continue...”,0&gt;</p>
<p align="justify">&nbsp;</p>
<p align="justify"><span style="font-family: 宋体">与等号伪指令不同,在同一源代码文件中,用</span>EQU<span style="font-family: 宋体">定义的符号不能被重新定义。这个限制可以防止现有符号在无意中被赋予新值。</span></p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong>TEXTEQU<span style="font-family: 宋体">伪指令:</span></strong></p>
<p align="justify">TEXTEQU<span style="font-family: 宋体">伪指令,类似于</span><span style="font-family: Calibri">EQU</span><span style="font-family: 宋体">,创建了文本宏(</span><span style="font-family: Calibri">text macro</span><span style="font-family: 宋体">)。</span></p>
<p align="justify">  Name TEXTEQU &lt;text&gt;</p>
<p align="justify">  Name TEXTEQU textmacro</p>
<p align="justify">  Name TEXTEQU %constExpr</p>
<p align="justify"><span style="font-family: 宋体">例如,变量</span>prompt1<span style="font-family: 宋体">使用了文本红</span><span style="font-family: Calibri">continueMsg</span><span style="font-family: 宋体">:</span></p>
<p align="justify">  continueMsg TEXTEQU &lt;”Do you wish to continue (Y/N)?”&gt;</p>
<p align="justify">  .data</p>
<p align="justify">  Prompt1 BYTE continueMsg</p>
<p align="justify"><span style="font-family: 宋体">文本宏可以相互构建,如下例:</span></p>
<p align="justify">  rowSize = &nbsp;5</p>
<p align="justify">  count TEXTEQU %(rowSize * 2)</p>
<p align="justify">  move TEXTEQU &lt;mov&gt;</p>
<p align="justify">  setupAL TEXTEQU &lt;move &nbsp;al, count&gt;</p>
<p align="justify"><span style="font-family: 宋体">因此,语句</span>setupAL<span style="font-family: 宋体">就会被会变为</span> mov &nbsp;al, 10</p>
<p align="justify"><span style="font-family: 宋体">用</span>TEXTEQU<span style="font-family: 宋体">定义的符号随时可以被重新定义。</span></p>
<p align="justify">&nbsp;</p>
<p align="justify"><strong>64<span style="font-family: 宋体">位编程:</span></strong></p>
<p align="justify">ExitProcess PROTO</p>
<p align="justify">&nbsp;</p>
<p align="justify">.data</p>
<p align="justify">Sum DD 0</p>
<p align="justify">.code</p>
<p align="justify">Main &nbsp;PROC</p>
<p align="justify">  Mov eax, 5</p>
<p align="justify">  Add eax, 6</p>
<p align="justify">  Mov sum, eax</p>
<p align="justify">&nbsp;</p>
<p align="justify">  Mov ecx, 0</p>
<p align="justify">  Call ExitProcess</p>
<p align="justify">Main &nbsp;ENDP</p>
<p align="justify">END</p>
<p align="justify"><span style="font-family: 宋体">与</span>32<span style="font-family: 宋体">位不同的是:</span></p>
<p align="justify"><span style="font-family: 宋体">没有</span> .386</p>
<p align="justify">.model flat, stdcall</p>
<p align="justify">. stack 4096</p>
<p align="justify">64<span style="font-family: 宋体">位程序中,使用</span><span style="font-family: Calibri">PROTO</span><span style="font-family: 宋体">关键字的语句不带参数</span><span style="font-family: Calibri">:</span></p>
<p align="justify">32: ExitProcess PROTO, dwExitCode:DWORD</p>
<p align="justify">64: ExitProcess PROTO</p>
<p align="justify">&nbsp;</p>
<p align="justify">64<span style="font-family: 宋体">位</span><span style="font-family: Calibri">MASM</span><span style="font-family: 宋体">不支持</span><span style="font-family: Calibri">INVOKE</span><span style="font-family: 宋体">伪指令</span></p>
<p align="justify">END<span style="font-family: 宋体">伪指令没有指定程序入口点,而</span><span style="font-family: Calibri">32</span><span style="font-family: 宋体">位程序则指定了</span></p>
<p align="justify">&nbsp;</p>
<p align="justify">&nbsp;</p>
<p><textarea></textarea></p>
<select>
<option value="">自动判断</option>
<option value="zh">中文</option>
<option value="zh-CN">中文(简体)</option>
<option value="zh-HK">中文(香港)</option>
<option value="zh-TW">中文(繁体)</option>
<option value="en">英语</option>
<option value="ja">日语</option>
<option value="ko">朝鲜语</option>
<option value="de">德语</option>
<option value="fr">法语</option>
<option value="ru">俄语</option>
<option value="th">泰语</option>
<option value="af">南非语</option>
<option value="ar">阿拉伯语</option>
<option value="az">阿塞拜疆语</option>
<option value="be">比利时语</option>
<option value="bg">保加利亚语</option>
<option value="ca">加泰隆语</option>
<option value="cs">捷克语</option>
<option value="cy">威尔士语</option>
<option value="da">丹麦语</option>
<option value="dv">第维埃语</option>
<option value="el">希腊语</option>
<option value="eo">世界语</option>
<option value="es">西班牙语</option>
<option value="et">爱沙尼亚语</option>
<option value="eu">巴士克语</option>
<option value="fa">法斯语</option>
<option value="fi">芬兰语</option>
<option value="fo">法罗语</option>
<option value="gl">加里西亚语</option>
<option value="gu">古吉拉特语</option>
<option value="he">希伯来语</option>
<option value="hi">印地语</option>
<option value="hr">克罗地亚语</option>
<option value="hu">匈牙利语</option>
<option value="hy">亚美尼亚语</option>
<option value="id">印度尼西亚语</option>
<option value="is">冰岛语</option>
<option value="it">意大利语</option>
<option value="ka">格鲁吉亚语</option>
<option value="kk">哈萨克语</option>
<option value="kn">卡纳拉语</option>
<option value="kok">孔卡尼语</option>
<option value="ky">吉尔吉斯语</option>
<option value="lt">立陶宛语</option>
<option value="lv">拉脱维亚语</option>
<option value="mi">毛利语</option>
<option value="mk">马其顿语</option>
<option value="mn">蒙古语</option>
<option value="mr">马拉地语</option>
<option value="ms">马来语</option>
<option value="mt">马耳他语</option>
<option value="nb">挪威语(伯克梅尔)</option>
<option value="nl">荷兰语</option>
<option value="ns">北梭托语</option>
<option value="pa">旁遮普语</option>
<option value="pl">波兰语</option>
<option value="pt">葡萄牙语</option>
<option value="qu">克丘亚语</option>
<option value="ro">罗马尼亚语</option>
<option value="sa">梵文</option>
<option value="se">北萨摩斯语</option>
<option value="sk">斯洛伐克语</option>
<option value="sl">斯洛文尼亚语</option>
<option value="sq">阿尔巴尼亚语</option>
<option value="sv">瑞典语</option>
<option value="sw">斯瓦希里语</option>
<option value="syr">叙利亚语</option>
<option value="ta">泰米尔语</option>
<option value="te">泰卢固语</option>
<option value="tl">塔加路语</option>
<option value="tn">茨瓦纳语</option>
<option value="tr">土耳其语</option>
<option value="ts">宗加语</option>
<option value="tt">鞑靼语</option>
<option value="uk">乌克兰语</option>
<option value="ur">乌都语</option>
<option value="uz">乌兹别克语</option>
<option value="vi">越南语</option>
<option value="xh">班图语</option>
<option value="zu">祖鲁语</option>
</select><select>
<option value="">自动选择</option>
<option value="zh">中文</option>
<option value="zh-CN">中文(简体)</option>
<option value="zh-HK">中文(香港)</option>
<option value="zh-TW">中文(繁体)</option>
<option value="en">英语</option>
<option value="ja">日语</option>
<option value="ko">朝鲜语</option>
<option value="de">德语</option>
<option value="fr">法语</option>
<option value="ru">俄语</option>
<option value="th">泰语</option>
<option value="af">南非语</option>
<option value="ar">阿拉伯语</option>
<option value="az">阿塞拜疆语</option>
<option value="be">比利时语</option>
<option value="bg">保加利亚语</option>
<option value="ca">加泰隆语</option>
<option value="cs">捷克语</option>
<option value="cy">威尔士语</option>
<option value="da">丹麦语</option>
<option value="dv">第维埃语</option>
<option value="el">希腊语</option>
<option value="eo">世界语</option>
<option value="es">西班牙语</option>
<option value="et">爱沙尼亚语</option>
<option value="eu">巴士克语</option>
<option value="fa">法斯语</option>
<option value="fi">芬兰语</option>
<option value="fo">法罗语</option>
<option value="gl">加里西亚语</option>
<option value="gu">古吉拉特语</option>
<option value="he">希伯来语</option>
<option value="hi">印地语</option>
<option value="hr">克罗地亚语</option>
<option value="hu">匈牙利语</option>
<option value="hy">亚美尼亚语</option>
<option value="id">印度尼西亚语</option>
<option value="is">冰岛语</option>
<option value="it">意大利语</option>
<option value="ka">格鲁吉亚语</option>
<option value="kk">哈萨克语</option>
<option value="kn">卡纳拉语</option>
<option value="kok">孔卡尼语</option>
<option value="ky">吉尔吉斯语</option>
<option value="lt">立陶宛语</option>
<option value="lv">拉脱维亚语</option>
<option value="mi">毛利语</option>
<option value="mk">马其顿语</option>
<option value="mn">蒙古语</option>
<option value="mr">马拉地语</option>
<option value="ms">马来语</option>
<option value="mt">马耳他语</option>
<option value="nb">挪威语(伯克梅尔)</option>
<option value="nl">荷兰语</option>
<option value="ns">北梭托语</option>
<option value="pa">旁遮普语</option>
<option value="pl">波兰语</option>
<option value="pt">葡萄牙语</option>
<option value="qu">克丘亚语</option>
<option value="ro">罗马尼亚语</option>
<option value="sa">梵文</option>
<option value="se">北萨摩斯语</option>
<option value="sk">斯洛伐克语</option>
<option value="sl">斯洛文尼亚语</option>
<option value="sq">阿尔巴尼亚语</option>
<option value="sv">瑞典语</option>
<option value="sw">斯瓦希里语</option>
<option value="syr">叙利亚语</option>
<option value="ta">泰米尔语</option>
<option value="te">泰卢固语</option>
<option value="tl">塔加路语</option>
<option value="tn">茨瓦纳语</option>
<option value="tr">土耳其语</option>
<option value="ts">宗加语</option>
<option value="tt">鞑靼语</option>
<option value="uk">乌克兰语</option>
<option value="ur">乌都语</option>
<option value="uz">乌兹别克语</option>
<option value="vi">越南语</option>
<option value="xh">班图语</option>
<option value="zu">祖鲁语</option>
</select><select>
<option value="YouDao">有道翻译</option>
<option value="BaiDu">百度翻译</option>
<option value="Google">谷歌翻译</option>
<option value="GoogleCN">谷歌翻译(国内)</option>
</select>
<p>翻译    朗读 复制   正在查询,请稍候……    重试      朗读 复制       复制   朗读 复制      via 谷歌翻译(国内)   译 </p><br><br>
来源:https://www.cnblogs.com/Seccold/p/12730280.html
頁: [1]
查看完整版本: 汇编语言 基于x86处理器 第三章