上面是有理解,是有點技巧。
檢測點17.1
「在int 16h中斷例程中,一定有設定if=1的指令。」這說話對嗎?
試著去找一下16中斷例程彙編**,沒有設定if=1的指令吧
這邊仔細考慮一下,程式執行到int 16h的時候,會呼叫16h號中斷例程,在呼叫這個中斷例程的時候,如果是沒有設定if=1,這邊在執行到int 16h中斷例程的時候,如果是在鍵盤緩衝區裡面沒有找到資料,程式有自動的返回到原來的呼叫int 16h的指令**中去執行,這是第一種機制;
當我們在鍵盤上按下乙個鍵的時候,這邊就會有一種機制,就是,如果鍵盤緩衝區一直是被16h號中斷例程給家監視著,或者說,按下鍵盤上的乙個鍵的時候,機器自動呼叫int 9中斷例程的時候,將鍵盤上的資料放到鍵盤緩衝區的時候,同時會判斷機器是否呼叫過16h中斷例程,並且一直是在等待資料,如果是在等待資料的時候,就重新返回到16h號中斷例程的指令斷點中去執行16號中斷例程,然後返回資料,這是第二種機制。
通過上面這個書上的例程來看,我們執行例程的時候,是執行到int 16h的時候,例程就在等待我們輸入資料(此時執行程式之前,鍵盤緩衝區的內容是空的),上面這樣說的通,以此看來,是沒有設定if=1的指令的,但是如果是沒有設定的時候,我們按下鍵盤上的乙個鍵的時候,應該是不會自動去執行int 9中斷例程的,這是是否16h號中斷例程就是通過第一種機制的呢,至於第一種機制是怎麼實現的,這邊應該也是有幾種的猜測,準備休息上班,就到這邊了……如果有看到本部落格的大蝦,幫個忙。
字串處理:
組合語言 王爽
cpu有三條匯流排 位址 資料 控制線 位址匯流排確定儲存單元 控制匯流排傳送指令 資料匯流排 傳輸資料 cpu n個位址線 位址匯流排寬度為n 可以尋找2 n個記憶體單元 儲存單元 0開始編號,乙個儲存單元可以儲存乙個byte 8086cpu有16根位址線 1bit就是一根位址線 注意 儲存器以b...
組合語言 王爽第6章
在作業系統的環境中,合法通過作業系統取得的空間都是安全的。程式取得所需要空間的方法有兩種,一是在引導程式的時候為程式分配,二是程式在執行的過程中向系統申請。我們可以用 dw xxh來申請記憶體空間,dw的含義是定義字型資料。dw即 define word 的意思。需要注意的是如果我們直接用dw來申請...
組合語言 王爽 筆記
關於pop的知識 1.出棧後,ss sp指向新的棧頂,pop操作前的棧頂元素中的資料仍然存在,但是,它已不再棧中 2.ss和sp只記錄了棧頂的位址,依靠ss和sp可以保證在入棧和出棧時找到棧頂 3.當棧滿的時候再次使用push指令入棧,棧空的時候再次使用pop指令出棧,都將發生棧頂越界問題,它是非常...