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