freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

nasm中文手冊(cè)-資料下載頁(yè)

2025-06-29 08:42本頁(yè)面
  

【正文】 incbin ,1024,512 。 skip the first 1024, and 。 actually include at most 512 `EQU39。: 定義常數(shù)。39。EQU39。定義一個(gè)符號(hào),代表一個(gè)常量值:當(dāng)使用39。EQU39。時(shí),源文件行上必須包含一個(gè)label。39。EQU39。的行為就是把給出的label的名字定義成它的操作數(shù)(唯一)的值。定義是不可更改的,比如:message db 39。hello, world39。 msglen equ $message把39。msglen39。定義成了常量12。39。msglen39。不能再被重定義。這也不是一個(gè)預(yù)自理定義:39。msglen39。的值只被計(jì)算一次,計(jì)算中使用到了39。$39。()在此時(shí)的含義。注意‘EQU’的操作數(shù)也是一個(gè)嚴(yán)格語(yǔ)法的表達(dá)式。() `TIMES39。: 重復(fù)指令或數(shù)據(jù)。前綴39。TIMES39。導(dǎo)致指令被匯編多次。它在某種程序上是NASM的與MASM兼容匯編器的39。DUP39。語(yǔ)法的等價(jià)物。你可以這樣寫(xiě):zerobuf: times 64 db 0或類似的東西,但39。TEIMES39。的能力遠(yuǎn)不止于此。39。TIMES39。的參數(shù)不僅僅是一個(gè)數(shù)值常數(shù),還有數(shù)值表達(dá)式,所以你可以這樣做:buffer: db 39。hello, world39。times 64$+buffer db 39。 39。它可以把39。buffer39。的長(zhǎng)度精確地定義為64字節(jié),’TIMES‘可以被用在一般地指令上,所以你可像這要編寫(xiě)不展開(kāi)的循環(huán): times 100 movsb注意在39。times 100 resb 139。跟39。resb 10039。之間并沒(méi)有顯著的區(qū)別,除了后者在匯編時(shí)會(huì)快上一百倍。就像39。EQU39。,39。RESB39。它們一樣, 39。TIMES39。的操作數(shù)也是嚴(yán)格語(yǔ)法的表達(dá)式。()注意39。TIMES39。不可以被用在宏上:原因是39。TIMES39。在宏被分析后再被處理,它允許’TIMES39。的參數(shù)包含像上面的39。64$+buffer39。這樣的表達(dá)式。要重復(fù)多于一行的代碼,或者一個(gè)宏,使用預(yù)處理指令39。%rep39。 有效地址 一個(gè)有效地址是一個(gè)指令的操作數(shù),它是對(duì)內(nèi)存的一個(gè)引用。在NASM中,有效地址 的語(yǔ)法是非常簡(jiǎn)單的:它由一個(gè)可計(jì)算的表達(dá)式組成,放在一個(gè)中括號(hào)內(nèi)。比如: wordvar dw 123 mov ax,[wordvar] mov ax,[wordvar+1] mov ax,[es:wordvar+bx]任何與上例不一致的表達(dá)都不是NASM中有效的內(nèi)存引用,比如:39。es:wordvar[bx]39。更復(fù)雜一些的有效地址,比如含有多個(gè)寄存器的,也是以同樣的方式工作: mov eax,[ebx*2+ecx+offset] mov ax,[bp+di+8]NASM在這些有效地址上具有進(jìn)行代數(shù)運(yùn)算的能力,所以看似不合法的一些有效地址使用上都是沒(méi)有問(wèn)題的: mov eax,[ebx*5] 。 assembles as [ebx*4+ebx] mov eax,[label1*2label2] 。 ie [label1+(label1label2)]有些形式的有效地址在匯編后具有多種形式;在大多數(shù)情況下,NASM會(huì)自動(dòng)產(chǎn)生最小化的形式。比如,32位的有效地址39。[eax*2+0]39。和39。[eax+eax]39。在匯編后具有完全不同的形式,NASM通常只會(huì)生成后者,因?yàn)榍罢邥?huì)為0偏移多開(kāi)辟4個(gè)字節(jié)。NASM具有一種隱含的機(jī)制,它會(huì)對(duì)39。[eax+ebx]39。和39。[ebx+eax]39。產(chǎn)生不同的操作碼;通常,這是很有用的,因?yàn)?9。[esi+ebp]39。和39。[ebp+esi]39。具有不同的缺省段寄存器。盡管如此,你也可以使用關(guān)鍵字39。BYTE39。,39。WORD39。,39。DWORD39。和39。NOSPLIT39。強(qiáng)制NASM產(chǎn)生特定形式的有效地址。如果你想讓39。[eax+3]39。被匯編成具有一個(gè)doubleword的偏移域,而不是由NASM缺省產(chǎn)生一個(gè)字節(jié)的偏移。你可以使用39。[dword eax+3]39。,同樣,你可以強(qiáng)制NASM為一個(gè)第一遍匯編時(shí)沒(méi)有看見(jiàn)的小值產(chǎn)生一個(gè)一字節(jié)的偏移(像這樣的例子,)。比如:39。[byte eax+offset]39。有一種特殊情況,‘[byte eax]39。會(huì)被匯編成39。[eax+0]39。帶有一個(gè)字節(jié)的0偏移。而39。[dwordeax]39。會(huì)帶一個(gè)doubleword的0偏移。而常用的形式,39。[eax]39。則不會(huì)帶有偏移域。當(dāng)你希望在16位的代碼中存取32位段中的數(shù)據(jù)時(shí),上面所描述的形式是非常有用的。關(guān)于這方面的更多信息。實(shí)際上,如果你要存取一個(gè)在已知偏移地址處的數(shù)據(jù),而這個(gè)地址又大于16位值,如果你不指定一個(gè)dword偏移,NASM會(huì)讓高位上的偏移值丟失。類似的,NASM會(huì)把39。[eax*2]39。分裂成39。[eax+eax]39。 ,因?yàn)檫@樣可以讓偏移域不存在以此節(jié)省空間;實(shí)際上,它也把39。[eax*2+offset]39。分成39。[eax+eax+offset]39。,你可以使用‘NOSPLIT39。關(guān)鍵字改變這種行為:`[nosplit eax*2]39。會(huì)強(qiáng)制`[eax*2+0]39。按字面意思被處理。 常數(shù) NASM能理解四種不同類型的常數(shù):數(shù)值,字符,字符串和浮點(diǎn)數(shù)。 數(shù)值常數(shù)。 一個(gè)數(shù)值常數(shù)就只是一個(gè)數(shù)值而已。NASM允許你以多種方式指定數(shù)值使用的 進(jìn)制,你可以以后綴39。H39。,39。Q39。,39。B39。來(lái)指定十六進(jìn)制數(shù),八進(jìn)制數(shù)和二進(jìn)制數(shù), 或者你可以用C風(fēng)格的前綴39。0x39。表示十六進(jìn)制數(shù),或者以Borland Pascal風(fēng) 格的前綴39。$39。來(lái)表示十六進(jìn)制數(shù),注意,39。$39。前綴在標(biāo)識(shí)符中具有雙重職責(zé) (),所以一個(gè)以39。$39。作前綴的十六進(jìn)制數(shù)值必須在39。$39。后緊跟數(shù)字,而 不是字符。 請(qǐng)看一些例子: 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,10010011b 。 binary 字符型常數(shù)。一個(gè)字符常數(shù)最多由包含在雙引號(hào)或單引號(hào)中的四個(gè)字符組成。引號(hào)的類型與使用跟NASM其它地方?jīng)]什么區(qū)別,但有一點(diǎn),單引號(hào)中允許有雙引號(hào)出現(xiàn)。一個(gè)具有多個(gè)字符的字符常數(shù)會(huì)被littleendian order,如果你編寫(xiě): mov eax,39。abcd39。 產(chǎn)生的常數(shù)不會(huì)是`0x6162636439。,而是`0x6463626139。,所以你把常數(shù)存入內(nèi)存 的話,它會(huì)讀成39。abcd39。而不是39。dcba39。這也是奔騰的39。CPUID39。指令理解的字符常 數(shù)形式() 字符串常數(shù)。 字符串常數(shù)一般只被一些偽操作指令接受,比如39。DB39。類,還有39。INCBIN39。一個(gè)字符串常數(shù)和字符常數(shù)看上去很相像,但會(huì)長(zhǎng)一些。它被處理成最大長(zhǎng)度的字符常數(shù)之間的連接。所以,以下兩個(gè)語(yǔ)句是等價(jià)的: db 39。hello39。 。 string constant db 39。h39。,39。e39。,39。l39。,39。l39。,39。o39。 。 equivalent character constants還有,下面的也是等價(jià)的: dd 39。ninechars39。 。 doubleword string constant dd 39。nine39。,39。char39。,39。s39。 。 bees three doublewords db 39。ninechars39。,0,0,0 。 and really looks like this注意,如果作為39。db39。的操作數(shù),類似39。ab39。的常數(shù)會(huì)被處理成字符串常量,因?yàn)樗鳛樽址?shù)的話,還不夠短,因?yàn)?,如果不這樣,那39。db 39。ab39。會(huì)跟39。db 39。a39。39。具有同樣的效果,那是很愚蠢的。同樣的,三字符或四字符常數(shù)會(huì)在作為39。dw39。的操作數(shù)時(shí)被處理成字符串。 浮點(diǎn)常量 浮點(diǎn)常量只在作為39。DD39。,39。DQ39。,39。DT39。的操作數(shù)時(shí)被接受。它們以傳統(tǒng)的形式表 達(dá):數(shù)值,然后一個(gè)句點(diǎn),然后是可選的更多的數(shù)值,然后是選項(xiàng)39。E39。跟上 一個(gè)指數(shù)。句點(diǎn)是強(qiáng)制必須有的,這樣,NASM就可以把它們跟39。dd 139。區(qū)分開(kāi), 它只是聲明一個(gè)整型常數(shù),而39。dd 39。聲明一個(gè)浮點(diǎn)型常數(shù)。 一些例子: dd 。 an easy one dq 。 10,000,000,000 dq +10 。 synonymous with dq 。 000 000 1 dt 。 piNASM不能在編譯時(shí)求浮點(diǎn)常數(shù)的值。這是因?yàn)镹ASM被設(shè)計(jì)為可移植的,盡管它常產(chǎn)生x86處理器上的代碼,匯編器本身卻可以和ANSI C編譯器一起運(yùn)行在任何系統(tǒng)上。所以,匯編器不能保證系統(tǒng)上總存在一個(gè)能處理Intel浮點(diǎn)數(shù)的浮點(diǎn)單元。所以,NASM為了能夠處理浮點(diǎn)運(yùn)算,它必須含有它自己的一套完整的浮點(diǎn)處理例程,它大大增加了匯編器的大小,卻獲得了并不多的好處。 表達(dá)式 NASM中的表達(dá)式語(yǔ)法跟C里的是非常相似的。 NASM不能確定編譯時(shí)在計(jì)算表達(dá)式時(shí)的整型數(shù)尺寸:因?yàn)镹ASM可以在64位系 統(tǒng)上非常好的編譯和運(yùn)行,不要假設(shè)表達(dá)式總是在32位的寄存器中被計(jì)算的, 所以要慎重地對(duì)待整型數(shù)溢出的情況。它并不總能正常的工作。NASM唯一能 夠保證的是:你至少擁有32位長(zhǎng)度。NASM在表達(dá)式中支持兩個(gè)特殊的記號(hào),即39。$39。和39。$$39。,它們?cè)试S引用當(dāng)前指令的地址。39。$39。計(jì)算得到它本身所在源代碼行的開(kāi)始處的地址;所以你可以簡(jiǎn)單地寫(xiě)這樣的代碼39。jmp $39。來(lái)表示無(wú)限循環(huán)。39。$$39。計(jì)算當(dāng)前段開(kāi)始處的地址,所以你可以通過(guò)($$$)找出你當(dāng)前在段內(nèi)的偏移。NASM提供的運(yùn)算符以運(yùn)算優(yōu)先級(jí)為序列舉如下: `|39。: 位或運(yùn)算符。 運(yùn)算符39。|39。給出一個(gè)位級(jí)的或運(yùn)算,所執(zhí)行的操作與機(jī)器指令39。or39。是完全相同的。位或是NASM中優(yōu)先級(jí)最低的運(yùn)算符。 `^39。: 位異或運(yùn)算符。 `^39。 提供位異或操作。 `amp。39。: 位與運(yùn)算符。 `amp。39。 提供位與運(yùn)算。 `39。 and `39。: 位移運(yùn)算符。 `39。 提供位左移, 跟C中的實(shí)現(xiàn)一樣,所以39。5339。相當(dāng)于把5乘上8。39。39。提 供位右移。在NASM中,這樣的位移總是無(wú)符號(hào)的,所以位移后,左側(cè)總是以 零填充,并不會(huì)有符號(hào)擴(kuò)展。 `+39。 and `39。: 加與減運(yùn)算符。 39。+39。與39。39。運(yùn)算符提供完整的普通加減法功能。 `*39。, `/39。, `//39。, `%39。和`%%39。: 乘除法運(yùn)算符。 39。*39。是乘法運(yùn)算符。39。/39。和39。//39。都是除法運(yùn)算符,39。/39。是無(wú)符號(hào)除,39。//39。是帶 符號(hào)除。同樣的,39。%39。和39。%%39。提供無(wú)符號(hào)與帶符號(hào)的模運(yùn)算。 同ANSI C一樣,NASM不保證對(duì)帶符號(hào)模操作執(zhí)行的操作的有效性。 因?yàn)?9。%39。符號(hào)也被宏預(yù)處理器使用,你必須保證不管是帶符號(hào)還是無(wú)符號(hào)的 模操作符都必須跟有空格。 一元運(yùn)算符: `+39。, `39。, `~39。和`SEG39。這些只作用于一個(gè)參數(shù)的一元運(yùn)算符是NASM的表達(dá)式語(yǔ)法中優(yōu)先級(jí)最高的。39。39。把它的操作數(shù)取反,39。+39。不作任何事情(它只是為了和39。39。保持對(duì)稱),39。~39。對(duì)它的操作數(shù)取補(bǔ)碼,而39。SEG39。提供它的操作數(shù)的段地址(詳細(xì)解釋)。 `SEG39。和`WRT39。 當(dāng)寫(xiě)很大的16位程序時(shí),必須把它分成很多段,這時(shí),引用段內(nèi)一個(gè)符號(hào)的 地址的能力是非常有必要的,NASM提供了39。SEG39。操作符來(lái)實(shí)現(xiàn)這個(gè)功能。 39。SEG39。操作符返回符號(hào)所在的首選段的段基址,即一個(gè)段基址,當(dāng)符號(hào)的偏 移地址以它為參考時(shí),是有效的,所以,代碼: mov ax,seg symbol mov es,ax mov bx,symbol總是在39。E
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1