微機原理3-3指令系統(tǒng)Ⅱ算術上.ppt_第1頁
微機原理3-3指令系統(tǒng)Ⅱ算術上.ppt_第2頁
微機原理3-3指令系統(tǒng)Ⅱ算術上.ppt_第3頁
微機原理3-3指令系統(tǒng)Ⅱ算術上.ppt_第4頁
微機原理3-3指令系統(tǒng)Ⅱ算術上.ppt_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

上課啦,第二部分 8086/8088指令系統(tǒng) 二 算術運算指令上(Arithmetic) 功能:加、減、乘、除;BCD碼表示的十進制數(shù)算術運算 (一)加法指令(Arithmetic) (二)減法指令(Subtraction) (三)乘法指令(Multiplication) (四)除法指令(Division) (五)BCD碼指令 (六)擴展指令,特點: 多數(shù)指令要影響FR,不同指令影響不同 (1) 加、減法指令影響SF,ZF,AF,PF,CF,OF; (2) 加1和減1指令不影響CF; (3) 乘法指令影響CF,OF; (4) 除法指令使大部分標志位的狀態(tài)不確定; (5) BCD碼調整指令對標志位的影響不同; (6) 轉換指令對標志位無影響 雙操作數(shù)指令除源數(shù)可為立即數(shù)外,其余必須有一個為寄存器操作數(shù);單操作數(shù)指令不能為立即數(shù)。 運算有帶符號數(shù)與無符號數(shù)。 都可以對字節(jié)、字進行算術運算(二進制運算和十進制運算),個別可以運算雙字。,(一)加法指令 1、 ADD (Addition) 2、 ADC (Add with carry) 3、 INC (Increment by 1),例1: 設(AX)=4H,(BX)=200H,(DX)=6H, (DI)=500H (DS: 502)=2H 則 ADD AX, BX ;執(zhí)行后(AX)=204H ADD DX, 2DI ;語句執(zhí)行后(DX)=8H,1、不帶進位加法指令ADD : ADD dest , src : (dest) (src)+(dest) 源數(shù)與目的數(shù)相加 和送入目的操作數(shù) 根據(jù)和設置FR中標志位,例2 MOV AL, 7EH ;(AL)=7EH MOV BL, 5BH ;(BL)=5BH ADD AL, BL ;(AL)=7EH+5BH=D9H 影響標志位的情況: SF=1 , 結果最高位1 ZF=0 ,結果不等于0 AF=1 ,D3 位向D4 有進位 PF=0 ,“1”的個數(shù)為奇數(shù) CF=0 ,無進位 OF=1 ,和超過127,: (1)ADD可以完成字、字節(jié)相加,源數(shù)和目標數(shù)必須同為無符號數(shù)或者同為有符號數(shù)。 (2)dest可以為Reg、Mem src可以為Im、Reg、Mem,不能同時為Mem。 有下列合法5種格式 ADD R, R ;通用寄存器之間相加 ADD R, Im ;通用寄存器與立即數(shù)之間相加 ADD M, Im ;內存數(shù)與立即數(shù)相加 ADD M, R ;通用寄存器與內存數(shù)之間相加 ADD R, M ;內存數(shù)與通用寄存器之間相加,(3)SegR內容不參與加減乘除運算 判斷下列語句合法否? ADD AX,CL ADD DS,BX ADD SI,1000H ADD AH,DATA-BYTE,,bit不匹配 ,SegR不參與 ,不能MM ,(4)指令影響標志位的情況: OF=1:8位帶符號數(shù)相加,和超出范圍(-128到+127) 16位帶符號數(shù)相加,和超出范圍(-32768到+32767); OF標志可用來表示有符號數(shù)的溢出,有符號數(shù)的溢出是一種出錯,在運算過程中應當避免。 CF=1:8位無符號數(shù)相加,和超過255, 16位無符號數(shù)相加,和超過65535。 CF標志可用來表示無符號數(shù)的溢出。 其他條件標志(SF,AF,PF,ZF)根據(jù)定義設定。,2、帶進位加法指令ADC :ADC dest,src :(dest)(dest)+(src)+CF : (1) CF: 進位標志CF的現(xiàn)行值(上條指令CF值) (2)合法形式有: ADDC R, R ;通用寄存器之間相加 ADDC R, Im ;通用寄存器與立即數(shù)之間相加 ADDC M, Im ;內存數(shù)與立即數(shù)相加 ADDC M, R ;通用寄存器與內存數(shù)之間相加 ADDC R, M ;內存數(shù)與通用寄存器之間相加 (3) 主要用于多字節(jié)運算中,可以將低字節(jié)運算的進位加入到高字節(jié)運算中.,計算 3B74AC60F8H+20D59E36C1H=? 兩數(shù)存放在:DATA1,DATA2的開始單元,流程圖,多字節(jié)數(shù)內存存放,程序1:字節(jié)加法,循環(huán)5次完成,結果在DATA1區(qū)域中 MOV CX, 5 MOV SI, 0 ; 清SI CLC ; 清CF again: MOV AL, DATA2SI ADC DATA1SI,AL INC SI ;(SI)+1 (SI) DEC CX ;(CX)-1 (CX) JNZ again ;(CX)0 轉移 HALT ;停機 程序2:字加法,加3次完成,結果在DX:BX:AX中 MOV AX,60F8H ADD AX,36C1H MOV BX,74ACH ADC BX,D59EH MOV DX,003BH ADC DX,0020H,3、加1指令INC : INC dest : (dest)(dest)+1 對指定的目標操作數(shù)+1操作數(shù)單元。 : (1)單操作數(shù)指令 (2) dest :8/16bit的寄存器、存儲器。不能是段寄存器、立即數(shù)。 (3)影響SF,ZF,AF,PF,OF, 不影響CF。 (4)用于在循環(huán)程序中修改循環(huán)次數(shù)和地址指針。,例: INC DL ; 8位寄存器1 INC SI ;16位寄存器1 INC BYTE PTR BXSI ;存儲器1(字節(jié)操作) INC WORD PTR DI ;存儲器1(字操作) INC DS ; 錯 INC 30H ;錯,(二)減法指令 1、SUB(Subtraction) 2、SBB(Subtraction with borrow) 3、DEC(Decrement by 1 ) 4、NEG(Negate) 5、CMP(Compare),1、不帶借位減法指令SUB : SUB dest,src :(dest)(dest)-(src),置FR : (1)src:Im,R,Mem。dest:R,Mem。 例:SUB AL,37H ; 寄存器-立即數(shù) SUB BX,DX ; 寄存器-寄存器 SUB CX, VAR1 ; 寄存器-存儲器 SUB ARRAYSI, AX ; 存儲器-寄存器 SUB WORD PTRALPHABXDI,512H ;Mem-Im (2)CF=1,無符號數(shù)小減大; SF=1,帶符號數(shù)小減大, OF=1溢出.,例: (BL)=13H (CL)=68H SUB BL,CL,0001 0011 13H 0110 1000 68H 1010 1011 ABH,執(zhí)行后: FR:CF=1 AF=1 PF=0 ZF=0 SF=1 OF=0 (BL)=ABH (CL)=68H,(3)寄存器數(shù)自身相減,則將Reg清零。 如:SUB AX,AX 執(zhí)行后:(AX)=00H, CF=0,ZF=1,PF=0,SF=0,OF=0,AF=0,2、帶借位減法指令 SBB :SBB dest,src :(dest)(dest)-(src)- CF 目標數(shù)減源數(shù) 差再減標志位CF 差送入目標數(shù)單元 置FR相關位的值 : (1)src:立即數(shù),寄存器,存儲器。 dest:寄存器,存儲器。 合法形式有:,SBB R,R SBB CX,DX;寄存器-寄存器-CF SBB R,Im SBB BX,100H;寄存器-立即數(shù) -CF SBB M,Im SBB SI+1000H,96H;存儲器-立即數(shù)-CF SBB M,R SBB DISPBP, BL;存儲器-寄存器-CF SBB R,M SBB AL, DATA1SI;寄存器-存儲器-CF (2)運算中CF是進位標志CF的現(xiàn)行值(上條指令CF值),不是運算完畢后CF的值。 (3)用途:用于多字節(jié)數(shù)減法,3、減1指令DEC :DEC dest :(dest)(dest)-1 : (1)dest:寄存器、存儲器。不能是段寄存器。 (2)標志位影響SF,ZF,AF,PF,OF;不影響CF。 (3)用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。 MOV AX , 0FFFFH CYC: DEC AX JNZ CYC HLT 用于延時時間。,4、求補指令NEG : NEG dest : (dest)0-(dest) 把操作數(shù)按位求反后末位+1 結果送回目標數(shù)單元 置FR : (1)dest:寄存器、存儲器。 (2)影響標志:A、C、O、P、S、Z。 CF:操作數(shù)為0時求補,CF=0;一般使CF=1. OF:對-128(80H)或-32768(8000H)求補,結果不變,OF=1;否則OF=0.,(3)NEG將dest作“有符號數(shù)”處理。 若(dest)是正數(shù),則求補后是絕對值相等的負數(shù)(補碼) MOV AL,3;AL03H NEG AL;AL0-03H=0FDH 若(dest)是負數(shù)(補碼) ,則求補后是絕對值相等的正數(shù) MOV AL,-3;AL0FDH NEG AL;AL0-0FDH=03H 利用NEG可以求得絕對值,見下例。,例: 從AREA1開始存100個帶符數(shù)。 求:各數(shù)的絕對值存于AREA2的開 始單元。,程序: LEA SI, AREA1 LEA DI, AREA2 MOV CX, 100 CHECK: MOV AL, SI OR AL, AL JNS NEXT NEG AL NEXT: MOV DI, AL INC SI INC DI DEC CX JNZ CHECK HALT,5、比較指令CMP :CMP dest,src :(dest)-(src),結果不送回dest 置標志寄存器 : (1)影響標志:A、C、O、P、S、Z。 (2)src、dest類型與SBB同。 例:CMP AL,0AH ;寄存器與立即數(shù)比較 CMP CX, DI ;寄存器與寄存器比較 CMP AX, AREA1;寄存器與存儲器比較 CMP BX+5, SI;存儲器與寄存器比較 CMP WORD PTR 200H,100H;存儲器與立即數(shù)比較,(3)可以用來比較兩個數(shù)之間的關系: 兩者是否相等,兩個數(shù)中哪個大。 根據(jù)ZF標志,判斷兩者是否相等; 根據(jù)CF標志, 判斷兩個無符號數(shù)的大??; 用SF、OF標志,判斷二個帶符號數(shù)的大小。 根據(jù)Z標志,可判斷兩者是否相等 例: CMP AX, BX ZF=1, (AX) = (BX),兩者相等 ZF=0, (AX) = (BX),兩者不相等, 根據(jù)CF標志, 判斷兩個無符號數(shù)的大小 例: 比較AX,BX寄存器, 將大數(shù)送(AX) CMP AX,BX JNC NEXT ; CF=0轉NEXT XCHG AX,BX NEXT: 結論:CF=0,(AX)(BX); CF=1,(AX)0, B0 A0, B0,四種情況討論(操作數(shù)以8位為例),分析以上四種情況得出如下結論: A: OF=0 時: SF=0, 則:AB SF=1, 則:AB SF=0,則:AB; O、S異號時: 記作 SO=1 , 則: AB, 用JG/JNLE轉移指令;SO=1時, AB, 用JL/JNGE轉移指令。,(4)CMP與條件轉移指令結合起來,完成各種條件判斷和相應的程序轉移。 應用舉例:帶符號數(shù)找最大值 若自BLOCK開始的內存緩沖區(qū)中,有100個帶符號數(shù)。找出最大值。并存放到MAX單元中。 思路: 第一個數(shù)取出 ( AX), 取出第二個數(shù)(第二個字單元內容)與(AX)比較

溫馨提示

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

評論

0/150

提交評論