微機原理 指令判斷 判斷指令是否正確。

2021-10-03 16:55:06 字數 1908 閱讀 9755

1. mov 1000h , bx;指令錯誤,原因:立即數不能作為目標運算元。

2. mov bx , cl;指令錯誤,原因:字長不一致。

3. inc [bx];指令錯誤,原因:需指定運算元儲存器操作字。

4. mov [bx] , [6014h];指令錯誤,原因:不能同時為儲存器操作字。

5. rol al, 2;指令錯誤,原因:迴圈次數超過 1 用 cl 暫存器。

6. mov cs, ax;指令錯誤,原因:cs是**段暫存器,這個暫存器儲存的是**段的首位址,並且這個暫存器只能由系統管理,使用者不可更改。原因也可參照下列要求第五條。

7. mov al, [si+di];指令錯誤,原因:同時出現了兩個變址暫存器。在基址變址相對定址中,基址暫存器只能是bx/bp,變址暫存器只能是si/di。同理:mov al, [bx+si]正確。

8. mov ds,0100h;錯誤。源運算元是立即數時,目的運算元不能是段暫存器。

9. out 310h, al;錯誤。埠直接定址的範圍應在0~ ffh之間。

10. mov es:[bx+ di],ax;正確。

11. mov ss:[bx+si+ 100h],bx;正確。

12. add [si], 20h;錯誤,目的運算元型別不明確。

13. push 2000h;錯誤。堆疊指令的運算元不能是立即數。

14. inc [di];錯誤目的運算元型別不明確。

15. out bx, al;錯誤。埠間接定址的暫存器只能是dx暫存器。

16. xchg cx, ds;錯誤。交換指令中不能出現段暫存器。

17. pop al;錯誤。堆疊指令的運算元只能是字運算元(即1 6位運算元)。

18. add byte ptr[bp],256指令錯。add指令要求兩運算元等字長。

19. mov data[si],es:ax指令錯。源運算元形式錯,暫存器運算元不加段重設符。

20. jmp byte ptr[bx]指令錯。轉移位址的字長至少應是1 6位的。

21. out 230h,ax指令錯。對輸人輸出指令,當埠位址超出8位二進位制數的表達範圍(即定址的埠超出256個)時,必須採用間接定址dx。

22. mov ds,bp指令正確 。

23. mul 39h指令錯。mul指令不允許運算元為立即數。

24. sbb dx , 10h對。

25. inc [bp]錯 沒有給出運算元的型別。

mov指令中兩個運算元字長必須相同。

兩個運算元不能同時為儲存器運算元。若要在兩個儲存器單元之間進行資料傳送,需要兩條mov指令實現。(即用乙個暫存器做中間數傳參)

不能用立即數直接給段暫存器賦值。

兩個運算元不能同時為段暫存器。

一般情況下,指令指標ip及**段暫存器cs的內容不通過mov指令修改,即他們不能作為目標運算元,但可以作為源運算元。

雖然許多指令的執行對狀態暫存器flags的標誌位產生影響,但通常情況下,flags整體不能作為運算元。

判斷指標是否有效

在各類搜尋引擎 bbs裡搜尋,一般得到的答案都是無法判斷的。不過在特定的屬性內是可以判斷的。因為winapi有容錯機制。演示下 hglobal p globalalloc gmem zeroinit,4 int val 100 writeprocessmemory invalid handle va...

微機原理 基本常用操作指令

move 目的運算元或位址 源運算元或位址 常用 push 壓字入棧 pop 從棧彈出字 add 加法 add a,b 將a b值存到a中 inc 加一 adc 帶進製的加法 add a,b 將a b cf存到a sub 減法 sbb 帶錯位減法 要考慮是否借位 mul 無符號乘法.imul 整數乘...

判斷指定目錄是否有檔案

判斷指定目錄是否有檔案 linux 中如何判斷指定目錄下是否有檔案 包括隱藏檔案和符號鏈結 呢?指令碼名 decide blank folder.sh 指令碼內容 shell bin sh whether the specified folder has files,including symbol...