導航:首頁 > 程序命令 > 匯編等待命令

匯編等待命令

發布時間:2022-04-24 03:41:07

1. AVR單片機asm("nop");什麼意思,8M的話多少 時間

AVR單片機中
asm("nop");
這條語句,其中asm()的作用是指函數內部的參數翻譯為匯編指令,其作用是在C語言環境下直接使用匯編指令執行。
nop是一個空等待匯編指令,這個指令執行時,單片機是什麼也不做的,僅僅起一個時間延時作用。
對於AVR單片機來與,如果不分頻,那麼一個振盪周期就是一個指令周期,因此8M晶振時,其一個指令周期時間是1/8000000秒,即125納秒。

2. 匯編語言程序指令知多少

備本參考手冊好了

Intel Architecture Software Developer's Manual Vol 2-Instruction Set Ref.pdf

http://www.intel.com/design/pentium/manuals/24319101.PDF

3. 匯編語言中,怎麼實現等待功能

不知道你是說的單片機里的還是微機原理的,兩種情況指令不同。
微機原理的就用LOOP指令就可以了。
我給一個單片機的子程序吧,直接調用就行了,修改#後面的數就能修改延時時間了,不夠的話可以再加一層D3:。。。。。
DELAY:MOV R0,#65H
D2: MOV R1,#65H
D1: DJNZ R1,D1
DJNZ R0,D2
RET

4. 匯編語言指令

8086匯編指令手冊

一、數據傳輸指令

它們在存貯器和寄存器、寄存器和輸入輸出埠之間傳送數據.
1. 通用數據傳送指令.
MOV 傳送字或位元組.
MOVSX 先符號擴展,再傳送.
MOVZX 先零擴展,再傳送.
PUSH 把字壓入堆棧.
POP 把字彈出堆棧.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧.
BSWAP 交換32位寄存器里位元組的順序
XCHG 交換字或位元組.( 至少有一個操作數為寄存器,段寄存器不可作為操作數)
CMPXCHG 比較並交換操作數.( 第二個操作數必須為累加器AL/AX/EAX )
XADD 先交換再累加.( 結果在第一個操作數里 )
XLAT 位元組查表轉換.
—— BX 指向一張 256 位元組的表的起點, AL 為表的索引值 (0-255,即
0-FFH); 返回 AL 為查表結果. ( [BX+AL]->AL )
2. 輸入輸出埠傳送指令.
IN I/O埠輸入. ( 語法: IN 累加器, {埠號│DX} )
OUT I/O埠輸出. ( 語法: OUT {埠號│DX},累加器 )
輸入輸出埠由立即方式指定時, 其范圍是 0-255; 由寄存器 DX 指定時,
其范圍是 0-65535.
3. 目的地址傳送指令.
LEA 裝入有效地址.
例: LEA DX,string ;把偏移地址存到DX.
LDS 傳送目標指針,把指針內容裝入DS.
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 傳送目標指針,把指針內容裝入ES.
例: LES DI,string ;把段地址:偏移地址存到ES:DI.
LFS 傳送目標指針,把指針內容裝入FS.
例: LFS DI,string ;把段地址:偏移地址存到FS:DI.
LGS 傳送目標指針,把指針內容裝入GS.
例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
LSS 傳送目標指針,把指針內容裝入SS.
例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
4. 標志傳送指令.
LAHF 標志寄存器傳送,把標志裝入AH.
SAHF 標志寄存器傳送,把AH內容裝入標志寄存器.
PUSHF 標志入棧.
POPF 標志出棧.
PUSHD 32位標志入棧.
POPD 32位標志出棧.

二、算術運算指令
———————————————————————————————————————
ADD 加法.
ADC 帶進位加法.
INC 加 1.
AAA 加法的ASCII碼調整.
DAA 加法的十進制調整.
SUB 減法.
SBB 帶借位減法.
DEC 減 1.
NEC 求反(以 0 減之).
CMP 比較.(兩操作數作減法,僅修改標志位,不回送結果).
AAS 減法的ASCII碼調整.
DAS 減法的十進制調整.
MUL 無符號乘法.
IMUL 整數乘法.
以上兩條,結果回送AH和AL(位元組運算),或DX和AX(字運算),
AAM 乘法的ASCII碼調整.
DIV 無符號除法.
IDIV 整數除法.
以上兩條,結果回送:
商回送AL,余數回送AH, (位元組運算);
或 商回送AX,余數回送DX, (字運算).
AAD 除法的ASCII碼調整.
CBW 位元組轉換為字. (把AL中位元組的符號擴展到AH中去)
CWD 字轉換為雙字. (把AX中的字的符號擴展到DX中去)
CWDE 字轉換為雙字. (把AX中的字元號擴展到EAX中去)
CDQ 雙字擴展. (把EAX中的字的符號擴展到EDX中去)

三、邏輯運算指令
———————————————————————————————————————
AND 與運算.
OR 或運算.
XOR 異或運算.
NOT 取反.
TEST 測試.(兩操作數作與運算,僅修改標志位,不回送結果).
SHL 邏輯左移.
SAL 算術左移.(=SHL)
SHR 邏輯右移.
SAR 算術右移.(=SHR)
ROL 循環左移.
ROR 循環右移.
RCL 通過進位的循環左移.
RCR 通過進位的循環右移.
以上八種移位指令,其移位次數可達255次.
移位一次時, 可直接用操作碼. 如 SHL AX,1.
移位>1次時, 則由寄存器CL給出移位次數.
如 MOV CL,04
SHL AX,CL

四、串指令
———————————————————————————————————————
DS:SI 源串段寄存器 :源串變址.
ES:DI 目標串段寄存器:目標串變址.
CX 重復次數計數器.
AL/AX 掃描值.
D標志 0表示重復操作中SI和DI應自動增量; 1表示應自動減量.
Z標志 用來控制掃描或比較操作的結束.
MOVS 串傳送.
( MOVSB 傳送字元. MOVSW 傳送字. MOVSD 傳送雙字. )
CMPS 串比較.
( CMPSB 比較字元. CMPSW 比較字. )
SCAS 串掃描.
把AL或AX的內容與目標串作比較,比較結果反映在標志位.
LODS 裝入串.
把源串中的元素(字或位元組)逐一裝入AL或AX中.
( LODSB 傳送字元. LODSW 傳送字. LODSD 傳送雙字. )
STOS 保存串.
是LODS的逆過程.
REP 當CX/ECX<>0時重復.
REPE/REPZ 當ZF=1或比較結果相等,且CX/ECX<>0時重復.
REPNE/REPNZ 當ZF=0或比較結果不相等,且CX/ECX<>0時重復.
REPC 當CF=1且CX/ECX<>0時重復.
REPNC 當CF=0且CX/ECX<>0時重復.

五、程序轉移指令
———————————————————————————————————————

1>無條件轉移指令 (長轉移)
JMP 無條件轉移指令
CALL 過程調用
RET/RETF過程返回.

2>條件轉移指令 (短轉移,-128到+127的距離內)
( 當且僅當(SF XOR OF)=1時,OP1<OP2 )
JA/JNBE 不小於或不等於時轉移.
JAE/JNB 大於或等於轉移.
JB/JNAE 小於轉移.
JBE/JNA 小於或等於轉移.
以上四條,測試無符號整數運算的結果(標志C和Z).
JG/JNLE 大於轉移.
JGE/JNL 大於或等於轉移.
JL/JNGE 小於轉移.
JLE/JNG 小於或等於轉移.
以上四條,測試帶符號整數運算的結果(標志S,O和Z).
JE/JZ 等於轉移.
JNE/JNZ 不等於時轉移.
JC 有進位時轉移.
JNC 無進位時轉移.
JNO 不溢出時轉移.
JNP/JPO 奇偶性為奇數時轉移.
JNS 符號位為 "0" 時轉移.
JO 溢出轉移.
JP/JPE 奇偶性為偶數時轉移.
JS 符號位為 "1" 時轉移.
3>循環控制指令(短轉移)
LOOP CX不為零時循環.
LOOPE/LOOPZ CX不為零且標志Z=1時循環.
LOOPNE/LOOPNZ CX不為零且標志Z=0時循環.
JCXZ CX為零時轉移.
JECXZ ECX為零時轉移.
4>中斷指令
INT 中斷指令
INTO 溢出中斷
IRET 中斷返回
5>處理器控制指令
HLT 處理器暫停, 直到出現中斷或復位信號才繼續.
WAIT 當晶元引線TEST為高電平時使CPU進入等待狀態.
ESC 轉換到外處理器.
LOCK 封鎖匯流排.
NOP 空操作.
STC 置進位標志位.
CLC 清進位標志位.
CMC 進位標志取反.
STD 置方向標志位.
CLD 清方向標志位.
STI 置中斷允許位.
CLI 清中斷允許位.

六、偽指令
———————————————————————————————————————
DW 定義字(2位元組).
PROC 定義過程.
ENDP 過程結束.
SEGMENT 定義段.
ASSUME 建立段寄存器定址.
ENDS 段結束.
END 程序結束.

5. 匯編語言中的ret指令問題

ret返回的地址值從堆棧中獲取,如果堆棧是空的,ret就找不到返回的地址了,所以會錯誤。

6. 匯編中的常見指令有哪些

匯編語言指令集
匯編指令是匯編語言中使用的一些操作符(如mov,inc,loop)和助記符,還包括一些偽指令(如assume,end)。用於告訴匯編程序如何進行匯編的指令,它既不控制機器的操作也不被匯編成機器代碼,只能為匯編程序所識別並指導匯編如何進行。
一、數據傳輸指令
它們在存貯器和寄存器、寄存器和輸入輸出埠之間傳送數據。
1. 通用數據傳送指令
MOV 傳送字或位元組.
MOVSX 先符號擴展,再傳送.
MOVZX 先零擴展,再傳送.
PUSH 把字壓入堆棧.
POP 把字彈出堆棧.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧.
BSWAP 交換32位寄存器里位元組的順序
XCHG 交換字或位元組.( 至少有一個操作數為寄存器,段寄存器不可作為操作數)
CMPXCHG 比較並交換操作數.( 第二個操作數必須為累加器AL/AX/EAX )
XADD 先交換再累加.( 結果在第一個操作數里 )
XLAT 位元組查表轉換.
── BX 指向一張 256 位元組的表的起點, AL 為表的索引值 (0-255,即 0-FFH); 返回 AL 為查表結果. ( [BX+AL]->AL )

2. 輸入輸出埠傳送指令.
IN I/O埠輸入. ( 語法: IN 累加器, {埠號│DX} )
OUT I/O埠輸出. ( 語法: OUT {埠號│DX},累加器 )
輸入輸出埠由立即方式指定時, 其范圍是 0-255; 由寄存器 DX 指定時, 其范圍是 0-65535.

3. 目的地址傳送指令.
LEA 裝入有效地址. 例: LEA DX,string ;把偏移地址存到DX.
LDS 傳送目標指針,把指針內容裝入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 傳送目標指針,把指針內容裝入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI.
LFS 傳送目標指針,把指針內容裝入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI.
LGS 傳送目標指針,把指針內容裝入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
LSS 傳送目標指針,把指針內容裝入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI.

4. 標志傳送指令.
LAHF 標志寄存器傳送,把標志裝入AH.
SAHF 標志寄存器傳送,把AH內容裝入標志寄存器.
PUSHF 標志入棧.
POPF 標志出棧.
PUSHD 32位標志入棧.
POPD 32位標志出棧.
二、算術運算指令

ADD 加法.
ADC 帶進位加法.
INC 加 1.
AAA 加法的ASCII碼調整.
DAA 加法的十進制調整.
SUB 減法.
SBB 帶借位減法.
DEC 減 1.
NEC 求反(以 0 減之).
CMP 比較.(兩操作數作減法,僅修改標志位,不回送結果).
AAS 減法的ASCII碼調整.
DAS 減法的十進制調整.
MUL 無符號乘法.
IMUL 整數乘法.
以上兩條,結果回送AH和AL(位元組運算),或DX和AX(字運算),
AAM 乘法的ASCII碼調整.
DIV 無符號除法.
IDIV 整數除法.
以上兩條,結果回送:
商回送AL,余數回送AH, (位元組運算);
或 商回送AX,余數回送DX, (字運算).
AAD 除法的ASCII碼調整.
CBW 位元組轉換為字. (把AL中位元組的符號擴展到AH中去)
CWD 字轉換為雙字. (把AX中的字的符號擴展到DX中去)
CWDE 字轉換為雙字. (把AX中的字元號擴展到EAX中去)
CDQ 雙字擴展. (把EAX中的字的符號擴展到EDX中去)
三、邏輯運算指令

AND 與運算.
or 或運算.
XOR 異或運算.
NOT 取反.
TEST 測試.(兩操作數作與運算,僅修改標志位,不回送結果).
SHL 邏輯左移.
SAL 算術左移.(=SHL)
SHR 邏輯右移.
SAR 算術右移.(=SHR)
ROL 循環左移.
ROR 循環右移.
RCL 通過進位的循環左移.
RCR 通過進位的循環右移.
以上八種移位指令,其移位次數可達255次.
移位一次時, 可直接用操作碼. 如 SHL AX,1.
移位>1次時, 則由寄存器CL給出移位次數.
如 MOV CL,04
SHL AX,CL
四、串指令

DS:SI 源串段寄存器 :源串變址.
ES:DI 目標串段寄存器:目標串變址.
CX 重復次數計數器.
AL/AX 掃描值.
D標志 0表示重復操作中SI和DI應自動增量; 1表示應自動減量.
Z標志 用來控制掃描或比較操作的結束.
MOVS 串傳送.
( MOVSB 傳送字元. MOVSW 傳送字. MOVSD 傳送雙字. )
CMPS 串比較.
( CMPSB 比較字元. CMPSW 比較字. )
SCAS 串掃描.
把AL或AX的內容與目標串作比較,比較結果反映在標志位.
LODS 裝入串.
把源串中的元素(字或位元組)逐一裝入AL或AX中.
( LODSB 傳送字元. LODSW 傳送字. LODSD 傳送雙字. )
STOS 保存串.
是LODS的逆過程.
REP 當CX/ECX<>0時重復.
REPE/REPZ 當ZF=1或比較結果相等,且CX/ECX<>0時重復.
REPNE/REPNZ 當ZF=0或比較結果不相等,且CX/ECX<>0時重復.
REPC 當CF=1且CX/ECX<>0時重復.
REPNC 當CF=0且CX/ECX<>0時重復.
五、程序轉移指令

1>無條件轉移指令 (長轉移)
JMP 無條件轉移指令
CALL 過程調用
RET/RETF過程返回.
2>條件轉移指令 (短轉移,-128到+127的距離內)
( 當且僅當(SF XOR OF)=1時,OP1<OP2 )
JA/JNBE 不小於或不等於時轉移.
JAE/JNB 大於或等於轉移.
JB/JNAE 小於轉移.
JBE/JNA 小於或等於轉移.
以上四條,測試無符號整數運算的結果(標志C和Z).
JG/JNLE 大於轉移.
JGE/JNL 大於或等於轉移.
JL/JNGE 小於轉移.
JLE/JNG 小於或等於轉移.
以上四條,測試帶符號整數運算的結果(標志S,O和Z).
JE/JZ 等於轉移.
JNE/JNZ 不等於時轉移.
JC 有進位時轉移.
JNC 無進位時轉移.
JNO 不溢出時轉移.
JNP/JPO 奇偶性為奇數時轉移.
JNS 符號位為 "0" 時轉移.
JO 溢出轉移.
JP/JPE 奇偶性為偶數時轉移.
JS 符號位為 "1" 時轉移.
3>循環控制指令(短轉移)
LOOP CX不為零時循環.
LOOPE/LOOPZ CX不為零且標志Z=1時循環.
LOOPNE/LOOPNZ CX不為零且標志Z=0時循環.
JCXZ CX為零時轉移.
JECXZ ECX為零時轉移.
4>中斷指令
INT 中斷指令
INTO 溢出中斷
IRET 中斷返回
5>處理器控制指令
HLT 處理器暫停, 直到出現中斷或復位信號才繼續.
WAIT 當晶元引線TEST為高電平時使CPU進入等待狀態.
ESC 轉換到外處理器.
LOCK 封鎖匯流排.
NOP 空操作.
STC 置進位標志位.
CLC 清進位標志位.
CMC 進位標志取反.
STD 置方向標志位.
CLD 清方向標志位.
STI 置中斷允許位.
CLI 清中斷允許位.
六、偽指令

DW 定義字(2位元組).
PROC 定義過程.
ENDP 過程結束.
SEGMENT 定義段.
ASSUME 建立段寄存器定址.
ENDS 段結束.
END 程序結束.
七、處理機控制指令:
標志處理指令 CLC(進位位置0指令)
CMC(進位位求反指令)
STC(進位位置為1指令)
CLD(方向標志置1指令)
STD(方向標志位置1指令)
CLI(中斷標志置0指令)
STI(中斷標志置1指令)
NOP(無操作)
HLT(停機)
WAIT(等待)
ESC(換碼)
LOCK(封鎖)

7. 匯編語言中的DEC是什麼意思

DEC( DECrement ) 減1指令

格式:DEC OPR //Byte/Word

執行操作:(OPR)<-(OPR-1) //除CF標志位,其餘標志位都受影響。

指令使操作數的內容減1,然後再送回該操作數。該操作數可以是寄存器操作數、存儲器操作數。

例如:一、dec自減函數

1.dec(i,n);//i,n:integer;n為自減量

相當於i:=i-n;

2.dec(i);//i:integer;

相當於i:=i-1;

例如:二、Dec是遞減函數

i:=100;

dec(i);

i就變成99了,

如果是dec(i,30)的話,

那麼i=100-30=70

(7)匯編等待命令擴展閱讀:

數據傳送指令

這部分指令包括通用數據傳送指令MOV、條件傳送指令CMOVcc、堆棧操作指令

PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交換指令XCHG/XLAT/BSWAP、地址或段描述符選擇子傳送指令LEA/LDS/LES/LFS/LGS/LSS等。

注意,CMOVcc不是一條具體的指令,而是一個指令簇,包括大量的指令,用於根據EFLAGS寄存器的某些位狀態來決定是否執行指定的傳送操作。

整數和邏輯運算指令

這部分指令用於執行算術和邏輯運算,包括加法指令ADD/ADC、減法指令SUB/SBB、加一指令INC、減一指令DEC、比較操作指令CMP、乘法指令MUL/IMUL、

除法指令DIV/IDIV、符號擴展指令CBW/CWDE/CDQE、十進制調整指令DAA/DAS/AAA/AAS、邏輯運算指令NOT/AND/OR/XOR/TEST等。

移位指令

這部分指令用於將寄存器或內存操作數移動指定的次數。包括邏輯左移指令SHL、邏輯右移指令SHR、算術左移指令SAL、算術右移指令SAR、循環左移指令ROL、循環右移指令ROR等。

位操作指令

這部分指令包括位測試指令BT、位測試並置位指令BTS、位測試並復位指令BTR、位測試並取反指令BTC、位向前掃描指令BSF、位向後掃描指令BSR等。

條件設置指令

這不是一條具體的指令,而是一個指令簇,包括大約30條指令,用於根據EFLAGS寄存器的某些位狀態來設置一個8位的寄存器或者內存操作數。比如SETE/SETNE/SETGE等等。

控制轉移指令

這部分包括無條件轉移指令JMP、條件轉移指令Jcc/JCXZ、循環指令LOOP/LOOPE/LOOPNE、過程調用指令CALL、子過程返回指令RET、中斷指令INTn、INT3、INTO、IRET等。

注意,Jcc是一個指令簇,包含了很多指令,用於根據EFLAGS寄存器的某些位狀態來決定是否轉移;INT n是軟中斷指令,n可以是0到255之間的數,用於指示中斷向量號。

串操作指令

這部分指令用於對數據串進行操作,包括串傳送指令MOVS、串比較指令CMPS、串掃描指令SCANS、串載入指令LODS、串保存指令STOS,這些指令可以有選擇地使用REP/REPE/REPZ/REPNE和REPNZ的前綴以連續操作。

輸入輸出指令

這部分指令用於同外圍設備交換數據,包括埠輸入指令IN/INS、埠輸出指令OUT/OUTS。

高級語言輔助指令

這部分指令為高級語言的編譯器提供方便,包括創建棧幀的指令ENTER和釋放棧幀的指令LEAVE。

控制和特權指令

這部分包括無操作指令NOP、停機指令HLT、等待指令WAIT/MWAIT、換碼指令ESC、匯流排封鎖指令LOCK、內存范圍檢查指令BOUND、全局描述符表操作指令LGDT/SGDT、中斷描述符表操作指令LIDT/SIDT、局部描述符表操作指令LLDT/SLDT、

描述符段界限值載入指令LSR、描述符訪問權讀取指令LAR、任務寄存器操作指令LTR/STR、請求特權級調整指令ARPL、任務切換標志清零指令CLTS、控制寄存器和調試寄存器數據傳送指令MOV、

高速緩存控制指令INVD/WBINVD/INVLPG、型號相關寄存器讀取和寫入指令RDMSR/WRMSR、處理器信息獲取指令CPUID、時間戳讀取指令RDTSC等。

浮點和多媒體指令

這部分指令用於加速浮點數據的運算,以及用於加速多媒體數據處理的單指令多數據(SIMD及其擴展SSEx)指令。這部分指令數據非常龐大,無法一一列舉,請自行參考INTEL手冊。

虛擬機擴展指令

這部分指令包括INVEPT/INVVPID/VMCALL/VMCLEAR/VMLAUNCH/VMRESUME/VMPTRLD/VMPTRST/VMREAD/VMWRITE/VMXOFF/VMON等。

網路——匯編語言(面向機器的程序設計語言)

8. 求匯編語言的所有指令

數據傳送指令集
MOV
功能: 把源操作數送給目的操作數
語法: MOV 目的操作數,源操作數
格式: MOV r1,r2
MOV r,m
MOV m,r
MOV r,data

XCHG
功能: 交換兩個操作數的數據
語法: XCHG
格式: XCHG r1,r2 XCHG m,r XCHG r,m

PUSH,POP
功能: 把操作數壓入或取出堆棧
語法: PUSH 操作數 POP 操作數
格式: PUSH r PUSH M PUSH data POP r POP m

PUSHF,POPF,PUSHA,POPA
功能: 堆棧指令群
格式: PUSHF POPF PUSHA POPA

LEA,LDS,LES
功能: 取地址至寄存器
語法: LEA r,m LDS r,m LES r,m

XLAT(XLATB)
功能: 查表指令
語法: XLAT XLAT m
算數運算指令
ADD,ADC
功能: 加法指令
語法: ADD OP1,OP2 ADC OP1,OP2
格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data
影響標志: C,P,A,Z,S,O

SUB,SBB
功能:減法指令
語法: SUB OP1,OP2 SBB OP1,OP2
格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data
影響標志: C,P,A,Z,S,O

INC,DEC
功能: 把OP的值加一或減一
語法: INC OP DEC OP
格式: INC r/m DEC r/m
影響標志: P,A,Z,S,O

NEG
功能: 將OP的符號反相(取二進制補碼)
語法: NEG OP
格式: NEG r/m
影響標志: C,P,A,Z,S,O
MUL,IMUL
功能: 乘法指令
語法: MUL OP IMUL OP
格式: MUL r/m IMUL r/m
影響標志: C,P,A,Z,S,O(僅IMUL會影響S標志)

DIV,IDIV
功能:除法指令
語法: DIV OP IDIV OP
格式: DIV r/m IDIV r/m
CBW,CWD
功能: 有符號數擴展指令
語法: CBW CWD
AAA,AAS,AAM,AAD
功能: 非壓BCD碼運算調整指令
語法: AAA AAS AAM AAD
影響標志: A,C(AAA,AAS) S,Z,P(AAM,AAD)

DAA,DAS
功能: 壓縮BCD碼調整指令
語法: DAA DAS
影響標志: C,P,A,Z,S
位運算指令集
AND,OR,XOR,NOT,TEST
功能: 執行BIT與BIT之間的邏輯運算
語法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m
影響標志: C,O,P,Z,S(其中C與O兩個標志會被設為0) NOT指令不影響任何標志位
SHR,SHL,SAR,SAL
功能: 移位指令
語法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL
影響標志: C,P,Z,S,O
ROR,ROL,RCR,RCL
功能: 循環移位指令
語法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL
影響標志: C,P,Z,S,O
程序流程式控制制指令集
CLC,STC,CMC
功能: 設定進位標志
語法: CLC STC CMC
標志位: C
CLD,STD
功能: 設定方向標志
語法: CLD STD
標志位: D
CLI,STI
功能: 設定中斷標志
語法: CLI STI
標志位: I
CMP
功能: 比較OP1與OP2的值
語法: CMP r/m,r/m/data
標志位: C,P,A,Z,O
JMP
功能: 跳往指定地址執行
語法: JMP 地址
JXX
功能: 當特定條件成立則跳往指定地址執行
語法: JXX 地址
注:
A: ABOVE,當C=0,Z=0時成立
B: BELOW,當C=1時成立
C: CARRY,當弁時成立 CXZ: CX寄存器的值為0(ZERO)時成立
E: EQUAL,當Z=1時成立
G: GREATER(大於),當Z=0且S=0時成立
L: LESS(小於),當S不為零時成立
N: NOT(相反條件),需和其它符號配合使用
O: OVERFLOW,O=1時成立
P: PARITY,P=1時成立
PE: PARITY EVEN,P=1時成立
PO: PARITY ODD,P=0時成立
S: SIGN,S=1時成立
Z: ZERO,Z=1時成立
LOOP
功能: 循環指令集
語法: LOOP 地址
LOOPE(Z)
地址 LOOPNE(Z) 地址
標志位: 無
CALL,RET
功能: 子程序調用,返回指令
語法: CALL 地址 RET RET n
標志位: 無
INT,IRET
功能: 中斷調用及返回指令
語法: INT n IRET
標志位: 在執行INT時,CPU會自動將標志寄存器的值入棧,在執行IRET時則會將堆棧中的標志值彈回寄存器
字元串操作指令集
MOVSB,MOVSW,MOVSD
功能: 字元串傳送指令
語法: MOVSB MOVSW MOVSD
標志位: 無
CMPSB,CMPSW,CMPSD
功能: 字元串比較指令
語法: CMPSB CMPSW CMPSD
標志位: C,P,Z,S,O
SCASB,SCASW
功能: 字元串搜索指令
語法: SCASB SCASW
標志位: C,P,Z,S,O
LODSB,LODSW,STOSB,STOSW
功能: 字元串載入或存貯指令
語法: LODSB LODSW STOSB STOSW
標志位: 無
REP,REPE,REPNE
功能: 重復前綴指令集
語法: REP 指令S REPE 指令S REPNE 指令S
標志位: 依指令S而定

對於IBM PC機它有它的指令系統,其中包括:數據傳送指令、串處理指令、算術指令、控制移動指令、邏輯指令、處理機控制指令。
這里將簡單介紹其指令類型及指令說明,如有要求給具體的指令格式及應用,請與amay聯系,amay加以更新。
1)數據傳送指令:負責把數據、地址或立即數傳送到寄存器或存儲單元中。
數據傳送指令類型 指 令 說 明
通用數據傳送指令 MOV(傳送)、PUSH(進棧)、POP(出棧)、XCHG(交換)
累加器專用傳送指令 IN(輸入指令) 、OUT(輸入指令)
地址傳送指令 LEA(有效地址送寄存器)、LDS(指針送寄存器和DS)、LES(指針送寄存器和ES)
標志寄存器傳送指令 LAHF(標志送AH)、SAHF(AH送標志寄存器)、PUSHF(標志進棧)、POPF(標志出棧)

2)算術指令:用來執行算術運算。
算術指令類型 指 令 說 明
加法指令 ADD(加法)、ADC(帶進位加法)、INC(加1)
減法指令 SUB(減法)、SBB(帶借位減法)、DEC(減1)、NEG(求補)、CMP(比較)
乘法指令 MUL(無符號數乘法)、IMUL(帶符號數乘法)
除法指令 DIV(無符號數除法)、IDIV(帶符號數除法)、CBW(位元組轉換為字)、CWD(字轉換為雙字)

3)邏輯指令:對字或位元組執行邏輯運算。
邏輯指令類型 指 令 說 明
邏輯運算指令 AND(邏輯與)、OR(邏輯或)、NOT(邏輯非)、XOR(異或)、TEST(測試)
移動指令 SHL(邏輯左移)、SAL(算術左移)、SHR(邏輯右移)、SAR(算術右移)、ROL(循環左移)、ROR(循環右移)、RCL(帶進位循環左移)、RCR(帶進位右移)

4)串處理指令:處理存放存儲器里的數據串。
串處理指令類型 指 令 說 明
指 令 MOVS(串傳送)、CMPS(串比較)、SCAS(串掃描)、LODS(從串取)、STOS(存入串)

5)控制轉移指令:用來控製程序的執行流程。
控制轉移指令類型 指 令 說 明
無條件轉移指令 JMP(段間和段內轉移)
條件轉移指令 JZ(結果為0(或相等)則轉移)、JS(結果為負則轉移)、JNS(結果為正則轉移)、JO(溢出則轉移)、JNO(不溢出則轉移)、JP(奇偶位為1則轉移)、JNP(奇偶位為0則轉移)
循環指令 LOOP(循環指令)、LOOPPZ/LOOPE(當為0或相等時循環指令)、LOOPNZ/LOOPNE(當不為0或不相等時循環指令)
子程序指令 CALL(調用指令)、RET(返回指令)
中斷指令 INT(中斷)、INTO(如溢出則中斷)、RIET(從中斷返回)

6)處理機控制指令:
處理機控制指令類型 指 令 說 明
標志處理指令 CLC(進位位置0指令)、CMC(進位位求反指令)、STC(進位位置為1指令)、CLD(方向標志置1指令)、STD(方向標志位置1指令)、CLI(中斷標志置0指令)、STI(中斷標志置1指令)
其他處理機控制指令 NOP(無操作)、HLT(停機)、WAIT(等待)、ESC(換碼)、LOCK(封鎖)

參考:http://www.bilayu.com/

9. 匯編語言中ret和SJMP $有什麼區別,為什麼有些程序結束的時候是用SJMP $ 而有些時候是用RET呢

匯編語言中:
1 ret和SJMP $相同點: 都屬於轉移指令。
2 ret和SJMP $區別:
ret是子程序返回指令,放在子程序的結尾,當子程序執行完後,靠該指令返回主程序。
SJMP $ 是相對轉移指令 是用在主程序中的,可以作為暫停。
等價於 LL: SJMP LL
就是又跳轉到這條指令的本身,反復執行給指令,不再執行別的指令了。
相當於暫停 (或在這等待計算機的中斷時間發生)

呵呵 滿意 就選滿意回答吧

10. 求匯編指令大全~

8086/8088指令系統
一、數據傳送指令
1.通用數據傳送指令
MOV(Move)傳送
PUSH(Push onto the stack)進棧
POP(Pop from the stack)出棧
XCHG(Exchange)交換
.MOV 指令
格式為: MOV DST,SRC
執行的操作:(DST)<-(SRC)
.PUSH 進棧指令
格式為:PUSH SRC
執行的操作:(SP)<-(SP)-2
((SP)+1,(SP))<-(SRC)
.POP 出棧指令
格式為:POP DST
執行的操作:(DST)<-((SP+1),(SP))
(SP)<-(SP)+2
.XCHG 交換指令
格式為:XCHG OPR1,OPR2
執行的操作:(OPR1)<-->(OPR2)
2.累加器專用傳送指令
IN(Input) 輸入
OUT(Output) 輸出
XLAT(Translate) 換碼
這組指令只限於使用累加器AX 或AL 傳送信息.
.IN 輸入指令
長格式為: IN AL,PORT(位元組)
IN AX,PORT(字)
執行的操作: (AL)<-(PORT)(位元組)
(AX)<-(PORT+1,PORT)(字)
短格式為: IN AL,DX(位元組)
IN AX,DX(字)
執行的操作: AL<-((DX))(位元組)
AX<-((DX)+1,DX)(字)
.OUT 輸出指令
長格式為: OUT PORT,AL(位元組)
OUT PORT,AX(字)
執行的操作: (PORT)<-(AL)(位元組)
(PORT+1,PORT)<-(AX)(字)
短格式為: OUT DX,AL(位元組)
OUT DX,AX(字)
執行的操作: ((DX))<-(AL)(位元組)
((DX)+1,(DX))<-AX(字)
在IBM-PC 機里,外部設備最多可有65536個I/O 埠,埠(即外設的埠地址)為
0000~FFFFH.其中前256個埠(0~FFH)可以直接在指令中指定,這就是長格式中的PORT,此
時機器指令用二個位元組表示,第二個位元組就是埠號.所以用長格式時可以在指定中直接指定
埠號,但只限於前256個埠.當埠號>=256時,只能使用短格式,此時,必須先把埠號放到
DX 寄存器中(埠號可以從0000到0FFFFH),然後再用IN 或OUT 指令來傳送信息.
.XLAT 換碼指令
格式為: XLAT OPR
或: XLAT
執行的操作:(AL)<-((BX)+(AL))
3.有效地址送寄存器指令
LEA(Load effective address)有效地址送寄存器
LDS(Load DS with Pointer)指針送寄存器和DS
LES(Load ES with Pointer)指針送寄存器和ES
.LEA 有效地址送寄存器
格式為: LEA REG,SRC
執行的操作:(REG)<-SRC
指令把源操作數的有效地址送到指定的寄存器中.
.LDS 指針送寄存器和DS 指令
格式為: LDS REG,SRC
執行的操作:(REG)<-(SRC)
(DS)<-(SRC+2)
把源操作數指定的4個相繼位元組送到由指令指定的寄存器及DS 寄存器中.該指令常指定
SI 寄存器.
.LES 指針送寄存器和ES 指令
格式為: LES REG,SRC
執行的操作: (REG)<-(SRC)
(ES)<-(SRC+2)
把源操作數指定的4個相繼位元組送到由指令指定的寄存器及ES 寄存器中.該指令常指定
DI 寄存器.
4.標志寄存器傳送指令
LAHF(Load AH with flags)標志送AH
SAHF(store AH into flags)AH 送標志寄存器
PUSHF(push the flags) 標志進棧
POPF(pop the flags) 標志出棧
.LAHF 標志送AH
格式為: LAHF
執行的操作:(AH)<-(PWS 的低位元組)
.SAHF AH 送標志寄存器
格式為: SAHF
執行的操作:(PWS 的低位元組)<-(AH)
.PUSHF 標志進棧
格式為: PUSHF
執行的操作:(SP)<-(SP)-2
((SP)+1,(SP))<-(PSW)
.POPF 標志出棧
格式為: POPF
執行的操作:(PWS)<-((SP)+1,(SP))
(SP)<-(SP+2)
二、算術指令
1.加法指令
ADD(add)加法
ADC(add with carry)帶進位加法
INC(increment)加1
.ADD 加法指令
格式: ADD DST,SRC
執行的操作:(DST)<-(SRC)+(DST)
.ADC 帶進位加法指令
格式: ADC DST,SRC
執行的操作:(DST)<-(SRC)+(DST)+CF
.ADD 加1指令
格式: INC OPR
執行的操作:(OPR)<-(OPR)+1
2.減法指令
SUB(subtract)減法
SBB(subtract with borrow)帶借位減法
DEC(Decrement)減1
NEG(Negate)求補
CMP(Compare)比較
.SUB 減法指令
格式: SUB DST,SRC
執行的操作:(DST)<-(DST)-(SRC)
.SBB 帶借位減法指令
格式: SBB DST,SRC
執行的操作:(DST)<-(DST)-(SRC)-CF
.DEC 減1指令
格式: DEC OPR
執行的操作:(OPR)<-(OPR)-1
.NEG 求補指令
格式: NEG OPR
執行的操作:(OPR)<- -(OPR)
.CMP 比較指令
格式: CMP OPR1,OPR2
執行的操作:(OPR1)-(OPR2)
該指令與SUB 指令一樣執行減法操作,但不保存結果,只是根據結果設置條件標志西半
球.
3.乘法指令
MUL(Unsigned Multiple)無符號數乘法
IMUL(Signed Multiple)帶符號數乘法
.MUL 無符號數乘法指令
格式: MUL SRC
執行的操作:
位元組操作數:(AX)<-(AL)*(SRC)
字操作數:(DX,AX)<-(AX)*(SRC)
.IMUL 帶符號數乘法指令
格式: IMUL SRC
執行的操作:與MUL 相同,但必須是帶符號數,而MUL 是無符號數.
4.除法指令
DIV(Unsigned divide)無符號數除法
IDIV(Signed divide)帶符號數除法
CBW(Convert byte to word)位元組轉換為字
CWD(Contert word to double word)字轉換為雙字
.DIV 無符號數除法指令
格式: DIV SRC
執行的操作:
位元組操作:(AL)<-(AX)/(SRC)的商
(AH)<-(AX)/(SRC)的余數
字操作: (AX)<-(DX,AX)/(SRC)的商
(AX)<-(DX,AX)/(SRC)的余數
.IDIV 帶符號數除法指令
格式: DIV SRC
執行的操作:與DIV 相同,但操作數必須是帶符號數,商和余數也均為帶符號數,且余數的符號
與被除數的符號相同.
.CBW 位元組轉換為字指令
格式: CBW
執行的操作:AL 的內容符號擴展到AH.即如果(AL)的最高有效位為0,則(AH)=00;如(AL)的最
高有效位為1,則(AH)=0FFH
.CWD 字轉換為雙字指令
格式: CWD
執行的操作:AX 的內容符號擴展到DX.即如(AX) 的最高有效位為0, 則(DX)=0;否則
(DX)=0FFFFH.
這兩條指令都不影響條件碼.
三、邏輯指令
1.邏輯運算指令
AND(and) 邏輯與
OR(or) 邏輯或
NOT(not) 邏輯非
XOR(exclusive or)異或
TEST(test) 測試
.AND 邏輯與指令
格式: AND DST,SRC
執行的操作:(DST)<-(DST)^(SRC)
.OR 邏輯或指令
格式: OR DST,SRC
執行的操作:(DST)<-(DST)V(SRC)
.NOT 邏輯非指令
格式: NOT OPR
執行的操作:(OPR)<-(OPR)
.XOR 異或指令
格式: XOR DST,SRC
執行的操作:(DST)<-(DST)V(SRC)
.TEST 測試指令
格式: TEST OPR1,OPR2
執行的操作:(DST)^(SRC)
兩個操作數相與的結果不保存,只根據其特徵置條件碼
2.移位指令
SHL(shift logical left) 邏輯左移
SAL(shift arithmetic left) 算術左移
SHR(shift logical right) 邏輯右移
SAR(shift arithmetic right) 算術右移
ROL(Rotate left) 循環左移
ROR(Rotate right) 循環右移
RCL(Rotate left through carry) 帶進位循環左移
RCR(Rotate right through carry) 帶進位循環右移
格式: SHL OPR,CNT(其餘的類似)
其中OPR 可以是除立即數以外的任何定址方式.移位次數由CNT 決定,CNT 可以是1或CL.
循環移位指令可以改變操作數中所有位的位置;移位指令則常常用來做乘以2除以2操作.
其中算術移位指令適用於帶符號數運算,SAL 用來乘2,SAR 用來除以2;而邏輯移位指令則用
來無符號數運算,SHL 用來乘2,SHR 用來除以2.
四、串處理指令
1.與REP 相配合工作的MOVS,STOS 和LODS 指令
.REP 重復串操作直到(CX)=0為上
格式: REP string primitive
其中String Primitive 可為MOVS,LODS 或STOS 指令
執行的操作:
1)如(CX)=0則退出REP,否則往下執行.
2)(CX)<-(CX)-1
3)執行其中的串操作
4)重復1)~3)
.MOVS 串傳送指令
格式:可有三種
MOVS DST,SRC
MOVSB(位元組)
MOVSW(字)
其中第二、三種格式明確地註明是傳送位元組或字,第一種格式則應在操作數中表明是字還是
位元組操作,例如:
MOVS ES:BYTE PTR[DI],DS:[SI]
執行的操作:
1)((DI))<-((SI))
2)位元組操作:
(SI)<-(SI)+(或-)1,(DI)<-(DI)+(或-)1
當方向標志DF=0時用+,當方向標志DF=1時用-
3)字操作:
(SI)<-(SI)+(或-)2,(DI)<-(DI)+(或-)2
當方向標志DF=0時用+,當方向標志DF=1時用-
該指令不影響條件碼.
.CLD(Clear direction flag)該指令使DF=0,在執行串操作指令時可使地址自動增量;
.STD(Set direction flag)該指令使DF=1,在執行串操作指令時可使地址自動減量.
.STOS 存入串指令
格式: STOS DST
STOSB(位元組)
STOSW(字)
執行的操作:
位元組操作:((DI))<-(AL),(DI)<-(DI)+-1
字操作: ((DI))<-(AX),(DI)<-(DI)+-2
該指令把AL 或AX 的內容存入由(DI)指定的附加段的某單元中,並根據DF 的值及數據類型
修改DI 的內容,當它與REP 聯用時,可把AL 或AX 的內容存入一個長度為(CX)的緩沖區中.
.LODS 從串取指令
格式: LODS SRC
LODSB
LODSW
執行的操作:
位元組操作:(AL)<-((SI)),(SI)<-(SI)+-1
字操作: (AX)<-((SI)),(SI)<-(SI)+-2
該指令把由(SI)指定的數據段中某單元的內容送到AL 或AX 中,並根據方向標志及數據類型
修改SI 的內容.指令允許使用段跨越前綴來指定非數據段的存儲區.該指令也不影響條件碼.
一般說來,該指令不和REP 聯用.有時緩沖區中的一串字元需要逐次取出來測試時,可使
用本指令.
2.與REPE/REPZ 和REPNZ/REPNE 聯合工作的CMPS 和SCAS 指令
.REPE/REPZ 當相等/為零時重復串操作
格式: REPE(或REPZ) String Primitive
其中String Primitive 可為CMPS 或SCAS 指令.
執行的操作:
1)如(CX)=0或ZF=0(即某次比較的結果兩個操作數不等)時退出,否則往下執行
2)(CX)<-(CX)-1
3)執行其後的串指令
4)重復1)~3)
.REPNE/REPNZ 當不相等/不為零時重復串操作
格式: REPNE(或REPNZ) String Primitive
其中String Primitive 可為CMPS 或SCAS 指令
執行的操作:
除退出條件(CX=0)或ZF=1外,其他操作與REPE 完全相同.
.CMPS 串比較指令
格式: CMP SRC,DST
CMPSB
CMPSW
執行的操作:
1)((SI))-((DI))
2)位元組操作:(SI)<-(SI)+-1,(DI)<-(DI)+-1
字操作: (SI)<-(SI)+-2,(DI)<-(DI)+-2
指令把由(SI)指向的數據段中的一個字(或位元組)與由(DI)指向的附加段中的一個字(或位元組)
相減,但不保存結果,只根據結果設置條件碼,指令的其它特性和MOVS 指令的規定相同.
.SCAS 串掃描指令
格式: SCAS DST
SCASB
SCASW
執行的操作:
位元組操作:(AL)-((DI)),(DI)<-(DI)+-1
字操作: (AL)-((DI)),(DI)<-(DI)+-2
該指令把AL(或AX)的內容與由(DI)指定的在附加段中的一個位元組(或字)進行比較,並不保存
結果,只根據結果置條件碼.指令的其他特性和MOVS 的規定相同.
五、控制轉移指令
1.無條件轉移指令
.JMP(jmp) 跳轉指令
1)段內直接短轉移
格式:JMP SHORT OPR
執行的操作:(IP)<-(IP)+8位位移量
2)段內直接近轉移
格式:JMP NEAR PTR OPR
執行的操作:(IP)<-(IP)+16位位移量
3)段內間接轉移
格式:JMP WORD PTR OPR
執行的操作:(IP)<-(EA)
4)段間直接(遠)轉移
格式:JMP FAR PTR OPR
執行的操作:(IP)<-OPR 的段內偏移地址
(CS)<-OPR 所在段的段地址
5)段間間接轉移
格式:JMP DWORD PTR OPR
執行的操作:(IP)<-(EA)
(CS)<-(EA+2)
2.條件轉移指令
1)根據單個條件標志的設置情況轉移
.JZ(或JE)(Jump if zero,or equal) 結果為零(或相等)則轉移
格式:JE(或JZ) OPR
測試條件:ZF=1
.JNZ(或JNE)(Jump if not zero,or not equal) 結果不為零(或不相等)則轉移
格式:JNZ(或JNE) OPR
測試條件:ZF=0
.JS(Jump if sign) 結果為負則轉移
格式: JS OPR
測試條件:SF=1
.JNS(Jump if not sign) 結果為正則轉移
格式:JNS OPR
測試條件:SF=0
.JO(Jump if overflow) 溢出則轉移
格式: JO OPR
測試條件:OF=1
.JNO(Jump if not overflow) 不溢出則轉移
格式: JNO OPR
測試條件:OF=0
.JP(或JPE)(Jump if parity,or parity even) 奇偶位為1則轉移
格式: JP OPR
測試條件:PF=1
.JNP(或JPO)(Jump if not parity,or parity odd) 奇偶位為0則轉移
格式: JNP(或JPO) OPR
測試條件:PF=0
.JB(或JNAE,JC)(Jump if below,or not above or equal,or carry) 低於,或者不高於或等於,或進位
位為1則轉移
格式:JB(或JNAE,JC) OPR
測試條件:CF=1
.JNB(或JAE,JNC)(Jump if not below,or above or equal,or not carry) 不低於,或者高於或者等於,
或進位位為0則轉移
格式:JNB(或JAE,JNC) OPR
測試條件:CF=0
2)比較兩個無符號數,並根據比較的結果轉移
.JB(或JNAE,JC)
格式:同上
.JNB(或JAE,JNC)
格式:同上
.JBE(或JNA)(Jump if below or equal,or not above) 低於或等於,或不高於則轉移
格式:JBE(或JNA) OPR
測試條件:CFVZF=1
.JNBE(或JA)(Jump if not below or equal,or above) 不低於或等於,或者高於則轉移
格式:JNBE(或JA) OPR
測試條件:CFVZF=0
3)比較兩個帶符號數,並根據比較的結果轉移
.JL(或LNGE)(Jump if less,or not greater or equal) 小於,或者不大於或者等於則轉移
格式:JL(或JNGE) OPR
測試條件:SFVOF=1
.JNL(或JGE)(Jump if not less,or greater or equal)不小於,或者大於或者等於則轉移
格式:JNL(或JGE) OPR
測試條件:SFVOF=0
.JLE(或JNG)(Jump if less or equal,or not greater) 小於或等於,或者不大於則轉移
格式:JLE(或JNG) OPR
測試條件:(SFVOF)VZF=1
.JNLE(或JG)(Jump if not less or equal,or greater) 不小於或等於,或者大於則轉移
格式:JNLE(或JG) OPR
測試條件:(SFVOF)VZF=0
4)測試CX 的值為0則轉移指令
.JCXZ(Jump if CX register is zero) CX 寄存器的內容為零則轉移
格式:JCXZ OPR
測試條件:(CX)=0
注:條件轉移全為8位短跳!
3.循環指令
.LOOP 循環指令
格式: LOOP OPR
測試條件:(CX)<>0
.LOOPZ/LOOPE 當為零或相等時循環指令
格式: LOOPZ(或LOOPE) OPR
測試條件:(CX)<>0且ZF=1
.LOOPNZ/LOOPNE 當不為零或不相等時循環指令
格式: LOOPNZ(或LOOPNE) OPR
測試條件:(CX)<>0且ZF=0
這三條指令的步驟是:
1)(CX)<-(CX)-1
2)檢查是否滿足測試條件,如滿足則(IP)<-(IP)+D8的符號擴充.
4.子程序
.CALL 調用指令
.RET 返回指令
5.中斷
.INT 指令
格式: INT TYPE
或INT
執行的操作:(SP)<-(SP)-2
((SP)+1,(SP))<-(PSW)
(SP)<-(SP)-2
((SP)+1,(SP))<-(CS)
(SP)<-(SP)-2
((SP)+1,(SP))<-(IP)
(IP)<-(TYPE*4)
(CS)<-(TYPE*4+2)
.INTO 若溢出則中斷
執行的操作:若OF=1則:
(SP)<-(SP)-2
((SP)+1,(SP))<-(PSW)
(SP)<-(SP)-2
((SP)+1,(SP))<-(CS)
(SP)<-(SP)-2
((SP)+1,(SP))<-(IP)
(IP)<-(10H)
(CS)<-(12H)
.IRET 從中斷返回指令
格式: IRET
執行的操作:(IP)<-((SP)+1,(SP))
(SP)<-(SP)+2
(CS)<-((SP)+1,(SP))
(SP)<-(SP)+2
(PSW)<-((SP)+1,(SP))
(SP)<-(SP)+2
六、處理機控制指令
1.標志處理指令
.CLC 進位位置0指令(Clear carry)CF<-0
.CMC 進位位求反指令(Complement carry)CF<-CF
.STC 進位位置1指令(Set carry)CF<-1
.CLD 方向標志置0指令(Clear direction)DF<-0
.STD 方向標志置1指令(Set direction)DF<-1
.CLI 中斷標志置0指令(Clear interrupt)IF<-0
.STI 中斷標志置1指令(Set interrupt)IF<-0
2.其他處理機控制指令
NOP(No Opreation) 無操作
HLT(Halt) 停機
WAIT(Wait) 等待
ESC(Escape) 換碼
LOCK(Lock) 封鎖
這些指令可以控制處理機狀態.這們都不影響條件碼.
.NOP 無操作指令
該指令不執行任何操作,其機器碼佔有一個位元組,在調試程序時往往用這條指令佔有一定
的存儲單元,以便在正式運行時用其他指令取代.
.HLT 停機指令
該指令可使機器暫停工作,使處理機處於停機狀態以便等待一次外部中斷到來,中斷結束
後可繼續執行下面的程序.
.WAIT 等待指令
該指令使處理機處於空轉狀態,它也可以用來等待外部中斷的發生,但中斷結束後仍返回
WAIT 指令繼續德行.
.ESC 換碼指令
格式ESC mem
其中mem 指出一個存儲單元,ESC 指令把該存儲單元的內容送到數據匯流排去.當然ESC 指令
不允許使用立即數和寄存器定址方式.這條指令在使用協處理機(Coprocessor)執行某些操作
時,可從存儲器指得指令或操作數.協處理機(如8087)則是為了提高速度而可以選配的硬體.
.LOCK 封鎖指令
該指令是一種前綴,它可與其他指令聯合,用來維持匯流排的鎖存信號直到與其聯合的指令
執行完為止.當CPU 與其他處理機協同工作時,該指令可避免破壞有用信息.

閱讀全文

與匯編等待命令相關的資料

熱點內容
視頻壓縮形式怎麼改 瀏覽:366
perl程序員 瀏覽:787
電子表格對比命令 瀏覽:608
php循環輸出數組內容 瀏覽:748
電腦加密能不能強制關掉 瀏覽:616
趣味單人解壓桌游 瀏覽:210
oppo手機谷歌伺服器無法核實什麼 瀏覽:318
軟體怎麼加密華為 瀏覽:220
掃地機怎麼安裝app 瀏覽:317
考研結合特徵值計演算法 瀏覽:514
操作系統演算法綜合題 瀏覽:150
華為程序員待遇 瀏覽:545
程序員帶娃的圖片 瀏覽:77
迷你雲伺服器怎麼下載 瀏覽:813
福州溯源碼即食燕窩 瀏覽:232
當樂伺服器怎麼樣 瀏覽:713
nc編程軟體下載 瀏覽:382
如何限制手機app的使用 瀏覽:307
安卓華為手機怎麼恢復桌面圖標 瀏覽:956
我的世界電腦版伺服器地址在哪找 瀏覽:533