linux內核時常碰到的彙編指令(詳盡版部分)

80X86 彙編指令符號大全 
+、-、*、/∶算術運算符。 

&∶宏處理操做符。宏擴展時不識別符號和字符串中的形式參數,若是在形式參數前面加上一個& 記號,宏彙編程序就可以用實在參 數代替這個形式參數了。 

$∶地址計數器的值——記錄正在被彙編程序翻譯的語句地址。每一個段均分配一個計數器,段內定義的全部標號和變量的偏移地址就是當前彙編地址計數器的值。 

?∶操做數。在數據定義語句中,操做數用?,其做用是分配並保留存儲空間,但不存入肯定的數據。 

=∶等號僞指令——符號定義。對符號進行定義和賦值,功能與 EQU類似,但容許(重複)再定義。 

:∶修改屬性運算符(操做符)——段操做符。用來臨時給變量、標號或地址表達式指定一個段屬性(不用缺省的段寄存器),自動生成一個「跨段前綴字節」。注 意,段寄存器CS和ES不能被跨越,堆棧操做時也不能跨越SS。 

;∶註釋符號。 

%∶特殊宏操做符,用來將其後的表達式(一般是符號常數,不能是變量名和寄存器名)轉換成它所表明的數值,並將此數值的ASCII碼嵌入到宏擴展中。 

( )∶1.運算符——用來改變運算符的優先級別。2.教材符號,表示括號內存儲單元(或寄存器)的內容。 

< >∶宏調用時用來將帶間隔符(如空格,逗號等)的字符串(做爲實參)括起來。 

[ ]∶1.運算符。方括號括起來的數是數組變量的下標或地址表達式。帶方括號的地址表達式必須遵循下列原則,①只有BX、BP、SI、DI這 四個寄存器可在方括號內出現;②BX或BP可單獨出如今各方括號中,也能夠與常數、SI或DI一塊兒出如今方括號內,但不容許BX和BP出如今同一個方括號 內;③SI和DI能夠單獨出如今各方括號內,也能夠與常數、BP或BX一塊兒出如今方括號內,但不容許SI和DI出如今同一個方括號內;④一個方括號內包含 多個寄存器時,它們只能做加法運算;⑤若方括號內包含基址指針BP,則隱含使用堆棧段寄存器SS提供段基址,不然均隱含使用數據段寄存器DS提供段基址。 2.教材符號,表示其中的內容可省略。 

.LIST∶ 僞指令。用於打開列表文件輸出。 

.RADIX∶僞指令。把缺省的基數改成2-16範圍內的任意基數。.RADIX不影響DD、DQ、DT僞指令,在這些僞指令中,輸入的數值只要沒有加上 數據類型就認爲是十進制數。 

.XLIST∶僞指令。用於關閉列表文件輸出。 

%OUT∶僞指令。在彙編時顯示其後的信息。 

AAA∶ 指令助記符——加法運算後的ASCII調整(非壓縮的BCD碼)。無操做數,調整的加法結果在AL中。AF和CF的狀態改變說明結果 大於9。檢查AL的低四位是否爲合法的BCD碼(0-9),若是合法就清除AL的高四位以及AF和CF標誌。當AL的低四位表示的數大於 9或 AF=1時, 將AL加 6,AH加1 ,並使AF和CF置位,清除AL中的高四位。任何一個A—F之間的數加上6 以 後,都會使AL低 4位產生0-9之間的數,從而達到調整的目的。 

AAD∶ 指令助記符——除法的ASCII調整(非壓縮的BCD碼)。在執行除法操做前,必須利用 AAD指令將非壓縮型 BCD 碼錶示的數轉換成二進制數送AL。步驟是,先將被除數的高位數(AH中的內容)乘以10,而後加到AL的低位數中,接着將AH清零。 

AAM∶ 指令助記符——乘法的ASCII調整(非壓縮的BCD碼)。用於將字節乘法的積轉換成兩個合法的十進制非壓縮碼。AAM不帶操做數, 假定成績在AH和AL中,並將調整後的非壓縮碼送回AH和AL。爲了保證 AAM獲得正確的結果,原乘數和被乘數必須是合法的非壓縮碼。指令執 行時,AAM 用10(0AH) 除AL寄存器,並將除得的商和餘數分別送AH和AL寄存器,實現轉換。 

AAS∶ 指令助記符——減法運算後的ASCII調整(非壓縮的BCD碼)。檢查AL的低四位是否爲合法的BCD碼(0-9),若是合法就清除 AL的高四位以及AF和CF標誌。當AL的低四位表示的數大於 9或AF=1時, 將AL減 6,AH減1 , 並使AF和CF置1,清除AL中的高四位。 

ADC∶ 指令助記符——帶進位加法(把CF的值加上)。用於多字節數的高字節加法運算。 

ADD∶ 指令助記符——加法。參與運算的二操做數應該同時帶符號或不帶符號 ,而且長度一致。操做數能夠是寄存器、存儲器或當即 數,但不能同時爲存儲單元或段寄存器,當即數也不能做爲目的操做數。 

AF∶ Auxiliary Carry Flag,輔助進位標誌,在標誌寄存器的第4字節。記錄運算時第 3 位(半個字節)產生的進位值(置1)。該標誌用於對BCD碼的加減運算中。 

AND∶邏輯運算符(在語句的操做數部分,彙編時完成)或邏輯操做指令助記符(在語句的操做碼部分,其運算在執行指令時完成)——按位與。只有相「與」的 兩位全爲1 ,結果才爲1。某數本身與本身相「與」,操做數不變,進位標誌CF清0 。 

ASSUME∶段定義僞指令——設定分段寄存器,格式爲"ASSUME 段寄存器:段名[,段寄存器名:段名]"。在代碼段的開始用來指出全部 段與段寄存器的關係,肯定某個段分配給哪一個段寄存器。ASSUME只指出各段寄存器的分配,並無把段地址裝入相應的段寄存器。爲此,在代碼段中,還必須 把數據段和附加數據段的段地址裝入相應的寄存器中。 

AT∶僞指令——段定義(組合類型)。該段按絕對地址定位,段基址爲數值表達式的值,位移量爲0 。不能指定代碼段。 

AX∶ Accumulator,通用寄存器,算術運算的主要寄存器。另外,全部的I/O指令都使用這一寄存器與外部設備傳送信息。其中AH是 高8位,AL是低8位。 

B∶ 數據類型後綴,表示二進制常量。 

BP∶Base Pointer, 基址指針寄存器。能夠與SS寄存器聯用來肯定堆棧中任一存儲單元的地址。它指示堆棧中任一單元的 偏移量。非堆棧進出指令要訪問堆棧,只能經過BP進行。 

BX∶Base,通用寄存器。在計算存儲器地址時,常常用做基址寄存器。其中BH是高 8位,BL是低 8位。 

BYTE∶僞指令——段定義(定位類型)。本段起始單元能夠從任一地址開始,段間不留空隙,存儲器利用率最高。 

CALL∶指令助記符——程序調用。
1、段內直接調用:格式爲" CALL 過程名"。先把IP內容(子程序的返回地址,即CALL下一條指令的地址)壓入堆棧,然 後IP轉移到子程序的入口地址。
2、段內間接調用:格式爲" CALL WORD PTR OPD"。先把IP的內容壓入堆棧,而後IP指 向(轉到)由尋址方式決定的EA。
3、段間直接調用。格式爲"CALL FAR PTR 過程名"。先把CS和IP的內容壓入堆棧,而後在CS中裝入新 的段地址,IP指向段內偏移地址。
4、段間間接調用:格式爲"CALL DWORD PTR OPD"。 先把CS和IP的內容壓入堆棧,然 後把尋址方式肯定的有效地址所指定的一個字儲存單元的內容送入IP,下一個字存儲單元的內容(段首址)送入CS。 

CBW∶指令助記符——字節轉換爲字。把AL中字節的符號擴展到AH中,若(AL)的最高有效位爲0 ,則(AH)=00;若(AH)的最高有 效位爲1, 則(AH)=0FFH。 

CF∶Carry Flag,進位標誌,在標誌寄存器的第0字節 ,記錄運算時從最高有效位產生的進位值(置1)。 做加 法時,CF位能夠用來表示無符號數的溢出(有符號數溢出用OF表示)。 

CLC∶ 指令助記符——標誌(進位)設置。設置CF=0。 

CLD∶ 指令助記符——清方向標誌。使DF=0 。這樣,當執行字節串操做指令時,地址自動增1 ;當執行字串操做指令 時,地址自動增2 。 

CLI∶ 指令助記符——中斷容許標誌設置。設置IF=0 。 

CMC∶ 指令助記符——標誌(進位)設置。CF取反。 

CMP∶ 指令助記符——比較。對於「 CMP AX,BX」 ,若是是兩個無符號數比 較(減), 若結果沒有產生借位,即CF=0, 則(AX)≥(BX);若CF= 1,則(AX)〈(BX)。 若是是兩個帶符號數比 較,則 當沒有溢出(OF=0)時,若SF=0,則(AX)〉(BX) 若SF=1,則(AX)〈(BX) 當產生溢出 (OF=1)時,若SF=0,則(AX)〈(BX) 多SF=1,則(AX)〉(BX) 簡煉的結論,若 OF 異 或 SF=0,則(AX)〉(BX) 若 OF 異或 SF=1,則(AX)〈(BX) 

CMPS∶指令助記符——串比較。一般用CMPSB或CMPSW。 

CMPSB∶ 指令助記符——串比較。將DS段SI指出的字節數據減去ES段DI指出的字節數據(不保存結果),而後根據相減結果設置標誌位 (兩個數據相等,則ZF=1)。 並由方向標誌DF修改SI 和DI中的地址,即當DF=0時,地址都加1; 當DF=1 時, 地址都減1 。 

CMPSW∶ 指令助記符——串比較。將DS段SI指出的字數據減去ES段DI指出的字數據(不保存結果),而後根據相減結果設置標誌位(兩個 數據相等,則ZF=1)。 並由方向標誌DF修改SI 和DI中的地址,即當DF=0時,地址都加2; 當DF=1時, 地 址都減2 。 

COMMON∶僞指令——段定義(組合類型)。該段與其它模塊中全部也說明爲COMMON的同名,同'類別'段共享相同的存儲區域,即這些段的起始地址都 相同,共享的公共存儲區域的長度是各模塊同名段中最大的長度。使用COMMON方式可使不一樣模塊中的不一樣變量或標號做用於相同的存儲單元。 

CS∶Code Segment,代碼段寄存器,存放當前運行的代碼段起始地址(高16位)。代碼段存放當前正在運行的程序。 

CWD∶ 指令助記符——字轉換爲雙字。把AX中字節的符號擴展到DX中,若(AX)的最高有效位爲0 ,則(DX)=0000;若 (AX)的最高有效位爲1, 則(DX)=0FFFFH。 

CX∶Count, 通用寄存器。在循環和串處理指令中用做隱含的計數器。其中CH是高 8位,CL是低 8位。 

DAA∶ 指令助記符——加法的十進制調整(壓縮的BCD碼)。 無操做數,調整 的加法結果在AL中。調整方法是,若是 AL的低 4位大於9 或AF=1 ,則加 6 到AL並置AF=1 ;若是AL的高 4 位大於 9或CF=1 ,則加60H 到AL,並 置CF=1 。 

DAS∶ 指令助記符——減法的十進制調整(壓縮的BCD碼)。 調整方法是,若AF=1 或AL的低4位爲A—F,則 (AL)減06H,且AF置 1;若CF=1 或AL的高 4位爲A—F,則(AL)減60H,且CF置1。 

DB∶ 僞指令——定義字節。其後的每一個操做數佔用一個字節。如果字符串, 必須用引號' '括起來,字符串不能超過 255 個字符,字符串自左至右以 字符的ASCII碼按地址遞增的順序依次存放。 

DD∶ 僞指令——定義雙字。其後的每一個操做數佔用二個字(低字在前)。 DD還能夠把其後的變量或標號的偏移地址和所在段首址存入 存儲器內指定 的雙字單元(即DD前面的變量)中,第一個字中存放DD後的變量的偏移地址, 第二個字中存放該變量所在段的段首 址。 

DEC∶ 指令助記符——減1 。操做數能夠是寄存器或存儲器單元,但不能是段 寄存器或當即數。 

DF∶Direction Flag,方向標誌,在標誌寄存器的第 10字節,在串處理指令中控制處理信息的方向。DF爲1時是反 向,每次操做後使SI和DI減量(這樣就使串處理從高地址向低地址方向處理);當DF爲0時是正向,使SI和DI增量。 

DI∶Destination Index,目的變址寄存器。與ES聯用,用來肯定數據段中某一存儲單元的偏移地址。在串處理指令中,DI指出 目的操做數的地址,隱含段爲當前的附加段。 

DIV∶ 指令助記符——無符號數除法。
對於字節操做,16位被除數(若被除數爲 8位,需用符號擴展的方法 ,即用CBW 指令擴展到16位)放在AX 中, 8位除數爲源操做數,相除結果 ,8位商在AL中,而 8位餘數在AH中。
對於字操做,32位被除數(若被除數爲16位,用CWD 指令擴展到32位)放在DX和AX中,16位除數爲源操做數,相除結果,字(16 位)商在AX中 ,字餘數在DX中。
源操做數不能是當即操做數,指令執行後,源操做數的值不變。
若是商超過目標寄存器能存放的最大數值時,系統產生0 類中斷。
被除數若須要轉換爲雙精度值時,必定不能用符號擴展,而只能將高16位送0("MOV DX,0")。 

DQ∶ 僞指令——定義四字。其後的每一個操做數佔用四個字。 

DS∶Data Segment,數據段寄存器。存放數據段的起始地址(高16位)。數據段存放當前運行程序所用的數據,若是程序中使用了串處 理指令,則其源操做數也存放在數據段中。 

DT∶ 僞指令——定義十字節。其後的每一個操做數佔用十個字節。 

DUP∶ 複製操做符。DUP 前面的常量或表達式的值(正整數)指明DUP 後面的括號中的操做數之重複次數。 

DW∶ 僞指令——定義字。其後的每一個操做數佔用一個字(低字節在前,高字節在後)。DW能夠給兩個字符組成的字符串(用' '括起 來) 分配兩個字節的存儲單元(前一個字符在高字節)。DW還能夠把其後的變量或標號的偏移地址存入存儲器的指定單元(即DW前的變量)。 

DX∶Data,通用寄存器。在做雙字長運算時,把DX和AX組合在一塊兒存放一個雙字數,DX用來存放高位字。此外,對某些I/O 操做,DX 可用來存放 I/O的端口地址。其中DH是高 8位,DL是低 8位。 

EA∶ 教材符號----某一存儲單元的偏移地址,即該單元到它所在段首址的字節距離。 

ELSE∶僞指令——條件。條件不知足時彙編ELSE至ENDIF之間的程序塊。 

END∶ 僞指令——程序模塊結束。主程序模塊結束,END 後要接標號(存儲器地址),指出程序開始執行的地址 。子程 序不用。 

ENDIF∶僞指令——條件(結尾)。 

ENDM∶宏指令——①宏定義(結尾)。②重複塊(結尾)。 

ENDP∶僞指令——過程(子程序)定義(結尾)。 

ENDS∶僞指令——段定義或結構定義(結尾)。 

ES∶Extra Segment,附加段寄存器。 用於存放附加段的起始地址(高16位)。附加段是一個輔助的數據區,也是串處理 指令的目的操做數據存放區。 

ESC∶指令助記符——交權給外部協處理器。是在大模式下使用的一條指令,它可使外部協處理器從 8086/8088指令流中得到一個操做碼 和一個操做數,並使用8086/8088 的尋址方式。指令後的操做碼是一個 6位的當即數 ,其中 3位用來 指明哪個協處理器工做,另外 3位指明這個處理器執行什麼指令。隨後的源操做數如果寄存器,則8086/8088 直接將其內容放 置在數據總線上;若是這個源操做數是存儲變量,則8086/8088 從存儲器中取出操做數並放到數據總線上,從而使外部協處理器能夠獲取這個 操做數,對它進行運算。 

EQ∶ 關係運算符——相等。若知足條件,輸出結果爲全1 (全部的位),不然爲全0 。 

EQU∶ 等價僞指令 。格式爲"符號名 EQU 表達式". EQU能夠把它前面的符號定義爲一個 常量或一個能求出常數值的表達式,或定義爲別的符號名,甚至定義爲一條可執行的命令。不得重複定義。
例一,"新變量名 EQU THIS DWORD",該語句將緊跟其後的變量從新定義爲雙字類,以新變量名命名。數據 存儲區首址不變。
例二,"新變量名 EQU WORD PTR 舊變量名",該語句將舊變量從新定義爲字類型,以新變量名命 名。數據存儲區首址不變。 

EVEN∶僞指令。它使此語句後面的程序或數據塊的起始地址爲偶數。 

EXTRN∶僞指令——定義外部符號。格式是 EXTRN 符號名:類型 。表示本模塊中須要引用但倒是在其餘模塊中定義 說明爲PUBLIC的那些符號(符號常量、變量、標號以及過程名)。符號類型必須與他們在其餘模塊定義時的符號類型保持一致。 

FLAGS∶ 標誌寄存器(即PSW)。 

GE∶ 關係運算符——大於等於。若知足條件,輸出結果爲全 1 (全部的位),不然爲全0 。 

GROUP∶ 僞指令——分組。把模塊中若干不一樣名的段集合成一個組,並賦予一個組名,使它們都裝在一個物理段中(64KB)。能夠獲得較緊湊 的代碼,組內各段間的跳轉均可以看做是段內跳轉。
格式是 組名 GROUP <段名1,段名2,……> 

GT∶ 關係運算符——大於。若知足條件,輸出結果爲全1 (全部的位),不然爲全0 。 

H∶ 數據類型後綴,表示十六進制常量。 

HIGH∶ 字節分解運算符(操做符)。用來從運算對象(一個數或地址表達式)中分離出(取)高字節。 

HLT∶ 指令助記符——停機。該指令使處理器處於暫停狀態,該狀態能夠由復位信號、非屏蔽中斷請求信號以及IF=1 狀況下可屏蔽 中斷信號清除。 

IDIV∶指令助記符——帶符號數除法。  對於字節操做,16位被除數(若被除數爲 8位,需用符號擴展的方法,即用CBW 指令 擴展到16位)放在AX中, 8位除數爲源操做數,相除結果,8位商在AL中,而 8位餘數在AH中。  對於字操做,32位被除數 (若被除數爲16位,用CWD 指令擴展到32位)放在DX和AX中,16位除數爲源操做數,相除結果,字(16位)商在AX中,字餘數在DX 中。  餘數的符號必須和被除數的符號相同。 

IF∶Interrupt Flag,①中斷標誌, 在標誌寄存器的第9字節,當IF爲1時,容許中斷,即CPU響應外設的中斷請 求。②僞指令——條件(表達式的值不等於0 爲真)。若條件成立,則彙編整個程序塊;但中間如有ELSE命令,則只彙編到ELSE;當條件不成 立時,只彙編從ELSE到ENDIF 之間的程序塊。

IF1∶ 僞指令——條件(如果第一趟掃描,條件爲真)。 

IF2∶ 僞指令——條件(如果第二趟掃描,條件爲真)。 

IFB∶ 僞指令——條件(若其後的參數對應的實參存在,爲真)。 

IFDEF∶ 僞指令——條件(若其後的符號已定義或被說明爲外部符號,則條件爲真)。 

IFDIF∶僞指令——條件(若兩個字符串參數不相同,則條件爲真)。 

IFE∶ 僞指令——條件(表達式的值等於0 時,條件爲真)。 

IFIDN∶僞指令——條件(若兩個字符串參數相同,則條件爲真)。 

IFNB∶僞指令——條件(若其後的參數對應的實參不存在,爲真)。 

IFNDEF∶僞指令——條件(若其後的符號未定義或未被說明爲外部符號,則條件爲真)。 

IMUL∶指令助記符——帶符號的整數乘法。  對於字節乘法,(AL)*(源操做數)---> AX;   對於字乘法, (AX)* (源操做數)---> AX和DX;   若結果的高半部分(AH或DX,對應字節和字)是低半部分的符號擴展,則 CF=0,OF=0; 不然,CF=1,OF=1,表示在AH(對於字節)或DX(對於字)中包含結果的有效值。 

IN∶指令助記符——輸入。容許把一個字或字節由輸入端口(port)傳送到AX或AL。端口地址能夠用直接尋址(IN AL n), 也可用DX間接尋址(IN AL,DX)。8 位地址直接尋址,可尋址256 個端口;DX間接尋址,可尋址64K個端 口。 

INC∶ 指令助記符——加1。 操做數能夠是寄存器或存儲器單元,但不能是段寄存器或當即數。狀態標誌CF不受影響。 

INCLUDE∶ 僞指令。當宏彙編程序彙編到INCLUDE僞指令時,當即打開INCLUDE指示的文件,並把它彙編到當前的源文件中去,直 到該文件被彙編結束,彙編程序繼續彙編INCLUDE僞指令以後的語句。INCLUDE能夠嵌套。 

INT∶ 指令助記符——中斷調用。操做數是用戶定義的中斷類型,它能夠實現256種不一樣的中斷。當指令執行時,首先將標誌寄存器內容進棧,清 除IF和TF標誌並將當前CS內容進棧;而後將中斷類型乘以4 ,獲得中斷向量地址;最後取中斷向量的第二個字送CS,將IP進棧,取中斷向量 的第一個字送IP。因爲CS:IP指向中斷服務程序,所以能夠實現指定中斷類型的段間調用。 

INTO∶指令助記符——溢出中斷。只有OF=1 時才進入溢出中斷(IF和TF被改成0)。 

IP∶Instruction Pointer,控制寄存器——指令指針寄存器。用來存放代碼段中指令的偏移地址。在程序運行的過程當中,它始終 指向下一條指令的首地址。它與CS聯用,肯定下一條要執行的指令的物理地址。IP寄存器不能用於算術運算,也不能直接存取,但能夠用控制轉移指令加以改 變。 

IRET∶指令助記符——中斷返回。執行該指令時,從棧中退出三個16位的值,分別送IP、CS和標誌寄存器。 

IRP∶ 宏指令——重複塊(以ENDM結束)。IRP 形參,<實參1,實參2,…> 這種宏指令用於帶當即數的僞操 做。實參是用戶指定的當即數,它的個數就是重複的次數,每重複一次,就用一個實參代替形參。 

IRPC∶宏指令——重複塊(以ENDM結束)。IRPC 形參,字符串這種宏指令用於帶字符串的重複僞操做。重複次數由字符串中字符個數確 定。每次重複,依次用字符串中的一個字符替代形參,直到字符替代完畢。 

JA∶ 無符號數條件轉移指令助記符——(無符號數比較)高於轉移(等價JBE)。CF=0,且ZF=0 則轉移(段內直接短轉 移)。 

JAE∶ 無符號數條件轉移指令助記符——(無符號數比較)高於或等於轉移(等價JNB)。CF=0 , 或ZF=1 則 轉移(段內直接短轉移)。 

JB∶ 無符號數條件轉移指令助記符——(無符號數比較)低於轉移(等價JNAE)。CF=1, 且ZF=0 則轉移(段 內直接短轉移)。 

JBE∶ 無符號數條件轉移指令助記符——(無符號數比較)低於或等於轉移(等價JNA)。CF=1 或ZF=1 則轉 移。 

JC∶ 簡單條件轉移指令助記符——有進位轉移。CF=1 則轉移(段內直接短轉移,產生 8位的位移量,即轉移地址的偏 移量在—128 到+127之間)。 

JCXZ∶指令助記符——條件轉移。(CX)=0, 則轉移(段內直接短轉移?)。 

JE∶ 簡單條件轉移指令助記符——(兩數比較)相等轉移(同JZ)。前次操做結果爲0,ZF=1則轉移(段內直接短轉移)。 

JG∶有符號數條件轉移指令助記符——(有符號數比較)大於轉移(等價JNLE)。SF和OF同號,且ZF=0 時轉移。(段內直接短轉移) 

JGE∶ 有符號數條件轉移指令助記符——(有符號數比較)大於或等於轉移(等價於JNL)。 當SF和OF同號,或ZF=1, 則 轉移(段內直接短轉移)。 

JL∶ 有符號數條件轉移指令助記符——(有符號數比較)小於轉移(等價於JNGE)。當SF和OF異號,且ZF=0 時轉移(段內 直接短轉移)。 編程

 

JLE∶ 指令助記符——(有符號數比較)小於或等於轉移(等價於JNG)。當SF和OF異號或ZF=1時轉移(段內直接短轉移)。 

JMP∶ 指令助記符——無條件轉移。無條件轉移到指令所指示的目標地址,並從該地址開始執行。目標地址能夠從指令中直接獲得,也能夠從指令中 給定的寄存器或存儲器中獲得。
1、段內直接短轉移 JMP SHORT 標號。標號是轉移的目的地址,由它肯定一個 8位位移量。這個位 移量被加到IP寄存器中。位移量是一個帶符號數,負數表示向前轉移,正數表示向後轉移。轉移範圍是—128至+127。
2、段內直接近轉移 JMP NEAR PTR 標號。 標號是轉移的目的地址,由它肯定一個 16位位移量。這個位移量被加到IP寄存器中。位移量是一個帶符號數,負數表示向前轉移,正數表示向後轉移。轉移範圍是—32768至+32767。
3、段內間接轉移 ①JMP AX (段內寄存器間接轉移);②JMP [BX](段內存儲器間接轉移)。 將指令中給定的寄存器或存儲單元中的內容送到IP中。
4、段間直接轉移 JMP FAR PTR 標號。 標號爲符號地址。 

JNB∶ 無符號數條件轉移指令助記符——(無符號數比較)不低於轉移(等價JAE)。CF=0,或ZF=1 則轉移(段內直接短轉 移)。 

JNBE∶無符號數條件轉移指令助記符——(無符號數比較)不低於且不等於轉移(等價JA)。CF=0, 且ZF=0 則轉移(段內 直接短轉移)。 

JNC∶ 簡單條件轉移指令助記符——前次操做無進或進位位轉移。CF=0 則轉移(段內直接短轉移)。 

JNE∶ 簡單條件轉移指令助記符——不相等轉移(同JNZ)。前次操做結果不等於0,ZF=0 則轉移(段內直接短轉移)。 

JNG∶ 指令助記符——(有符號數比較)不大於轉移(等價於JLE)。當SF和OF異號或ZF=1時轉移(段內直接短轉移)。 數組

JNGE∶指令助記符——(有符號數比較)不大於且不等於轉移(等價於JL)。當SF和OF異號,且ZF=0 時轉移(段內直接短 轉移)。 

JNL∶ 指令助記符——(有符號數比較)不小於時轉移(等價於JGE)。 當SF和OF同號,或ZF=1, 則轉移(段 內直接短轉移)。 

JNLE∶指令助記符——(有符號數比較)不小於且不等於轉移(等價JG)。SF和OF同號,且ZF=0 時轉移。 

JNO∶簡單條件轉移指令助記符——前次操做無溢出轉移。OF=0 則轉移(段內直接短轉移)。 

JNP∶ 簡單條件轉移指令助記符——奇校驗轉移。PF=0 則轉移(段內直接短轉移)。 

JNS∶ 簡單條件轉移指令助記符——前次操做結果爲正數轉移。SF=0 則轉移(段內直接短轉移)。 

JNZ∶ 簡單條件轉移指令助記符——不相等轉移(同JNE)。ZF=0 則轉移(段內直接短轉移)。 

JO∶ 簡單條件轉移指令助記符——前次操做溢出轉移。OF=1 則轉移(段內直接短轉移)。 

JP∶ 簡單條件轉移指令助記符——偶校驗轉移。前次操做結果中1的個數是偶數,PF=1 則轉移(段內直接短轉移)。 

JPE∶ 簡單條件轉移指令助記符——偶校驗轉移。前次操做結果中1的個數是偶數,PF=1 則轉移(段內直接短轉移)。 

JPO∶ 簡單條件轉移指令助記符—奇校驗轉移。PF=0 則轉移(段內直接短轉移)。 

JS∶ 簡單條件轉移指令助記符——前次操做結果爲負數轉移。SF=1 則轉移(段內直接短轉移)。 

JZ∶ 簡單條件轉移指令助記符——相等轉移(同JE)。ZF=1 則轉移(段內直接短轉移)。 

LABLE∶ 定義符號名僞指令——爲當前存儲單元定義一個指定類型的變量或標號。
1、LABLE 與變量連用。
例 TIMB LABLE BYTE
TIMW DW 4142H  第一句給第二句定義的字變量TIMW取一個新名字TIMB,而且修改類型屬性爲字節。之後如 果以字類型訪問該變量時,應使用變量名TIMW,以字節類型訪問該變量時,應使用變量名TIMB。
2、LABLE 與標號連用。
例 POINTF LABLE FAR     POINTN:MOV AX,[BX+SI]  第一句給 第二句隱含定義的近標號POINTN取一個新名字POINTF,並將類型屬性修改成FAR 。這樣就容許做爲
其餘代碼段中轉移或調用指令的目標標號(這時標號是POINTF)。 

LAHF∶指令助記符——標誌寄存器(PSW)低8位內容送AH中。 

LDS∶ 指令助記符——取地址指針到數據段寄存器。要求源操做數是一個雙字長存儲器操做數,目的操做數是16位通用寄存器、指針或變址寄存 器,但不能是段寄存器。指令執行時,雙字長存儲器操做數中的低地址傳送到指定的寄存器中,高地址傳送到DS寄存器中。
例:LDS SI,DATA_SEG[DI] 由DATA_SEG[DI]能夠獲得在數據段的有效地址EA(即段內偏移量)。在 EA和EA+2中存放着目標指針。EA存放的是目標指針的段內偏移量,送至SI;EA+2存放的是目標指針的段地址,送至DS。
例:變量名一 DD 變量名二
......
LDS SI 變量名一
變量名二所在數據段的EA和段地址存放在變量名一中,EA送至SI,EA+2存放的段地址送至DS。 

LE∶ 關係運算符——小於等於。若知足條件,輸出結果爲全 1(全部的位),不然爲全0 。 

LEA∶指令助記符——取有效地址。將存儲器操做數的偏移地址傳送到通用寄存器、指針或變址寄存器中。該指令經常使用來創建串操做指令所須要的寄存器指針。
例一 LEA SI,變量名(與MOV SI OFFSET 變量名 等效);
例二 LEA AX,[AX] (將SI所指存儲單元的EA送至AX,而MOV AX,[SI]送的是該存 儲單元存放的內容) 

LENGTH∶數值返回運算符。其加在一個變量名前面,返回的數值是數組變量的元素個數。若是變量是用DUP 說明的,則返回DUP前面的數 值;若是沒有DUP 說明的,則返回的值老是1。 

LES∶ 指令助記符——取地址指針到數據段寄存器。要求源操做數是一個雙字長存儲器操做數,目的操做數是16位通用寄存器、指針或變址寄存 器,但不能是段寄存器。指令執行時,雙字長存儲器操做數中的低地址傳送到指定的寄存器中,高地址傳送到ES寄存器中。 

LDCK∶ 指令助記符——封鎖總線。加在任何指令前面的單字節前綴指令,配合用來維持總線的鎖存信號,直到與其配合的指令執行完爲止。 

LOCAL∶ 宏指令——局部符號(變量,標號)定義。在宏擴展時,彙編程序給LOCAL 後的形式參數指定特殊的符號,而後用這些 符號替換宏指令體中LOCAL 指出的形式參數。這樣可避免這些符號在屢次調用宏時發生重複定義。 

LODS∶指令助記符——裝入串。通常用LODSB或LODSW。 

LODSB∶ 指令助記符——字節裝入(從字節串中取數)。它將DS段SI指出的字節數據送入AL寄存器中,並根據方向標誌DF修改SI中的地 址。即當DF=0時,地址加1 ;DF= 1 時,地址減1 。 

LODSW∶ 指令助記符——字裝入(從字串中取數)。 它將DS段SI指出的字數據送入AX寄存器中,並根據方向標誌DF修改SI 中的地址。即當DF=0 時,地址加2 ;DF= 1 時,地址減2 。 

LOOP∶指令助記符——循環控制。每執行一次,CX的內容減1 ,若減1 後不爲0 ,則轉移到目標地址;不然,執行 LOOP以後的指令。 

LOOPE∶ 指令助記符——循環控制(等於LOOPZ)。每執行一次,CX的內容減1, 若減1 後不爲0 , 且ZF=1, 則轉移到目標地址;不然,執行LOOPE 以後的內容。 

LOOPZ∶指令助記符——循環控制(等於LOOPE)。每執行一次,CX的內容減1 ,若減1 後不爲0 ,且 ZF=1, 則轉移到目標地址;不然,執行LOOPZ 以後的內容。 

LOOPNE∶指令助記符——循環控制(等於LOOPNZ)。每執行一次,CX的內容減1 ,若減1 後不爲0 ,且 ZF=0, 則轉移到目標地址;不然,執行LOOPNE以後的內容。 

LOOPNZ∶指令助記符——循環控制(等於LOOPNE)。每執行一次,CX的內容減1 ,若減1 後不爲0 ,且 ZF=0, 則轉移到目標地址;不然,執行LOOPNZ以後的內容。 

LOW∶ 字節分解運算符(操做符)。用來從運算對象(一個數或地址表達式)中分離出(取)低字節。 

LT∶ 關係運算符——小於。若知足條件,輸出結果爲全1 (全部的位),不然爲全0 。 

MACRO∶ 宏指令——宏定義。 

MASK∶運算符。使得記錄中指定字段各位均爲1 ,其餘各位均爲0 。 

MEMORY∶僞指令——段定義(組合類型)。該段在存儲器中應該定位在全部其餘段的最高地址。若是不止一個段選用MEMORY方式,則把第一個遇到的段 做MEMORY處理,而其餘段均做COMMON方式處理。 

MOD∶ 算術運算符——模除(取整除後的餘數)。 

MOV∶ 指令助記符——通用數據傳送。注意,①兩個段寄存器之間不能直接傳送數據;②兩個儲存單元之間不能直接傳送數據(能夠用MOVS); 兩個操做數中必須有一個是寄存器或當即數;③當即數和段寄存器CS不能做爲目的操做數。 

MOVS∶指令助記符——串傳送。與MOVSB和MOVSW類似,但必須說明數據串類型(字或字節)。 

MOVSB∶ 指令助記符——串(字節)傳送。把由SI指向的數據段中的一個字節數據傳送到由DI指向的附加段內一個字節存儲單元中去,並同時 根據方向標誌對SI和DI中的地址進行修改。當DF=0時, 地址都加1 ;當DF=1時 ,地址都減1 。 

MOVSW∶ 指令助記符——串(字)傳送。把由SI指向的數據段中的一個字數據傳送到由DI指向的附加段內一個字存儲單元中去,並同時根據方 向標誌對SI和DI中的地址進行修改。當DF=0時, 地址都加2 ;當DF=1時,地址都減2 。 

MUL∶ 指令助記符——無符號數乘法。  字節乘法:(AL)*(源操做數)->AX
字乘法: (AX)*(源操做數)->DX和AX
若結果的高半部分(AH或DX,對應字節和字)爲非0 值,則CF和OF置1;不然CF和OF清0。 

NAME∶僞指令——模塊定義。程序將對給定的程序模塊取模塊名。格式是,NAME 模塊名。 彙編處理時,一個模塊就是一個獨立的 彙編單位。彙編處理只進行到模塊結束語句END 爲止。若是該模塊是主模塊,END 語句能夠指出一個標號,它表示該程序的啓動地 址。 

NE∶關係運算符——不等。若知足條件,輸出結果爲全1 (全部的位),不然爲全0 。 

NEG∶ 指令助記符——求補。將目的操做數的每一位求反(包括符號位)後加1.若在字節操做時對—128,或在字操做時對—32768取補, 則操做數不變,但溢出標誌OF置位。操做數能夠是寄存器或存儲器單元,但不能是段寄存器或當即數。結果送回目的操做數。執行結果不但影響標誌位AF、 CF、OF、PF、SF和ZF,並且通常老是置CF=1 (除非操做數爲0)。 
NONE∶僞指令——段定義(組合類型)。本段與其它段邏輯上不發生關係,每段都有本身的基地址。這是隱含的組合類型。 

NOP∶ 指令助記符——空操做。用於程序調試。 

NOT∶ 邏輯運算符(在語句的操做數部分)或邏輯操做指令助記符(在語句的操做碼部分)——按位非(求反)。將目的地址中的內容逐位取反後再 送入目的地址中。 

OF∶Overflow Flag, 溢出標誌,在標誌寄存器的第11字節。在運算過程當中,如操做數超出了機器能表示的範圍,此時 OF 置1。做加法時,OF位是根據操做數的符號及其結果狀況來設置的,若兩個操做數的符號相同,而結果的符號與之相反時,OF置1,不然置 0。 

OFFSET∶數值返回運算符。其加在一個變量名或標號前面,返回的數值是該變量名或標號所在的段的偏移地址。 

OPD∶ 教材符號--目的操做數。 

OPR∶ 教材符號--源操做數。 

OR∶ 邏輯運算符(在語句的操做數部分)或邏輯操做指令助記符(在語句的操做碼部分)——按位或。進行「或」運算的兩位中任一位是 1, 則結果爲1 。 

ORG∶ 僞指令——定位(置彙編地址計數器)。在每段源程序或數據塊的開始,指明此語句後面的程序或數據塊的起始地址,其他指令或數據就連續 存放在之後的地址單元中。
例一 ORG $+10 表示跳過10個字節。
例二 ORG 數值表達式(值爲0-65535) 表示$改成數值表達式的值。 

OUT∶ 指令助記符——輸出。把AX或AL中的內容傳送到一個輸出端口。尋址方式與IN相同。 

PA∶教材符號--某一存儲單元的物理地址。  對於指令,PA=(CS)左移4位+(IP);
對於堆棧段數據,PA=(SS)左移4位+(SP);或PA=(SS)左移4位+(BP);
對於數據段和附加數據段數據,PA=(DS或ES)+該變量的偏移地址。 

PARA∶僞指令——段定義(定位類型方式)。規定在定位時每一個段的起始地址老是16的整倍數,最後四位二進制數必定是0 。這種定位方式最簡 單,但段間每每有空隙(最多爲15個字節)。缺省定位方式是按PARA定位。 

PAGE∶①僞指令——段定義(定位類型方式)。要求段起始地址是 256的整倍數,即段的邊界必須是頁的邊界。段地址的最低兩位(16進制 數)必須是0 。②僞指令——格式控制。指定彙編程序所產生的列表文件每頁多少行(10—255), 每行多少字符 (60-132)。或指定輸出新的一頁(用+號)。 

PF∶Parity Flag,奇偶標誌,在標誌寄存器的第2字節,當運算結果(指低8位)中1的個數爲偶數時置1,不然置0。該標誌主要用來 檢測數據在傳輸過程當中的錯誤。 

POP∶指令助記符——出棧。將棧頂元素彈出送至某一寄存器,段寄存器(CS除外)或存儲器中。首先將SP指的內容送至低8位,SP加1;再將SP指的內 容送入高8位,SP再加1。 

POPF∶指令助記符——將堆棧頂端的字數據送入標誌寄存器。對於TF和OF置位可先將數值置於AX中,壓入堆棧,再用POPF送入標誌寄存器。此方式對 TF和OF標誌位是惟一可行的置位方法。 

PROC∶僞指令——過程(子程序)定義(起始)。定義一個子程序,並說明它是NEAR或FAR 過程。定義的過程若是由 DOS直 接裝入並啓動執行,則該過程必須定義爲 FAR過程。 

PSW∶Program Status Word,程序狀態字寄存器,由條件碼標誌(OF、SF、ZF、AF、PF、CF)和控制標 志(DF、IF、TF)構成。
 11 10 9  8 7  6    4    2    0
 ─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
 │OF│DF│IF│TF│SF│ZF│ │AF│ │PF│ │CF│
 ─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ 

PTR∶ 修改屬性運算符。用來明確指出變量、標號或地址表達式的類型屬性( 只在所在的指令內有效)。類型放在PTR 之 前,能夠是BYTE、WORD、 DWORD、NEAR、FAR。 

PUBLIC∶①僞指令——段定義(組合類型)。該段與其它模塊中說明爲PUBLIC類型的同名同'類別'段組合起來,造成一個物理段(小於等於 64K),公用一個段基址,②僞指令——定義全局符號。表示該模塊中定義的哪些符號常量、變量、標號以及過程名(幾個模塊公用的過程通常都是FAR 過 程)等能夠被其餘模塊所引用。 

PURGE∶ 宏指令——取消宏定義。 

PUSH∶指令助記符——進棧。把寄存器,段寄存器中的一個字數據壓入堆棧。高8位先進,SP減1;低8位後進,SP再減1。 

PUSHF∶ 指令助記符——把標誌寄存器的內容壓入堆棧。在子程序調用和中斷服務中可用來保護標誌位(恢復用POPF)。 

RCL∶ 指令助記符——帶進位循環左移。
格式爲:RCL 目的操做數,1
或RCL 目的操做數,CL  (其中CL中存放的是移動次數)
┌─┐  ┌───────────────┐
┌│CF│← │ ←───────────── │←┐
│└─┘  └───────────────┘ │
└───────────────────────┘ 

RCR∶ 指令助記符——帶進位循環右移。
┌───────────────┐ ┌─┐
┌→│ ─────────────→ │→│CF│─┐
│ └───────────────┘ └─┘ │
└───────────────────────┘ 

RECORD∶僞指令——設計一個單字節或雙字節的記錄格式。指令格式爲,
記錄名 RECORD 字段名1:=表達式,字段名2:=表達式 ……
記錄定義後,必須利用初始化記錄的方法來定義存儲器變量,格式爲,
變量名 記錄名 <表達式,表達式,……>
或變量名 記錄名 數量DUP(<表達式,……>) 

REP∶ 指令助記符——重複前綴。它可使串指令反覆執行(CX不等於0 就執行),每執行一次,CX的內容減1 。 

REPE∶指令助記符——重複前綴。當兩串相等,即ZF=1時 ,它可使串指令反覆執行(CX不等於0 就執行),每執行一 次,CX的內容減1 。(與REPZ徹底同樣) 

REPNE∶ 指令助記符——重複前綴。當兩串不相等,即ZF=0時, 它可使串指令反覆執行(CX不等於0 就執 行),每執行一次,CX的內容減1 。(與REPNZ徹底同樣) 

REPNZ∶ 指令助記符——重複前綴。當兩串不相等,即ZF=0時, 它可使串指令反覆執行(CX不等於0 就執 行),每執行一次,CX的內容減1 。(與REPNE徹底同樣) 

REPT∶宏指令——重複塊(以ENDM結束)。
格式爲: REPT 重複次數
重複塊
ENDM
這種宏指令用於肯定重複次數。 

REPZ∶指令助記符——重複前綴。當兩串相等,即ZF=1時, 它可使串指令反覆執行(CX不等於0 就執行),每執行一 次,CX的內容減1 。(與REPE徹底同樣) 

RET∶ 指令助記符——返回。
1、段內返回。先將棧頂的字送入IP,而後SP增2 。若帶當即數,SP再加當即數(丟棄一些在執行CALL以前入棧的參數)。
2、段間返回。棧頂的字送入IP後(SP增 2),再將棧頂的字送入CS,SP再增2 。若帶當即數,則SP再加當即數。 

ROL∶ 指令助記符——循環左移。
格式爲:ROL 目的操做數,1
或ROL 目的操做數,CL  (其中CL中存放的是移動次數)
┌─┐  ┌───────────────┐
│CF│←┬│ ←───────────── │←┐
└─┘ │└───────────────┘ │
└──────────────────┘ 

ROR∶ 指令助記符——循環右移。
┌───────────────┐  ┌─┐
┌→│ ─────────────→ │┬→│CF│
│ └───────────────┘│ └─┘
└──────────────────┘ 

SAHF∶指令助記符——將AH 寄存器的內容送入標誌寄存器(PSW)的低字節中,標誌寄存器高八位保持不變。 

SAL∶ 指令助記符——帶符號數的算術左移。常常用來乘以2。
格式爲: SAL 目的操做數,1
當移位次數大於 1時,則移位次數應預先置於CL寄存器中。
格式爲: SAL 目的操做數,CL
┌─┐ ┌───────────────┐
│CF│←│ ←───────────── │← 0
└─┘ └───────────────┘
若是符號位發生變化時,就將 1送到OF標誌,表示移位前操做數的最高位與移位後的最高位不一樣。 

SAR∶ 指令助記符——帶符號數的算術右移。符號位保持不變。常常用來除以2。當移位次數大於 1時,則移位次數應預先置於CL寄 存器中。
┌───────────────┐ ┌─┐
┌→│ ─────────────→ │→│CF│
│ └───────────────┘ └─┘
└──┘ 

SBB∶ 指令助記符——帶借位減法(減去CF的值)。用於多字節減法運算。兩高位字相減,並減去低位的借位CF。 

SCAS∶指令助記符——串搜索(掃描)。一般用SCASB或SCASW。 

SCASB∶ 指令助記符——字節串掃描(搜索)。用AL寄存器中的內容與由ES段DI指定的一個字節數據進行比較(減),若相等(結果爲 0) ,ZF=1 。並依方向標誌DF的值修改DI中的地址,即DF=0 ,地址加1 ;DF=1 , 地址減 1。 

SCASW∶ 指令助記符——字串掃描(搜索)。 用AX寄存器中的內容與由ES段DI 指定的一個字數據進行比較 (減),若相等(結果爲0) ,ZF=1 。並依方向標誌DF的值修改DI中的地址,即DF=0 ,地址加2 ;DF=1 , 地址減 2。 

SEG∶ 數值返回運算符。其加在一個變量名或標號前面,返回的數值是該變量名或標號所在的段基址(段寄存器的內容)。 

SEGMENT∶ 段定義僞指令 。格式爲 段名 SEGMENT [定位方式][組合方式]['類 別']。在定義段的時候,還能夠在SEGMENT 語句中給出該段的類別,類別名是一個用單括號括起來的字符串。進行鏈接處理時,LINK程序 把類別名相同的全部段放在連續的存儲區域內。同類的各個段在鏈接時,先出現的在前,後出現的在後。 

SF∶Sign Flag, 符號標誌,在標誌寄存器的第7字節.記錄運算結果的符號,結果爲負時置1。 

SHL∶ 
1、算術運算符——左移(移1位至關於乘以2)。
2、指令助記符——無符號數的邏輯左移。常常用來乘以2。 當移位次數大於1 時,則移位次數應預先置於CL寄存器中,寫成 「SHL OPD CL」。
┌─┐ ┌───────────────┐
│CF│←| ←───────────── │← 0
└─┘ └───────────────┘ 

SHORT∶ 屬性運算符(操做符)。用來指定JMP 指令中轉向地址的屬性,指出轉向(目標)地址與本指令地址的字節距離在 -128到+127之間。 

SHR∶
1、算術運算符——右移(移1位至關於除以2)。
2、指令助記符——無符號數的邏輯右移。常常用來除以2。 當移位次數大於 1時,則移位次數應預先置於CL寄存器中,寫成 「SHR …,CL」。
┌───────────────┐ ┌─┐
0→ │ ─────────────→ │→│CF│
└───────────────┘ └─┘ 

SI∶Source Index,源變址寄存器。與DS聯用,用來肯定數據段中某一存儲單元的偏移地址。在串處理指令中,SI指出源操做數的地 址,隱含段爲當前的數據段。 

SIZE∶數值返回運算符。其加在一個變量前面,返回的是數組變量所佔的總字節數(LENGTH和TYPE返回值的乘積)。翻譯

相關文章
相關標籤/搜索