小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多