亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nasmdoc3.htm

?? nasm手冊 大家可以看看 對要寫匯編程序的幫助很大
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<code><nobr>64-$+buffer</nobr></code> as above. To repeat more than oneline of code, or a complex macro, use the preprocessor<code><nobr>%rep</nobr></code> directive.<h3><a name="section-3.3">3.3 Effective Addresses</a></h3><p>An effective address is any operand to an instruction which referencesmemory. Effective addresses, in NASM, have a very simple syntax: theyconsist of an expression evaluating to the desired address, enclosed insquare brackets. For example:<p><pre>wordvar dw      123         mov     ax,[wordvar]         mov     ax,[wordvar+1]         mov     ax,[es:wordvar+bx]</pre><p>Anything not conforming to this simple system is not a valid memoryreference in NASM, for example <code><nobr>es:wordvar[bx]</nobr></code>.<p>More complicated effective addresses, such as those involving more thanone register, work in exactly the same way:<p><pre>        mov     eax,[ebx*2+ecx+offset]         mov     ax,[bp+di+8]</pre><p>NASM is capable of doing algebra on these effective addresses, so thatthings which don't necessarily <em>look</em> legal are perfectly all right:<p><pre>    mov     eax,[ebx*5]             ; assembles as [ebx*4+ebx]     mov     eax,[label1*2-label2]   ; ie [label1+(label1-label2)]</pre><p>Some forms of effective address have more than one assembled form; inmost such cases NASM will generate the smallest form it can. For example,there are distinct assembled forms for the 32-bit effective addresses<code><nobr>[eax*2+0]</nobr></code> and<code><nobr>[eax+eax]</nobr></code>, and NASM will generally generate thelatter on the grounds that the former requires four bytes to store a zerooffset.<p>NASM has a hinting mechanism which will cause<code><nobr>[eax+ebx]</nobr></code> and <code><nobr>[ebx+eax]</nobr></code>to generate different opcodes; this is occasionally useful because<code><nobr>[esi+ebp]</nobr></code> and <code><nobr>[ebp+esi]</nobr></code>have different default segment registers.<p>However, you can force NASM to generate an effective address in aparticular form by the use of the keywords <code><nobr>BYTE</nobr></code>,<code><nobr>WORD</nobr></code>, <code><nobr>DWORD</nobr></code> and<code><nobr>NOSPLIT</nobr></code>. If you need<code><nobr>[eax+3]</nobr></code> to be assembled using a double-wordoffset field instead of the one byte NASM will normally generate, you cancode <code><nobr>[dword eax+3]</nobr></code>. Similarly, you can force NASMto use a byte offset for a small value which it hasn't seen on the firstpass (see <a href="#section-3.8">section 3.8</a> for an example of such acode fragment) by using <code><nobr>[byte eax+offset]</nobr></code>. Asspecial cases, <code><nobr>[byte eax]</nobr></code> will code<code><nobr>[eax+0]</nobr></code> with a byte offset of zero, and<code><nobr>[dword eax]</nobr></code> will code it with a double-wordoffset of zero. The normal form, <code><nobr>[eax]</nobr></code>, will becoded with no offset field.<p>The form described in the previous paragraph is also useful if you aretrying to access data in a 32-bit segment from within 16 bit code. For moreinformation on this see the section on mixed-size addressing(<a href="nasmdoc9.html#section-9.2">section 9.2</a>). In particular, ifyou need to access data with a known offset that is larger than will fit ina 16-bit value, if you don't specify that it is a dword offset, nasm willcause the high word of the offset to be lost.<p>Similarly, NASM will split <code><nobr>[eax*2]</nobr></code> into<code><nobr>[eax+eax]</nobr></code> because that allows the offset field tobe absent and space to be saved; in fact, it will also split<code><nobr>[eax*2+offset]</nobr></code> into<code><nobr>[eax+eax+offset]</nobr></code>. You can combat this behaviourby the use of the <code><nobr>NOSPLIT</nobr></code> keyword:<code><nobr>[nosplit eax*2]</nobr></code> will force<code><nobr>[eax*2+0]</nobr></code> to be generated literally.<h3><a name="section-3.4">3.4 Constants</a></h3><p>NASM understands four different types of constant: numeric, character,string and floating-point.<h4><a name="section-3.4.1">3.4.1 Numeric Constants</a></h4><p>A numeric constant is simply a number. NASM allows you to specifynumbers in a variety of number bases, in a variety of ways: you can suffix<code><nobr>H</nobr></code>, <code><nobr>Q</nobr></code> or<code><nobr>O</nobr></code>, and <code><nobr>B</nobr></code> for hex, octaland binary, or you can prefix <code><nobr>0x</nobr></code> for hex in thestyle of C, or you can prefix <code><nobr>$</nobr></code> for hex in thestyle of Borland Pascal. Note, though, that the <code><nobr>$</nobr></code>prefix does double duty as a prefix on identifiers (see<a href="#section-3.1">section 3.1</a>), so a hex number prefixed with a<code><nobr>$</nobr></code> sign must have a digit after the<code><nobr>$</nobr></code> rather than a letter.<p>Some examples:<p><pre>        mov     ax,100          ; decimal         mov     ax,0a2h         ; hex         mov     ax,$0a2         ; hex again: the 0 is required         mov     ax,0xa2         ; hex yet again         mov     ax,777q         ; octal         mov     ax,777o         ; octal again         mov     ax,10010011b    ; binary</pre><h4><a name="section-3.4.2">3.4.2 Character Constants</a></h4><p>A character constant consists of up to four characters enclosed ineither single or double quotes. The type of quote makes no difference toNASM, except of course that surrounding the constant with single quotesallows double quotes to appear within it and vice versa.<p>A character constant with more than one character will be arranged withlittle-endian order in mind: if you code<p><pre>          mov eax,'abcd'</pre><p>then the constant generated is not <code><nobr>0x61626364</nobr></code>,but <code><nobr>0x64636261</nobr></code>, so that if you were then to storethe value into memory, it would read <code><nobr>abcd</nobr></code> ratherthan <code><nobr>dcba</nobr></code>. This is also the sense of characterconstants understood by the Pentium's <code><nobr>CPUID</nobr></code>instruction (see <a href="nasmdocb.html#section-B.4.34">sectionB.4.34</a>).<h4><a name="section-3.4.3">3.4.3 String Constants</a></h4><p>String constants are only acceptable to some pseudo-instructions, namelythe <code><nobr>DB</nobr></code> family and<code><nobr>INCBIN</nobr></code>.<p>A string constant looks like a character constant, only longer. It istreated as a concatenation of maximum-size character constants for theconditions. So the following are equivalent:<p><pre>      db    'hello'               ; string constant       db    'h','e','l','l','o'   ; equivalent character constants</pre><p>And the following are also equivalent:<p><pre>      dd    'ninechars'           ; doubleword string constant       dd    'nine','char','s'     ; becomes three doublewords       db    'ninechars',0,0,0     ; and really looks like this</pre><p>Note that when used as an operand to <code><nobr>db</nobr></code>, aconstant like <code><nobr>'ab'</nobr></code> is treated as a stringconstant despite being short enough to be a character constant, becauseotherwise <code><nobr>db 'ab'</nobr></code> would have the same effect as<code><nobr>db 'a'</nobr></code>, which would be silly. Similarly,three-character or four-character constants are treated as strings whenthey are operands to <code><nobr>dw</nobr></code>.<h4><a name="section-3.4.4">3.4.4 Floating-Point Constants</a></h4><p>Floating-point constants are acceptable only as arguments to<code><nobr>DD</nobr></code>, <code><nobr>DQ</nobr></code> and<code><nobr>DT</nobr></code>. They are expressed in the traditional form:digits, then a period, then optionally more digits, then optionally an<code><nobr>E</nobr></code> followed by an exponent. The period ismandatory, so that NASM can distinguish between<code><nobr>dd 1</nobr></code>, which declares an integer constant, and<code><nobr>dd 1.0</nobr></code> which declares a floating-point constant.<p>Some examples:<p><pre>      dd    1.2                     ; an easy one       dq    1.e10                   ; 10,000,000,000       dq    1.e+10                  ; synonymous with 1.e10       dq    1.e-10                  ; 0.000 000 000 1       dt    3.141592653589793238462 ; pi</pre><p>NASM cannot do compile-time arithmetic on floating-point constants. Thisis because NASM is designed to be portable - although it always generatescode to run on x86 processors, the assembler itself can run on any systemwith an ANSI C compiler. Therefore, the assembler cannot guarantee thepresence of a floating-point unit capable of handling the Intel numberformats, and so for NASM to be able to do floating arithmetic it would haveto include its own complete set of floating-point routines, which wouldsignificantly increase the size of the assembler for very little benefit.<h3><a name="section-3.5">3.5 Expressions</a></h3><p>Expressions in NASM are similar in syntax to those in C.<p>NASM does not guarantee the size of the integers used to evaluateexpressions at compile time: since NASM can compile and run on 64-bitsystems quite happily, don't assume that expressions are evaluated in32-bit registers and so try to make deliberate use of integer overflow. Itmight not always work. The only thing NASM will guarantee is what'sguaranteed by ANSI C: you always have <em>at least</em> 32 bits to work in.<p>NASM supports two special tokens in expressions, allowing calculationsto involve the current assembly position: the <code><nobr>$</nobr></code>and <code><nobr>$$</nobr></code> tokens. <code><nobr>$</nobr></code>evaluates to the assembly position at the beginning of the line containingthe expression; so you can code an infinite loop using<code><nobr>JMP $</nobr></code>. <code><nobr>$$</nobr></code> evaluates tothe beginning of the current section; so you can tell how far into thesection you are by using <code><nobr>($-$$)</nobr></code>.<p>The arithmetic operators provided by NASM are listed here, in increasingorder of precedence.<h4><a name="section-3.5.1">3.5.1 <code><nobr>|</nobr></code>: Bitwise OR Operator</a></h4><p>The <code><nobr>|</nobr></code> operator gives a bitwise OR, exactly asperformed by the <code><nobr>OR</nobr></code> machine instruction. BitwiseOR is the lowest-priority arithmetic operator supported by NASM.<h4><a name="section-3.5.2">3.5.2 <code><nobr>^</nobr></code>: Bitwise XOR Operator</a></h4><p><code><nobr>^</nobr></code> provides the bitwise XOR operation.<h4><a name="section-3.5.3">3.5.3 <code><nobr>&amp;</nobr></code>: Bitwise AND Operator</a></h4><p><code><nobr>&amp;</nobr></code> provides the bitwise AND operation.<h4><a name="section-3.5.4">3.5.4 <code><nobr>&lt;&lt;</nobr></code> and <code><nobr>&gt;&gt;</nobr></code>: Bit Shift Operators</a></h4><p><code><nobr>&lt;&lt;</nobr></code> gives a bit-shift to the left, justas it does in C. So <code><nobr>5&lt;&lt;3</nobr></code> evaluates to 5times 8, or 40. <code><nobr>&gt;&gt;</nobr></code> gives a bit-shift to theright; in NASM, such a shift is <em>always</em> unsigned, so that the bitsshifted in from the left-hand end are filled with zero rather than asign-extension of the previous highest bit.<h4><a name="section-3.5.5">3.5.5 <code><nobr>+</nobr></code> and <code><nobr>-</nobr></code>: Addition and Subtraction Operators</a></h4><p>The <code><nobr>+</nobr></code> and <code><nobr>-</nobr></code>operators do perfectly ordinary addition and subtraction.<h4><a name="section-3.5.6">3.5.6 <code><nobr>*</nobr></code>, <code><nobr>/</nobr></code>, <code><nobr>//</nobr></code>, <code><nobr>%</nobr></code> and <code><nobr>%%</nobr></code>: Multiplication and Division</a></h4><p><code><nobr>*</nobr></code> is the multiplication operator.<code><nobr>/</nobr></code> and <code><nobr>//</nobr></code> are bothdivision operators: <code><nobr>/</nobr></code> is unsigned division and<code><nobr>//</nobr></code> is signed division. Similarly,<code><nobr>%</nobr></code> and <code><nobr>%%</nobr></code> provideunsigned and signed modulo operators respectively.<p>NASM, like ANSI C, provides no guarantees about the sensible operationof the signed modulo operator.<p>Since the <code><nobr>%</nobr></code> character is used extensively bythe macro preprocessor, you should ensure that both the signed and unsignedmodulo operators are followed by white space wherever they appear.<h4><a name="section-3.5.7">3.5.7 Unary Operators: <code><nobr>+</nobr></code>, <code><nobr>-</nobr></code>, <code><nobr>~</nobr></code> and <code><nobr>SEG</nobr></code></a></h4><p>The highest-priority operators in NASM's expression grammar are thosewhich only apply to one argument. <code><nobr>-</nobr></code> negates itsoperand, <code><nobr>+</nobr></code> does nothing (it's provided forsymmetry with <code><nobr>-</nobr></code>), <code><nobr>~</nobr></code>computes the one's complement of its operand, and<code><nobr>SEG</nobr></code> provides the segment address of its operand(explained in more detail in <a href="#section-3.6">section 3.6</a>).

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜在线一二页| 欧美日韩免费电影| 亚洲国产你懂的| 久久婷婷综合激情| 欧美精品vⅰdeose4hd| 国产成人在线免费| 日韩国产成人精品| 亚洲精品日产精品乱码不卡| 国产亚洲女人久久久久毛片| 538prom精品视频线放| 99精品视频中文字幕| 黄色日韩网站视频| 日韩中文字幕一区二区三区| 一区二区三区在线播| 国产精品福利影院| 久久精品日产第一区二区三区高清版| 欧美无砖砖区免费| 99riav久久精品riav| 国产精品中文欧美| 久久成人免费日本黄色| 亚洲国产另类av| 一区二区成人在线观看| 亚洲视频中文字幕| 中文成人综合网| 久久老女人爱爱| 精品久久一区二区| 精品久久免费看| 欧美xxx久久| 精品久久久久久久人人人人传媒| 欧美精品乱码久久久久久按摩| 色噜噜狠狠色综合中国| 97se亚洲国产综合自在线观| proumb性欧美在线观看| 成人黄色片在线观看| 福利一区福利二区| 国产成+人+日韩+欧美+亚洲| 国产精品亚洲一区二区三区妖精| 久久精品国产精品亚洲红杏 | 午夜一区二区三区视频| 亚洲少妇30p| 亚洲免费毛片网站| 亚洲精品久久7777| 一区二区成人在线视频| 亚洲国产精品麻豆| 亚洲大型综合色站| 奇米影视一区二区三区小说| 日韩专区在线视频| 美女任你摸久久 | 日韩欧美专区在线| 日韩欧美一级特黄在线播放| 欧美成人女星排名| 26uuu亚洲| 欧美经典一区二区三区| 中文字幕在线视频一区| 亚洲欧美日韩电影| 丝袜美腿亚洲综合| 精品一二三四区| 国产成人aaaa| 91黄视频在线| 日韩一级视频免费观看在线| www欧美成人18+| 自拍偷在线精品自拍偷无码专区| 亚洲一区二区三区爽爽爽爽爽| 天堂午夜影视日韩欧美一区二区| 久久精品国产网站| a4yy欧美一区二区三区| 欧美亚一区二区| 日韩欧美中文一区| 国产精品第一页第二页第三页| 亚洲综合久久久久| 久久精品国产亚洲高清剧情介绍 | 在线播放中文一区| 精品对白一区国产伦| 国产欧美日韩另类视频免费观看| 亚洲欧美激情插| 日韩不卡一区二区三区| 高清shemale亚洲人妖| 欧美日韩中文另类| 国产亚洲成aⅴ人片在线观看| 一区二区三区免费看视频| 免费人成精品欧美精品| 波多野结衣中文一区| 欧美日韩免费一区二区三区视频| 久久综合色鬼综合色| 有码一区二区三区| 国产专区欧美精品| 欧美性猛交xxxx乱大交退制版| 欧美成人精品福利| 亚洲制服丝袜在线| 国产成人精品影视| 在线不卡一区二区| 国产精品久久毛片av大全日韩| 天堂午夜影视日韩欧美一区二区| 成人三级在线视频| 欧美一级黄色片| 亚洲精品少妇30p| 国产精华液一区二区三区| 欧美日韩精品电影| 国产精品第四页| 寂寞少妇一区二区三区| 欧美色爱综合网| 亚洲欧洲精品天堂一级| 黄页视频在线91| 欧美喷潮久久久xxxxx| 亚洲免费观看在线视频| 国产剧情av麻豆香蕉精品| 欧美日韩国产一级片| 亚洲美女屁股眼交| 日韩精品在线一区| 亚洲一区二区三区中文字幕| 高清在线成人网| 精品久久人人做人人爽| 亚洲图片一区二区| 91热门视频在线观看| 国产欧美日韩在线看| 久久精品国产久精国产爱| 欧美浪妇xxxx高跟鞋交| 亚洲一区在线视频观看| 99精品久久久久久| 国产精品婷婷午夜在线观看| 国产一区在线看| 欧美xxxx在线观看| 久久精品国产免费| 欧美一级夜夜爽| 日韩国产在线观看一区| 欧美亚洲动漫另类| 亚洲国产欧美在线人成| 色婷婷综合久久| 亚洲制服欧美中文字幕中文字幕| 91在线视频网址| 亚洲色图丝袜美腿| 色综合久久久久网| 亚洲精品第1页| 欧美在线制服丝袜| 亚洲成人久久影院| 欧美日韩国产精品成人| 亚洲网友自拍偷拍| 欧美日韩精品三区| 日本不卡在线视频| 91精品国产综合久久久久久漫画| 午夜久久福利影院| 欧美男女性生活在线直播观看| 一级中文字幕一区二区| 欧美在线观看视频在线| 午夜精品久久久久久久99水蜜桃 | 亚洲成国产人片在线观看| 欧美色图激情小说| 午夜成人免费电影| 日韩欧美一区二区视频| 国产一区二区在线观看视频| 久久久精品天堂| 99久久99精品久久久久久| 国产成人自拍在线| 亚洲色欲色欲www| 欧美日韩国产综合草草| 奇米精品一区二区三区在线观看 | 亚洲欧洲99久久| 91高清视频在线| 欧美aa在线视频| 日本一区二区视频在线观看| 成人动漫一区二区| 亚洲一区二区三区四区中文字幕| 欧美日韩免费电影| 韩国av一区二区三区| 亚洲欧美怡红院| 欧美日韩极品在线观看一区| 久久99精品国产91久久来源| 欧美激情艳妇裸体舞| 欧美性大战久久久久久久蜜臀| 麻豆精品国产传媒mv男同| 国产日韩视频一区二区三区| 色综合久久久久综合| 奇米精品一区二区三区四区| 国产亚洲一区二区三区四区| 91福利在线看| 精品综合久久久久久8888| 综合分类小说区另类春色亚洲小说欧美| 欧美三级中文字幕在线观看| 国内精品自线一区二区三区视频| 国产精品乱人伦中文| 欧美精选一区二区| 成人晚上爱看视频| 三级在线观看一区二区| 久久精品水蜜桃av综合天堂| 欧美日韩综合不卡| 国产99久久久国产精品潘金 | 精品视频免费看| 国产成人免费视频一区| 亚洲电影一区二区| 中文字幕国产一区二区| 欧美一级高清片| 99久久精品免费观看| 久久国产精品露脸对白| 亚洲伊人伊色伊影伊综合网 | 视频一区欧美日韩| 中文字幕一区视频| 精品美女在线观看| 欧美日本国产视频| 91美女在线视频| 国产不卡视频在线播放|