FLAGS標(biāo)志寄存器_第1頁
FLAGS標(biāo)志寄存器_第2頁
FLAGS標(biāo)志寄存器_第3頁
FLAGS標(biāo)志寄存器_第4頁
FLAGS標(biāo)志寄存器_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、微機(jī)原理整理 江蘇大學(xué)非計(jì)算機(jī)專業(yè)使用,本人私人資料;微機(jī)原理97FLAGS標(biāo)志寄存器:6個(gè)狀態(tài)標(biāo)志位和3個(gè)控制標(biāo)志CF:進(jìn)位標(biāo)志位。當(dāng)進(jìn)行加減法運(yùn)算時(shí),若最高位向前有進(jìn)借位CF=1,無CF=0。PF:奇偶標(biāo)志位。當(dāng)運(yùn)算結(jié)果的低8位中1的個(gè)數(shù)為偶數(shù)時(shí)PF=1,為奇數(shù)時(shí)PF=0。AF:輔助進(jìn)位標(biāo)志。D3向D4有借進(jìn)位發(fā)生時(shí)AF=1,無借進(jìn)位發(fā)生AF=0。ZF:零位標(biāo)志。當(dāng)運(yùn)算結(jié)果為零時(shí)ZF=1,運(yùn)算結(jié)果不為零時(shí)ZF=0。SF:符號(hào)標(biāo)志位。當(dāng)運(yùn)算結(jié)果的最高位為1時(shí)SF=1,最高位為0時(shí)SF=0。OP:溢出標(biāo)志位。當(dāng)運(yùn)算結(jié)果超出了帶符號(hào)數(shù)的范圍,即溢出時(shí)OF=1,未溢出時(shí)OF=0。(D7為符號(hào)位,說

2、明:D7,D6,D5,D4,D3,D2,D1,D0)332算數(shù)運(yùn)算指令算數(shù)運(yùn)算指令;加,減,乘,除有符號(hào)數(shù)的溢出:OF無符號(hào)數(shù)的溢出:CF指令對(duì)操作數(shù)的要求:?jiǎn)尾僮鲾?shù)指令中的操作數(shù)不允許使用立即數(shù) 雙操作數(shù)指令中,立即數(shù)只能作為源操作數(shù),不允許源操作數(shù)和目的操作數(shù)都是存儲(chǔ)器。1, 加法運(yùn)算指令(不允許段寄存器作為操作數(shù)和兩個(gè)都是存儲(chǔ)器)1) ADD普通加法指令(對(duì)全部6個(gè)狀態(tài)標(biāo)志位都會(huì)產(chǎn)生影響)ADD OPRD1,OPRD2 ;OPRD1+OPRD2送到OPRD1中去ADD SI,BX是錯(cuò)誤的 ;不允許兩個(gè)操作數(shù)都是存儲(chǔ)器操作數(shù) 例:MOV AL,7EH ADD AL,5BH 程序執(zhí)行后,AL

3、=D9H,即11011001B, D9H>7FH(8位帶符號(hào)數(shù)的最大值) OF=1 D9H<FFH(8位無符號(hào)數(shù)的最大值) CF=0 所有狀態(tài)標(biāo)志位AF=0,CF=0,OF=1,PF=0,SF=1,ZF=02) ADC帶進(jìn)位(CF)位的加法指令(對(duì)全部6個(gè)狀態(tài)標(biāo)志位都會(huì)產(chǎn)生影響)ADC OPRD1,OPRD2 ;OPRD1+OPRD2+CF送到OPRD1中去不允許兩個(gè)操作數(shù)都是存儲(chǔ)器操作數(shù) 例:設(shè)CF=1,寫出以下指令執(zhí)行后的結(jié)果MOV AL,7EH ADC AL,0ABH 指令執(zhí)行后:AL=7EH+0ABH+1=2AH,且CF=13) INC加1指令(不影響CF,影響其它5個(gè)狀態(tài)

4、標(biāo)志)INC OPRD ;OPRD+1送到OPRD中去OPRD不能是立即數(shù)通常用于在循環(huán)程序中修改地址指針及循環(huán)次數(shù)2, 減法指令(不允許段寄存器作為操作數(shù)和兩個(gè)都是存儲(chǔ)器)1) SUB不考慮借位的減法指令(對(duì)全部6個(gè)狀態(tài)標(biāo)志位都會(huì)產(chǎn)生影響)SUB OPRD1,OPRD2 不允許兩個(gè)操作數(shù)都是存儲(chǔ)器操作數(shù) 例:SUB AL,BP+SI ;將SS:BP+SI單元的內(nèi)容送到AL中去 基址變址尋址:基址:BX或BP 變址:SI或DI DSJBX變址 SS JBP變址2) SBB考慮借位的減法指令(對(duì)全部6個(gè)狀態(tài)標(biāo)志位都會(huì)產(chǎn)生影響)SUB OPRD1,OPRD2 ;將OPRD1-OPRD2-CF送到O

5、PRD1中不允許兩個(gè)操作數(shù)都是存儲(chǔ)器操作數(shù)3) DEC減1指令(不影響CF,影響其它5個(gè)狀態(tài)標(biāo)志)DEC OPRD OPRD不能是立即數(shù)4) NEG求補(bǔ)指令(對(duì)全部6個(gè)狀態(tài)標(biāo)志位都會(huì)產(chǎn)生影響)NEG OPRD (求負(fù)數(shù)的絕對(duì)值) ;用0-OPRDCF通常為1,除非OPRD為0OF通常為0,除非OPRD為80H(-128)或8000H(-32768),執(zhí)行后操作數(shù)不變,但是OF為1。5) CMP比較指令(僅影響6個(gè)狀態(tài)標(biāo)志位)CMP OPRD1,OPRD2 ;OPRD1-OPRD2,結(jié)果不送回OPRD1不允許兩個(gè)操作數(shù)都是存儲(chǔ)器操作數(shù) 比較兩個(gè)操作數(shù)的大小關(guān)系。 相等:ZF=1 不相等:無符號(hào)數(shù)

6、,CMP AX,BX CF=0,AX>BX CF=1,AX<BX 有符號(hào)數(shù),CMP AX,BX SF,OF相同,AX>BX SF,OF不同,AX<BX例:3-24在內(nèi)存數(shù)據(jù)段從DATA開始的單元中存放了兩個(gè)8位無符號(hào)數(shù),試比較他們的大小,并將大的數(shù)送MAX單元、LEA BX,DATAMOVE AL,BXINC BXCMP AL,BXJNC DONEMOV AL,BXDONE:MOV MAX,AL HLT3, 乘法指令MUL無符號(hào)乘法指令(影響CF和OF)MUL OPRD隱含尋址方式,隱含目標(biāo)操作數(shù)AX(DX),源操作數(shù)由指令給出。字節(jié)乘法:OPRD*AL 送到AX中字乘

7、法:OPRD*AX 送到DX:AX中這里,源操作數(shù)OPRD可以是8位或16位的寄存器或存儲(chǔ)器。乘法指令要求兩操作數(shù)字長(zhǎng)相等,且不能為立即數(shù)。MUL BX ;用AX*BX送到DX:AX中MUL BYTE PTRSI ;AL*SI送到AX中MUL DL ;用AL*DL送到AX中例:設(shè)AL=0FEH,CL=11H,兩數(shù)均為無符號(hào)數(shù),求AL與CL的乘積。MUL CL指令執(zhí)行后:AX=10DEH,因AH中的結(jié)果不為零,故CF=OF=1。乘積的高半部分不為0,則CF=OF=1,代表AH或DX中包含乘積的有效數(shù)字 高半部分為0,則CF=OF=04, 除法指令DIV 無符號(hào)數(shù)除法指令(對(duì)6個(gè)標(biāo)志位均無影響)

8、DIV OPRD隱含尋址方式,隱含了被除數(shù),除數(shù)OPRD不能為立即數(shù)除數(shù)OPRD 8位,則被除數(shù)AX 16位 字位拓展指令CBW AX/OPRD放入AL,AX%OPRD放入AH除數(shù)OPRD 16位,則被除數(shù) DX(高):AX(低) 32位 字位拓展指令CWD DX:AX/OPRD 放入AX,DX:AX%OPRD放入DX 例:用除法指令計(jì)算7FA2H/03DDH MOV AX,7FA2H MOV BX,03DDH CWD ;AX擴(kuò)展為DX=0000H,AX=7FA2H DIV BX ;商=AX=0021H,余數(shù)=DX=0025H3.3.3 邏輯運(yùn)算與移位指令1,邏輯運(yùn)算指令 除NOT指令外,其余

9、4條指令對(duì)操作數(shù)的要求與MOV指令相同,且使OF=CF=0,其余值不定 1)AND邏輯“與”指令 AND OPRD1,OPRD2 ;按位相與,僅1與1=1 作用之一:使目標(biāo)操作數(shù)的某些位保持不變,把其他位清0AND AL,0FH ;將AL中的高4位清0,低4位保持不變作用之二;使操作數(shù)不變,但影響6個(gè)狀態(tài)標(biāo)志位,OF=CF=0AND AX,AX 2)OR邏輯“或”指令 OR OPRD1,OPRD2 ; 作用之一:使目標(biāo)操作數(shù)的某些位保持不變,將另外一些位置1 OR AL,20H ;將AL中的D5位置1,其余不變作用之二:使操作數(shù)不變,但影響6個(gè)狀態(tài)標(biāo)志位,OF=CF=0 OR AX,AX3)N

10、OT邏輯“非”指令(對(duì)6個(gè)標(biāo)志位均無影響)NOT OPRD ;OPRD按位取反OPRD 不能是立即數(shù)NOT WORD PTRSI4)XOR邏輯“異或”指令XOR OPRD1,OPRD2 ;將兩操作數(shù)按位進(jìn)行“異或”異或操作:兩操作數(shù)相同時(shí)為0,不同時(shí)為1 作用:使某寄存器清零 XOR AX,AX ;使AX清零5)TEST測(cè)試指令TEST OPRD1,OPRD2 ;僅影響標(biāo)志位,工作與AND相同TEST AL,02H ;若AL中D1位為1,則ZF=0,否則ZF=12,移位指令(影響6個(gè)狀態(tài)標(biāo)志位) 作用:實(shí)現(xiàn)寄存器操作數(shù)或內(nèi)存操作數(shù)進(jìn)行指定次數(shù)的位移 移動(dòng)1次,指令直接給出,2位及以上,移動(dòng)位數(shù)

11、要放在CL寄存器中。1) 非循環(huán)移位指令算數(shù)移位指令針對(duì)有符號(hào)數(shù),邏輯移位指令針對(duì)無符號(hào)數(shù) SAL和SHL 算數(shù)左移和邏輯左移執(zhí)行完全相同的操作 SAL OPRD,1/CL SHL OPRD,1/CL 將OPRD中的內(nèi)容左移一位或CL位,每移一位,左邊的最高位移入標(biāo)志位CF,在最低位補(bǔ)零。 若移動(dòng)一次,操作數(shù)的最高位和CF標(biāo)志位狀態(tài)不相同,則OF=1 狀態(tài)相同,則OF=0 (判斷移位前后的符號(hào)位是否一致。)例:MOV AL,41HSHL AL,1執(zhí)行結(jié)果為AL=82H,CF=0,OF=1M若視AL為無符號(hào)數(shù),則它沒有溢出(82H<FFH) 若視AL為有符號(hào)數(shù),則溢出(82H>7FH

12、)(原先AL是41H,而后移位后嗎,D7位從0變?yōu)榱?,產(chǎn)生了溢出。)例:把以DATA為首址的兩個(gè)連續(xù)單元中的16位無符號(hào)數(shù)乘以10LEA SI,DATAMOV AX,SISHL AX,1 將二進(jìn)制無符號(hào)數(shù)左移一位相當(dāng)于將這個(gè)數(shù)乘以2MOV BX,AXMOV CL,2 左移兩位,則乘以4SHL AX,CLADD AX,BXHLTSHR邏輯右移指令 SHR OPRD,1/CL OPRD順序向右移1位或CL位,右邊最低位移入CF,左邊最高位補(bǔ)零 移動(dòng)一次,若移動(dòng)后的最高位與起先的不同,則OF=1,如果相同,則OF=0。例:MOV AL,82HSHR AL,1執(zhí)行結(jié)果:AL=41H,CF=0,OF=

13、1 每邏輯右移一位,相當(dāng)于無符號(hào)的目標(biāo)操作數(shù)除以2,可以用SHR指令完成把一個(gè)數(shù)除以2I的運(yùn)算 SAR算數(shù)右移指令 SAR OPRD,1/CL OPRD順序向右移1位或CL位,右邊最低位移入CF,左邊最高位保持不變 不影響OF,AF例:MOV AL,82HSAR AL,1執(zhí)行結(jié)果:AL=C1H,CF=0。2) 循環(huán)移位指令如果最高位與CF不相同,則OF=1;相同,則OF=0 ROL不帶CF的循環(huán)左移指令 ROL OPRD,1/CL OPRD向左移動(dòng)1位或CL指定位,最高位移入CF,同時(shí)再移入最低位構(gòu)成循環(huán)例:MOV AL,82HROL AL,1執(zhí)行結(jié)果:AL=05H,CF=1,OF=1ROR不

14、帶CF的循環(huán)右移指令 ROR OPRD,1/CL OPRD向右移動(dòng)1位CL指定位,最低位移入CF,同時(shí)再移入最低高位構(gòu)成循環(huán)例:MOV AL,82HROR AL,1執(zhí)行結(jié)果:AL=41H,OF=1,CF=0 RCL 帶CF的循環(huán)左移指令 RCL OPRD,1/CL OPRD連同CF一起向左移動(dòng)1位或CL指定位,最高位進(jìn)入CF,CF原來的值進(jìn)入最后一位。 RCR 帶CF的循環(huán)右移指令 RCR OPRD,1/CL OPED連同CF一起向右移動(dòng)1位或CL 指定位,最低位進(jìn)入CF,CF中原來的值進(jìn)入最高位 4.1匯編語言源程序機(jī)器語言:計(jì)算機(jī)硬件系統(tǒng)唯一能夠直接理解和執(zhí)行的語言匯編語言:使用指令助記符

15、,符號(hào)地址,標(biāo)號(hào)和偽指令等來書寫程序4.2偽指令 4.2.1數(shù)據(jù)定義偽指令 1格式:變量名 偽操作 操作數(shù) ,操作數(shù) 常用的數(shù)據(jù)定義偽指令有5種(1) DB:定義變量為字節(jié)類型。變量中的每個(gè)操作數(shù)都占一個(gè)字節(jié)(00FFH)。DB偽指令也常用來定義字符串。(2) DW:定義變量未字類型。DW偽指令后面每個(gè)操作數(shù)都占用2個(gè)字節(jié)。在內(nèi)存中存放是,低字節(jié)低地址,高字節(jié)高地址。(3) DD:定義雙字類型的變量。DD偽指令后面的每個(gè)操作數(shù)都占4個(gè)字節(jié)。在內(nèi)存中存放時(shí),同樣是低字節(jié)低地址,高字節(jié)高地址。(4) DQ:定義四字類型的變量。(5) DT:定義十字節(jié)類型的變量。DT偽操作后面的每個(gè)操作數(shù)都為10個(gè)

16、字節(jié)的壓縮BCD數(shù)。 2. 操作數(shù) 操作數(shù)(大于等于一個(gè)):常數(shù),表達(dá)式或字符串 操作數(shù)的值不能超過由偽操作所定義的數(shù)據(jù)類型限定的范圍 例如:DB 操作數(shù)范圍:0255(無符號(hào)數(shù)) -128+127(有符號(hào)數(shù)) 字符和字符串都必須放在單引號(hào)中。 超過兩個(gè)字符的字符串只能用DB指令。 DATA DB 11H,33H NUM DW 100*5+88 STR DB HELLO! DATA2 DW ? ;為變量DATA2分配2個(gè)字節(jié)的空間,初始值為任意值。SUM DQ 0011223344556677H DATA2 DW 11H,22H,3344H由低到高存入 最下面的最高77H 00H66H 11H55H 00H44H 22H33H 44H22H 33H11H00HDATA1 DB 11H,2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論