MUL∶
指令助記符——無(wú)符號數乘法?! ∽止澇朔ǎ海ˋL)*(源操作數)->AX
字乘法: (AX)*(源操作數)->DX和AX
若結果的高半部分(AH或DX,對應字節和字)為非0 值,則CF和OF置1;否則CF和OF清0。
NAME∶偽
指令——模塊定義。程序將對給定的程序模塊取模塊名。格式是,NAME 模塊名。 匯編處理時(shí),一個(gè)模塊就是一個(gè)獨立的匯編單位。匯編處理只進(jìn)行到模塊結束語(yǔ)句END 為止。如果該模塊是主模塊,END 語(yǔ)句可以指出一個(gè)標號,它表示該程序的啟動(dòng)地址。
NE∶關(guān)系運算符——不等。若滿(mǎn)足條件,輸出結果為全1 (所有的位),否則為全0 。
NEG∶
指令助記符——求補。將目的操作數的每一位求反(包括符號位)后加1.若在字節操作時(shí)對—128,或在字操作時(shí)對—32768取補,則操作數不變,但溢出標志OF置位。操作數可以是寄存器或存儲器單元,但不能是段寄存器或立即數。結果送回目的操作數。執行結果不但影響標志位AF、CF、OF、PF、SF和 ZF,而且一般總是置CF=1 (除非操作數為0)。
NONE∶偽
指令——段定義(組合類(lèi)型)。本段與其它段邏輯上不發(fā)生關(guān)系,每段都有自己的基地址。這是隱含的組合類(lèi)型。
NOP∶
指令助記符——空操作。用于程序調試。
NOT∶ 邏輯運算符(在語(yǔ)句的操作數部分)或邏輯操作
指令助記符(在語(yǔ)句的操作碼部分)——按位非(求反)。將目的地址中的內容逐位取反后再送入目的地址中。
OF∶Overflow Flag, 溢出標志,在標志寄存器的第11字節。在運算過(guò)程中,如操作數超出了機器能表示的范圍,此時(shí)OF 置1。作加法時(shí),OF位是根據操作數的符號及其結果情況來(lái)設置的,若兩個(gè)操作數的符號相同,而結果的符號與之相反時(shí),OF置1,否則置0。
OFFSET∶數值返回運算符。其加在一個(gè)變量名或標號前面,返回的數值是該變量名或標號所在的段的偏移地址。
OPD∶ 教材符號--目的操作數。
OPR∶ 教材符號--源操作數。
OR∶ 邏輯運算符(在語(yǔ)句的操作數部分)或邏輯操作
指令助記符(在語(yǔ)句的操作碼部分)——按位或。進(jìn)行“或”運算的兩位中任一位是 1,則結果為1 。
ORG∶ 偽
指令——定位(置匯編地址計數器)。在每段源程序或數據塊的開(kāi)始,指明此語(yǔ)句后面的程序或數據塊的起始地址,其余
指令或數據就連續存放在以后的地址單元中。
例一 ORG $+10 表示跳過(guò)10個(gè)字節。
例二 ORG 數值表達式(值為0-65535) 表示$改為數值表達式的值。
OUT∶
指令助記符——輸出。把AX或AL中的內容傳送到一個(gè)輸出端口。尋址方式與IN相同。
PA∶教材符號--某一存儲單元的物理地址?! τ?a style="color:#000000;text-decoration:none">指令,PA=(CS)左移4位+(IP);
對于堆棧段數據,PA=(SS)左移4位+(SP);或PA=(SS)左移4位+(BP);
對于數據段和附加數據段數據,PA=(DS或ES)+該變量的偏移地址。
PARA∶偽
指令——段定義(定位類(lèi)型方式)。規定在定位時(shí)每個(gè)段的起始地址總是16的整倍數,最后四位二進(jìn)制數一定是0 。這種定位方式最簡(jiǎn)單,但段間往往有空隙(最多為15個(gè)字節)。缺省定位方式是按PARA定位。
PAGE∶①偽
指令——段定義(定位類(lèi)型方式)。要求段起始地址是 256的整倍數,即段的邊界必須是頁(yè)的邊界。段地址的最低兩位(16進(jìn)制數)必須是0 。②偽
指令——格式控制。指定匯編程序所產(chǎn)生的列表文件每頁(yè)多少行(10—255), 每行多少字符(60-132)?;蛑付ㄝ敵鲂碌囊豁?yè)(用+號)。
PF∶Parity Flag,奇偶標志,在標志寄存器的第2字節,當運算結果(指低8位)中1的個(gè)數為偶數時(shí)置1,否則置0。該標志主要用來(lái)檢測數據在傳輸過(guò)程中的錯誤。
POP∶
指令助記符——出棧。將棧頂元素彈出送至某一寄存器,段寄存器(CS除外)或存儲器中。首先將SP指的內容送至低8位,SP加1;再將SP指的內容送入高8位,SP再加1。
POPF∶
指令助記符——將堆棧頂端的字數據送入標志寄存器。對于TF和OF置位可先將數值置于A(yíng)X中,壓入堆棧,再用POPF送入標志寄存器。此方式對 TF和OF標志位是唯一可行的置位方法。
PROC∶偽
指令——過(guò)程(子程序)定義(起始)。定義一個(gè)子程序,并說(shuō)明它是NEAR或FAR 過(guò)程。定義的過(guò)程如果由 DOS直接裝入并啟動(dòng)執行,則該過(guò)程必須定義為 FAR過(guò)程。
PSW∶Program Status Word,程序狀態(tài)字寄存器,由條件碼標志(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∶ 修改屬性運算符。用來(lái)明確指出變量、標號或地址表達式的類(lèi)型屬性( 只在所在的
指令內有效)。類(lèi)型放在PTR 之前,可以是BYTE、WORD、 DWORD、NEAR、FAR。
PUBLIC∶①偽
指令——段定義(組合類(lèi)型)。該段與其它模塊中說(shuō)明為PUBLIC類(lèi)型的同名同'類(lèi)別'段組合起來(lái),形成一個(gè)物理段(小于等于 64K),公用一個(gè)段基址,②偽
指令——定義全局符號。表示該模塊中定義的哪些符號常量、變量、標號以及過(guò)程名(幾個(gè)模塊公用的過(guò)程一般都是FAR 過(guò)程)等可以被其他模塊所引用。
PURGE∶ 宏
指令——取消宏定義。
PUSH∶
指令助記符——進(jìn)棧。把寄存器,段寄存器中的一個(gè)字數據壓入堆棧。高8位先進(jìn),SP減1;低8位后進(jìn),SP再減1。
PUSHF∶
指令助記符——把標志寄存器的內容壓入堆棧。在子程序調用和中斷服務(wù)中可用來(lái)保護標志位(恢復用POPF)。
RCL∶
指令助記符——帶進(jìn)位循環(huán)左移。
格式為:RCL 目的操作數,1
或RCL 目的操作數,CL ?。ㄆ渲蠧L中存放的是移動(dòng)次數)
┌─┐ ┌───────────────┐
┌│CF│← │ ←───────────── │←┐
│└─┘ └───────────────┘ │
└───────────────────────┘
RCR∶
指令助記符——帶進(jìn)位循環(huán)右移。
┌───────────────┐ ┌─┐
┌→│ ─────────────→ │→│CF│─┐
│ └───────────────┘ └─┘ │
└───────────────────────┘
RECORD∶偽
指令——
設計一個(gè)單字節或雙字節的記錄格式。
指令格式為,
記錄名 RECORD 字段名1:=表達式,字段名2:=表達式 ……
記錄定義后,必須利用初始化記錄的方法來(lái)定義存儲器變量,格式為,
變量名 記錄名 <表達式,表達式,……>
或變量名 記錄名 數量DUP(<表達式,……>)
REP∶
指令助記符——重復前綴。它可以使串
指令反復執行(CX不等于0 就執行),每執行一次,CX的內容減1 。
REPE∶
指令助記符——重復前綴。當兩串相等,即ZF=1時(shí) ,它可以使串
指令反復執行(CX不等于0 就執行),每執行一次,CX的內容減1 。(與REPZ完全一樣)
REPNE∶
指令助記符——重復前綴。當兩串不相等,即ZF=0時(shí), 它可以使串
指令反復執行(CX不等于0 就執行),每執行一次,CX的內容減1 。(與REPNZ完全一樣)
REPNZ∶
指令助記符——重復前綴。當兩串不相等,即ZF=0時(shí), 它可以使串
指令反復執行(CX不等于0 就執行),每執行一次,CX的內容減1 。(與REPNE完全一樣)
REPT∶宏
指令——重復塊(以ENDM結束)。
格式為: REPT 重復次數
重復塊
ENDM
這種宏
指令用于確定重復次數。
REPZ∶
指令助記符——重復前綴。當兩串相等,即ZF=1時(shí), 它可以使串
指令反復執行(CX不等于0 就執行),每執行一次,CX的內容減1 。(與REPE完全一樣)
RET∶
指令助記符——返回。
一、段內返回。先將棧頂的字送入IP,然后SP增2 。若帶立即數,SP再加立即數(丟棄一些在執行CALL之前入棧的參數)。
二、段間返回。棧頂的字送入IP后(SP增 2),再將棧頂的字送入CS,SP再增2 。若帶立即數,則SP再加立即數。
ROL∶
指令助記符——循環(huán)左移。
格式為:ROL 目的操作數,1
或ROL 目的操作數,CL ?。ㄆ渲蠧L中存放的是移動(dòng)次數)
┌─┐ ┌───────────────┐
│CF│←┬│ ←───────────── │←┐
└─┘ │└───────────────┘ │
└──────────────────┘
ROR∶
指令助記符——循環(huán)右移。
┌───────────────┐ ┌─┐
┌→│ ─────────────→ │┬→│CF│
│ └───────────────┘│ └─┘
└──────────────────┘
SAHF∶
指令助記符——將AH 寄存器的內容送入標志寄存器(PSW)的低字節中,標志寄存器高八位保持不變。
SAL∶
指令助記符——帶符號數的算術(shù)左移。經(jīng)常用來(lái)乘以2。
格式為: SAL 目的操作數,1
當移位次數大于 1時(shí),則移位次數應預先置于CL寄存器中。
格式為: SAL 目的操作數,CL
┌─┐ ┌───────────────┐
│CF│←│ ←───────────── │← 0
└─┘ └───────────────┘
如果符號位發(fā)生變化時(shí),就將 1送到OF標志,表示移位前操作數的最高位與移位后的最高位不同。
SAR∶
指令助記符——帶符號數的算術(shù)右移。符號位保持不變。經(jīng)常用來(lái)除以2。當移位次數大于 1時(shí),則移位次數應預先置于CL寄存器中。
┌───────────────┐ ┌─┐
┌→│ ─────────────→ │→│CF│
│ └───────────────┘ └─┘
└──┘
SBB∶
指令助記符——帶借位減法(減去CF的值)。用于多字節減法運算。兩高位字相減,并減去低位的借位CF。
SCAS∶
指令助記符——串搜索(掃描)。通常用SCASB或SCASW。
SCASB∶
指令助記符——字節串掃描(搜索)。用AL寄存器中的內容與由ES段DI指定的一個(gè)字節數據進(jìn)行比較(減),若相等(結果為0) ,ZF=1 。并依方向標志DF的值修改DI中的地址,即DF=0 ,地址加1 ;DF=1 ,地址減 1。
SCASW∶
指令助記符——字串掃描(搜索)。 用AX寄存器中的內容與由ES段DI 指定的一個(gè)字數據進(jìn)行比較(減),若相等(結果為0) ,ZF=1 。并依方向標志DF的值修改DI中的地址,即DF=0 ,地址加2 ;DF=1 ,地址減 2。
SEG∶ 數值返回運算符。其加在一個(gè)變量名或標號前面,返回的數值是該變量名或標號所在的段基址(段寄存器的內容)。
SEGMENT∶ 段定義偽
指令 。格式為 段名 SEGMENT [定位方式][組合方式]['類(lèi)別']。在定義段的時(shí)候,還可以在SEGMENT 語(yǔ)句中給出該段的類(lèi)別,類(lèi)別名是一個(gè)用單括號括起來(lái)的字符串。進(jìn)行連接處理時(shí),LINK程序把類(lèi)別名相同的所有段放在連續的存儲區域內。同類(lèi)的各個(gè)段在連接時(shí),先出現的在前,后出現的在后。
SF∶Sign Flag, 符號標志,在標志寄存器的第7字節.記錄運算結果的符號,結果為負時(shí)置1。
SHL∶
一、算術(shù)運算符——左移(移1位相當于乘以2)。
二、
指令助記符——無(wú)符號數的邏輯左移。經(jīng)常用來(lái)乘以2。 當移位次數大于1 時(shí),則移位次數應預先置于CL寄存器中,寫(xiě)成“SHL OPD CL”。
┌─┐ ┌───────────────┐
│CF│←| ←───────────── │← 0
└─┘ └───────────────┘
SHORT∶ 屬性運算符(操作符)。用來(lái)指定JMP
指令中轉向地址的屬性,指出轉向(目標)地址與本
指令地址的字節距離在-128到+127之間。
SHR∶
一、算術(shù)運算符——右移(移1位相當于除以2)。
二、
指令助記符——無(wú)符號數的邏輯右移。經(jīng)常用來(lái)除以2。 當移位次數大于 1時(shí),則移位次數應預先置于CL寄存器中,寫(xiě)成“SHR …,CL”。
┌───────────────┐ ┌─┐
0→ │ ─────────────→ │→│CF│
└───────────────┘ └─┘
SI∶Source Index,源變址寄存器。與DS聯(lián)用,用來(lái)確定數據段中某一存儲單元的偏移地址。在串處理
指令中,SI指出源操作數的地址,隱含段為當前的數據段。
SIZE∶數值返回運算符。其加在一個(gè)變量前面,返回的是數組變量所占的總字節數(LENGTH和TYPE返回值的乘積)。
SP∶Stack Pointer,堆棧指針寄存器??梢耘cSS寄存器(決定堆棧的起始地址)聯(lián)用。SP確定了棧頂的偏移量,始終指向最后推入堆棧的信息所在的單元。 8086的堆棧是下推式的,隨著(zhù)推入堆棧的內容增加,SP的值減小,直至為0。在對SP設置初值(MOV SP,im)時(shí),要考慮所用堆棧的大小。
SS∶Stack Segment,堆棧段寄存器。 用來(lái)存放堆棧段的起始地址(高16位)。
STACK∶ 偽
指令——段定義(組合類(lèi)型)。指定該段在運行時(shí)為堆棧段的一部分。被連接的程序中必須至少有一個(gè)STACK 段。初始化時(shí),SS指向第一個(gè)遇到的STACK段。
STC∶
指令助記符——標志(進(jìn)位)設置。設置CF=1。
STD∶
指令助記符——建立方向標志。使DF=1 。這樣,當執行字節串操作
指令時(shí),地址自動(dòng)減1 ;當執行字串操作
指令時(shí),地址自動(dòng)減2 。
STI∶
指令助記符--中斷允許標志設置。設置IF=1。
STOS∶
指令助記符——保存串。通常用STOSB或STODW。
STOSB∶
指令助記符——字節保存(往字節串中存數)。把AL寄存器的內容保存在由 DI 指定的附加段的存儲單元中,并根據DF的值修改DI中的地址。即DF=0時(shí) ,地址加1 ;DF=1 時(shí),地址減1 。該
指令帶重復前綴可將一片連續的存儲字節置相同的值。
STOSW∶
指令助記符——字保存(往字串中存數)。 把AX寄存器的內容保存在由 DI 指定的附加段的存儲單元中,并根據DF的值修改DI中的地址。即DF=0時(shí) ,地址加2 ;DF=1 時(shí),地址減2 。
STRUC∶ 偽
指令——
設計一個(gè)結構。
例 定義名為S的結構如下 S STRUC
FL1 DB 1,2
FL2 DB 'DOBOSKY'
S ENDS
然后定義一個(gè)類(lèi)型為 S的變量 DBAREA S < ,'ANY'>
DBAREA就是一個(gè)類(lèi)型為S 的結構變量,它包含二個(gè)字段,FL1 是二個(gè)字節,初值是1和2;FL2 是七個(gè)字節,初值是'ANY' 。
SUB∶
指令助記符——減法。
SUBTTL∶偽
指令。為程序指定一個(gè)小標題,并打印在每一頁(yè)的標題之后。
TEST∶
指令助記符——測試。對二操作數進(jìn)行“與”操作,根據結果設置狀態(tài)標志位,但不改變原操作數。
例如 TEST AL,01H(檢查AL的第0位,是0則ZF=1; 是1則ZF=0。隨后可用JNE、JZ 等
指令轉移到某一標號)
TF∶Trap Flag, 陷阱(跟蹤)標志,在標志寄存器的第8字節,用于單步方式操作,當TF位為1 時(shí),每條
指令執行后 CPU自動(dòng)產(chǎn)生一個(gè)類(lèi)型為1的中斷,使程序單步執行,這就能跟蹤一個(gè)程序具體的執行過(guò)程,檢查每一步運行結果,確定出錯的位置。如果TF=0,則CPU處于連續工作方式。
THIS∶修改屬性運算符。該運算符(借助于EQU) 可以指定一個(gè)操作數的段地址和偏移地址與下一個(gè)存儲單元相同。
例一 DA_BYTE EQU THIS BYTE
DA_WORD DW 20H DUP(0)
DA_BYTE(字節類(lèi)型)的段地址和偏移地址與 DA_WORD(字類(lèi)型)完全相同??梢杂米兞棵鸇A_BYTE 以字節形式訪(fǎng)問(wèn)DA_WORD 數組元素某字單元。
例二 JMP_FAR EQU THIS FAR
JMP_NEAR:MOV AL,30H
當從段內某
指令調用這個(gè)程序段時(shí),可用標號JMP_NEAR,而從另一個(gè)代碼段調用時(shí),只要使用標號JMP_FAR即可。
TITLE∶ 偽
指令。在每一頁(yè)上打印標題。
TYPE∶數值返回運算符。其加在一個(gè)變量名前面,返回的數值是該變量的類(lèi)型屬性(1:BYTE—占一個(gè)字節;2:WORD—占兩個(gè)字節;4:DWORD —占四個(gè)字節;8:QWORD —占八個(gè)字節;10:TWORD —占十個(gè)字節);若加于某標號之前時(shí),返回的數值是這個(gè)標號的距離屬性(-1:NEAR—標號作段內轉移
指令的目標地址;-2:FAR—標號作段間轉移或調用
指令的目標地址)。
注:有的教材說(shuō)近標號的類(lèi)型值為0FFFFH,遠標號的類(lèi)型值為0FFFEH.
WAIT∶
指令助記符——等待。使處理機置于空閑狀態(tài),但它定期檢查T(mén)EST信號,若TEST=0, 程序就從WAIT的下一條
指令開(kāi)始執行。在等待時(shí),處理器也接受中斷,不過(guò)從中斷返回后,又進(jìn)入等待狀態(tài)。
WIDTH∶ 運算符。用于返回記錄或記錄字段所占的位數。
WORD∶偽
指令——段定義(定位類(lèi)型方式)。本段從一個(gè)偶字節開(kāi)始,即段起始地址的最后一位二進(jìn)制數一定是0 。這種定位方式適用于數據項類(lèi)型是字的數據段。
XCHG∶
指令助記符——數據交換。操作數可以是寄存器或存儲單元,但不能是段寄存器或立即數,也不能同時(shí)為兩個(gè)存儲器操作數。
XLAT∶
指令助記符——一個(gè)字節的查表轉換。專(zhuān)門(mén)用于A(yíng)L(其內容是字節表的下標)和字節表中某一存儲單元之間執行數據轉換。表的長(cháng)度為256 字節,定義為: 表名 DB '字符串' 。表頭地址先放在BX寄存器中(MOV BX,OFFSET 表名)。
指令(XLAT)執行時(shí),根據AL中預先設置的偏移地址,把需要查詢(xún)的數據從字節表的某一存儲單元傳送到AL中(AL=[BX+AL])。該
指令可以將一種代碼轉換成另一種代碼。
XOR∶ 邏輯運算符(在語(yǔ)句的操作數部分)或邏輯操作
指令助記符(在語(yǔ)句的操作碼部分)——按位異或(當對應位不同時(shí)結果為1)。當一個(gè)操作數自身作“異或”,結果為0 ,且使CF為0 。這是使操作數置0 的常用的有效方法。例:XOR AX,AX 可使AX清0 。
ZF∶Zero Flag,零標志,在標志寄存器的第6字節.運算結果為0時(shí)置1。