整數(shù)指令按功能分七種類型
	   
	   80x86微處理器的指令系統(tǒng)大致分為整數(shù)指令、浮點數(shù)指令和操作系統(tǒng)型指令三大類。掌握好指令是學(xué)習(xí)匯編語言程序設(shè)計的關(guān)鍵,要求讀者對每條指令的助記符、操作數(shù)的正確書寫格式和指令執(zhí)行后對標(biāo)志位的影響都能很好地掌握。
  本書只重點介紹整數(shù)指令,對浮點數(shù)指令和操作系統(tǒng)型指令不作敘述,有需要的讀者可查閱有關(guān)資料。
  整數(shù)指令按功能分為以下七種類型。
  數(shù)據(jù)傳送類指令;
  算術(shù)運(yùn)算類指令;
  邏輯運(yùn)算類指令;
  串操作類指令;
  控制轉(zhuǎn)移類指令;
  處理器控制類指令;
  高級和保護(hù)控制類指令。
   本書約定標(biāo)記:寄存器(Reg)、存儲器(Mem)、段寄存器(Seg)、累加器(Acc)、立即數(shù)(Imm)、I/O端口(Port),源操作數(shù) (源)、目標(biāo)操作數(shù)(目標(biāo))。狀態(tài)標(biāo)志:進(jìn)位(CF)、符號(SF)、零(ZF)、溢出(OF)、輔助進(jìn)位(AF)、奇偶(PF)。指令的操作數(shù)可以是8 位、16位或32位,尋址寬度可以是16位或32位。各類指令以表格形式給出,僅對程序設(shè)計中常用的指令加以解釋。
  3.4.1 數(shù)據(jù)傳送類指令
  數(shù)據(jù)傳送指令將數(shù)據(jù)、地址或立即數(shù)(稱源操作數(shù))傳送到寄存器或存儲單元中(稱目標(biāo)操作數(shù)),完成寄存器與寄存器,寄存器與存儲單元,I/O端口和累加器之間的字節(jié)、字和雙字的傳送,傳送指令大多都不影響標(biāo)志位。
  3.4.2 算術(shù)運(yùn)算類指令
   算術(shù)運(yùn)算類指令有加、減、乘、除等,可進(jìn)行8位、16位和32位的運(yùn)算。參加運(yùn)算的操作數(shù)可以是二進(jìn)制數(shù)和十進(jìn)制數(shù)(BCD碼);這些數(shù)可以是無符號 數(shù),也可以是帶符號數(shù)。算術(shù)運(yùn)算指令的主要特點是執(zhí)行結(jié)果影響標(biāo)志寄存器的狀態(tài)標(biāo)志位OF、SF、ZF、AF、PF、CF。
  3.4.3 控制轉(zhuǎn)移類指令
   在微機(jī)系統(tǒng)中,指令執(zhí)行的順序由CS和IP(EIP)決定。CS存放當(dāng)前代碼段的段基址,IP(EIP)存放指令的偏移地址。在正常順序執(zhí)行時,要執(zhí)行 的指令已經(jīng)由總線接口部件BIU,按CS和IP(EIP)的內(nèi)容從存儲單元中取出存入指令隊列中;CPU執(zhí)行一條指令后,按指令隊列中的指令順序,執(zhí)行下 一條指令。但實際上經(jīng)常會遇到改變程序執(zhí)行流程的情況,程序轉(zhuǎn)移指令就是用改變CS和IP(EIP)的內(nèi)容,使程序執(zhí)行的順序發(fā)生變化。當(dāng)程序需要發(fā)生轉(zhuǎn) 移時,存放在指令隊列中的指令將被清除,BIU根據(jù)改變后的CS和IP(EIP)重新確定指令的地址,并按此地址將指令從存儲單元中取出,重新送入指令隊 列,并送到CPU去執(zhí)行。
  指令系統(tǒng)中有以下四類控制轉(zhuǎn)移指令:
  無條件轉(zhuǎn)移指令;
  條件轉(zhuǎn)移指令;
  循環(huán)控制指令;
  中斷指令。
  3.4.4 處理機(jī)控制指令
  處理機(jī)控制指令完成簡單的控制功能。
   由表中可看到,在指令系統(tǒng)中允許用指令操作的標(biāo)志位有CF、DF和IF三位。其中DF用于串運(yùn)算中決定地址變化的方向,DF0時串運(yùn)算為地址增量方向執(zhí) 行,DF1串運(yùn)算為地址減量方向執(zhí)行。IF用于可屏蔽中斷,當(dāng)IF0時表示禁止可屏蔽中斷(關(guān)中斷),IF1時表示允許可屏蔽中斷(開中斷)。
  除上述指令外,32位微機(jī)增加了位操作的指令,包括位測試指令和位掃描指令兩類,從而增加指令的功能,下面加以介紹。
  功能:撤銷前面ENTER指令的動作。當(dāng)退出子程序時,應(yīng)撤銷堆棧框架的設(shè)定。
  在C語言中,不允許函數(shù)的嵌套調(diào)用,故C語言的編譯程序中只采用ENTER M,0的格式。Pascal語言則允許子程序和函數(shù)的多層嵌套調(diào)用,故可采用ENTER M, N的格式。有關(guān)操作系統(tǒng)型指令和浮點運(yùn)算指令本書不再敘述,需要時可查閱有關(guān)手冊。
	   
計算機(jī)學(xué)習(xí)推薦