日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

80386ASM程序設(shè)計基礎(chǔ)(七)

 壞壞 2006-12-09
位操作指令,處理器控制指令
 AA.位操作指令,8086新增的一組指令,包括位測試,位掃描。BT,BTC,BTR,BTS,BSF,BSR
 a.BT(Bit Test),位測試指令,指令格式:
   BT OPRD1,OPRD2,規(guī)則:操作作OPRD1可以是16位或32位的通用寄存器或者存儲單元。操作數(shù)OPRD2必須是8位立即數(shù)或者是與OPRD1操作數(shù)長度相等的通用寄存器。如果用OPRD2除以O(shè)PRD1,假設(shè)商存放在Divd中,余數(shù)存放在Mod中,那么對OPRD1操作數(shù)要進行測試的位號就是Mod,它的主要功能就是把要測試位的值送往CF,看幾個簡單的例子:
 b.BTC(Bit Test And Complement),測試并取反用法和規(guī)則與BT是一樣,但在功能有些不同,它不但將要測試位的值送往CF,并且還將該位取反。
 c.BTR(Bit Test And Reset),測試并復(fù)位,用法和規(guī)則與BT是一樣,但在功能有些不同,它不但將要測試位的值送往CF,并且還將該位復(fù)位(即清0)。
 d.BTS(Bit Test And Set),測試并置位,用法和規(guī)則與BT是一樣,但在功能有些不同,它不但將要測試位的值送往CF,并且還將該位置位(即置1)。
 e.BSF(Bit Scan Forward),順向位掃描,指令格式:BSF OPRD1,OPRD2,功能:將從右向左(從最低位到最高位)對OPRD2操作數(shù)進行掃描,并將第一個為1的位號送給操作數(shù)OPRD1。操作數(shù)OPRD1,OPRD2可以是16位或32位通用寄存器或者存儲單元,但OPRD1和OPRD2操作數(shù)的長度必須相等。
 f.BSR(Bit Scan Reverse),逆向位掃描,指令格式:BSR OPRD1,OPRD2,功能:將從左向右(從最高位到最低位)對OPRD2操作數(shù)進行掃描,并將第一個為1的位號送給操作數(shù)OPRD1。操作數(shù)OPRD1,OPRD2可以是16位或32位通用寄存器或存儲單元,但OPRD1和OPRD2操作數(shù)的長度必須相等。
 g.舉個簡單的例子來說明這6條指令:

 AA DW 1234H,5678H
 BB DW 9999H,7777H
 MOV EAX,12345678H
 MOV BX,9999H
 BT EAX,8;CF=0,EAX保持不變
 BTC EAX,8;CF=0,EAX=12345778H
 BTR EAX,8;CF=0,EAX=12345678H
 BTS EAX,8;CF=0,EAX=12345778H
 BSF AX,BX;AX=0
 BSR AX,BX;AX=15
 
 BT WORD PTR [AA],4;CF=1,[AA]的內(nèi)容不變
 BTC WORD PTR [AA],4;CF=1,[AA]=1223H
 BTR WORD PTR [AA],4;CF=1,[AA]=1223H
 BTS WORD PTR [AA],4;CF=1,[AA]=1234H
 BSF WORD PTR [AA],BX;[AA]=0;
 BSR WORD PTR [AA],BX;[AA]=15(十進制) 
 
 BT DWORD PTR [BB],12;CF=1,[BB]的內(nèi)容保持不變
 BTC DWORD PTR [BB],12;CF=1,[BB]=76779999H
 BTR DWORD PTR [BB],12;CF=1,[BB]=76779999H
 BTS DWORD PTR [BB],12;CF=1,[BB]=77779999H
 BSF DWORD PTR [BB],12;[BB]=0
 BSR DWORD PTR [BB],12;[BB]=31(十進制) 

 BB.處理器控制指令
 處理器控制指令主要是用來設(shè)置/清除標(biāo)志,空操作以及與外部事件同步等。
 a.CLC,將CF標(biāo)志位清0。
 b.STC,將CF標(biāo)志位置1。
 c.CLI,關(guān)中斷。
 d.STI,開中斷。
 e.CLD,清DF=0。
 f.STD,置DF=1。
 g.NOP,空操作,填補程序中的空白區(qū),空操作本身不執(zhí)行任何操作,主要是為了保持程序的連續(xù)性。
 h.WAIT,等待BUSY引腳為高。
 i.LOCK,封鎖前綴可以鎖定其后指令的操作數(shù)的存儲單元,該指令在指令執(zhí)行期間一直有效。在多任務(wù)環(huán)境中,可以用它來保證獨占其享內(nèi)存,只有以下指令才可以用LOCK前綴:
  XCHG,ADD,ADC,INC,SUB,SBB,DEC,NEG,OR,AND,XOR,NOT,BT,BTS,BTR,BTC
 j.說明處理器類型的偽指令
  .8086,只支持對8086指令的匯編
  .186,只支持對80186指令的匯編
  .286,支持對非特權(quán)的80286指令的匯編
  .286C,支持對非特權(quán)的80286指令的匯編
  .286P,支持對80286所有指令的匯編
  .386,支持對80386非特權(quán)指令的匯編
  .386C,支持對80386非特權(quán)指令的匯編
  .386P,支持對80386所有指令的匯編
  只有用偽指令說明了處理器類型,匯編程序才知道如何更好去編譯,連接程序,更好地去檢錯。
  在后續(xù)的幾篇里將詳細(xì)介紹80386的段頁管理機制及控制寄存器,調(diào)試寄存器,以及如何在386實模下和保護模式下編程。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多