第五章第3講 算術運算指令_第1頁
第五章第3講 算術運算指令_第2頁
第五章第3講 算術運算指令_第3頁
第五章第3講 算術運算指令_第4頁
第五章第3講 算術運算指令_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 算術運算類指令算術運算類指令算術運算類指令算術運算類指令 加法類指令加法類指令ADD ADC INC 減法類指令減法類指令SUB SBB DECNEG CMP 乘法類指令乘法類指令MUL IMUL 除法類指令除法類指令DIV IDIV CBW CWB 加法指令加法指令ADDADD減法指令減法指令SUBSUB例例: :加減運算加減運算將將AXAX、BXBX、CXCX寄存器中數據相加,再與寄存器中數據相加,再與DXDX中數據相減后,結果存入內存中數據相減后,結果存入內存0506H0506H處。處。寫出指令。寫出指令。ADD AX,BXADD AX,CX;AXAX+BXAXAX+BX;AXAX+B

2、X+CXAXAX+BX+CXSUB AX,DX;AXAX+BX+CX-DXAXAX+BX+CX-DXMOV 0506H,AX帶進位加法指令帶進位加法指令ADCADC ADCADC指令主要與指令主要與ADDADD配合,實現雙字加法運算配合,實現雙字加法運算帶借位減法指令帶借位減法指令SBBSBB SBBSBB指令主要與指令主要與SUBSUB配合,實現雙字減法運算配合,實現雙字減法運算例:例:雙字加減雙字加減在內存在內存5050H5050H、6100H6100H、6220H6220H三處各有一三處各有一個雙字,將前兩處雙字相減后再與第三處雙字相個雙字,將前兩處雙字相減后再與第三處雙字相加,結果存入

3、加,結果存入DXDX(高(高1616位)和位)和AXAX(低(低1616位)中。位)中。MOV AXMOV AX,5050H5050HMOV DXMOV DX,5052H5052HSUB AXSUB AX,6100H6100HSBB DXSBB DX,6102H6102HADD AXADD AX,6220H6220HADC DXADC DX,6222H6222H;第一處雙字在;第一處雙字在DXDX、AXAX中中;前兩處雙字的和在;前兩處雙字的和在DXDX、AXAX中中;最終結果在;最終結果在DXDX、AXAX中中增量指令增量指令INCINC 操作數不能是立即數。操作數不能是立即數。減量指令減量

4、指令DECDEC 操作數不能是立即數。操作數不能是立即數。比較指令比較指令CMPCMP 指令執行結果不送指令執行結果不送dstdst,只影響標志寄存器,只影響標志寄存器 不允許兩個操作數都是存儲器操作數不允許兩個操作數都是存儲器操作數如:如:AL=FFHAL=FFH,BL=FFHBL=FFH,執行,執行CMP ALCMP AL,BLBL執行結果:執行結果:AL=BL=FFHAL=BL=FFH PF=ZF=1 PF=ZF=1,CF=AF=SF=OF=0CF=AF=SF=OF=0轉移指令轉移指令轉移指轉移指令分類令分類無條件轉移無條件轉移條件轉移條件轉移JMPJMP多種多種無條件轉移無條件轉移 M

5、OV AX,0000HMOV AX,0000H MOV BX,1111H MOV BX,1111H JMP NEXT JMP NEXT MOV AL,FFH MOV AL,FFH SUB AX,BX SUB AX,BXNEXT:MOV AX,1234HNEXT:MOV AX,1234H;程序從此行跳到;程序從此行跳到NEXTNEXT處執行處執行條件轉移條件轉移 MOV AX,1111HMOV AX,1111H MOV BX,1111H MOV BX,1111H CMP AX CMP AX,BXBX JZ NEXT JZ NEXT ADD AX,BX ADD AX,BXNEXT:MOV BX,3

6、333HNEXT:MOV BX,3333H;若標志寄存器中;若標志寄存器中ZF=1ZF=1,則跳轉,則跳轉內存中有兩個內存中有兩個字節(無符號)字節(無符號),地址分別為,地址分別為X X和和Y Y,編程:,編程:(1 1)若)若X X大于大于0 0,則給,則給Y Y賦值為賦值為1 1(2 2)若)若X X等于等于0 0,則給,則給Y Y賦值為賦值為0 0(3 3)若)若X X小于小于0 0,則給,則給Y Y賦值為賦值為-1-1MOV ALMOV AL,X XCMP ALCMP AL,0 0JA ONEJA ONEJE TWOJE TWOJMP THREEJMP THREEONEONE:MOV

7、 YMOV Y,1 1 HLT HLTTWOTWO:MOV YMOV Y,0 0 HLT HLTTHREETHREE:MOV YMOV Y,-1-1 HLT HLT內存中有三個內存中有三個字(有符號)字(有符號),地址分別為,地址分別為X X、Y Y、Z Z,編程,將三個字中最大者放入內存地址為編程,將三個字中最大者放入內存地址為MAXMAX處。處。XvsYXvsYXYXY否則否則XYXZXZ否則否則XZXZYZ否則否則YZYZYmaxYmaxZmaxZmax內存中有三個內存中有三個字(有符號)字(有符號),地址分別為,地址分別為X X、Y Y、Z Z,編程,將三個字中最大者放入內存地址為編程

8、,將三個字中最大者放入內存地址為MAXMAX處。處。XmaxXmax: :YmaxYmax: :ZmaxZmax: :MOV MAX,AXMOV MAX,AXHLTHLTMOV MAX,BXMOV MAX,BXHLTHLTMOV MAX,CXMOV MAX,CXHLTHLTMOV AX, XMOV AX, XMOV BX, YMOV BX, YMOV CX, ZMOV CX, ZCMP AX, BXCMP AX, BXCMP BX, CXCMP BX, CXCMP AX, CXCMP AX, CXJG JG XvsZXvsZXvsZXvsZ: :YvsZYvsZ: :XvsYXvsY: :JM

9、P JMP YvsZYvsZJG JG XmaxXmaxJMP JMP ZmaxZmaxJG JG YmaxYmaxJMP JMP ZmaxZmax一個簡易評分器,當按一個簡易評分器,當按下相應數字鍵時,在屏下相應數字鍵時,在屏幕中顯示分數。幕中顯示分數。a ab bc cd de ef fg gh ha ab bc cd de ef fg gh hVCCVCC0 09 9ClearClear輸輸入入接接口口輸輸出出接接口口VCCVCC60H60H61H61H0 07 78 89 9C C輸輸入接口入接口0 07 79 9ClearClear90H90Ha ah h輸輸出接口出接口c ce e

10、a ab bc cd de ef fg gh h60H60H61H61H0 07 78 89 9C C輸輸入接口入接口90H90Ha ah h輸輸出接口出接口c cf f1)1)列出每一個按鍵對應的輸列出每一個按鍵對應的輸入信號和輸出信號入信號和輸出信號2 2)編程實現功能)編程實現功能乘法指令乘法指令MULMUL和和IMULIMUL 乘法指令中的操作數是乘法指令中的操作數是乘數乘數,該數,該數不能是立即數不能是立即數。 對對8 88=168=16:被乘數為被乘數為ALAL,乘積自動送,乘積自動送AXAX。 對對161616=3216=32:被乘數為被乘數為AXAX。乘積自動送。乘積自動送DX

11、DX,AXAX。格式:格式:MUL MUL srcsrc ;無符號數乘法;無符號數乘法格式:格式:IMUL IMUL srcsrc ;有符號數乘法;有符號數乘法例例: :乘法乘法已知已知AX=5612HAX=5612H,BX=1166HBX=1166H執行指令執行指令 MUL BLMUL BL 和和 IMUL BXIMUL BX MUL BL MUL BL;AXALAXALBLBL乘積:乘積:72CH72CH執行結果:執行結果:AX=072CHAX=072CH IMUL BX IMUL BX;DXDX,AX AX AX AX BX BX乘積:乘積:5D79D2CH5D79D2CH 執行結果:執

12、行結果:DX=05D7HDX=05D7HAX=9D2CHAX=9D2CH除法指令除法指令DIVDIV和和IDIVIDIV 除法指令中的操作數是除數,該數不能是立即數。除法指令中的操作數是除數,該數不能是立即數。 對對16168=88=8:被除數為被除數為AXAX,商自動送,商自動送ALAL,余數自動,余數自動送送AHAH。 對對323216=1616=16:被除數為被除數為DXDX,AXAX,商自動送,商自動送AXAX,余,余數自動送數自動送DXDX格式:格式:DIV DIV srcsrc ;無符號數除法;無符號數除法格式:格式:IDIV IDIV srcsrc ;有符號數除法;有符號數除法例

13、例:除法運算:除法運算設設AX=072DHAX=072DH,BL=12HBL=12H DIV BL DIV BL 執行結果:執行結果: AL = 66H AL = 66H (商)(商)AH = 00H AH = 00H (余數)(余數);16168=88=8,被除數,被除數AXAX,商,商;送;送ALAL,余數送,余數送AHAH。 乘法運算只允許乘法運算只允許8 88=168=16或或161616=3216=32兩種。兩種。 除法運算只允許除法運算只允許16168=88=8或或323216=1616=16兩種。兩種。怎樣實現怎樣實現16168 8161616168 88 8調整為調整為1616

14、1616調整為調整為32321616調整為調整為16168 8操作數擴展操作數擴展無符號數高位補無符號數高位補0 0有符號數高位補符號有符號數高位補符號用用MOVMOV用用CBWCBW、CWDCWD符號擴展指令符號擴展指令CBWCBW、CWDCWD CBWCBW、CWDCWD只用于只用于帶符號數帶符號數的擴展,無符的擴展,無符號數擴展用號數擴展用MOVMOV指令。指令。 擴展只能是擴展只能是ALAL到到AXAX,或者,或者AXAX到到DXDX,AXAX。 以符號位擴展。以符號位擴展。格式:格式:CBW CBW ;字節擴展成字;字節擴展成字格式:格式:CWD CWD ;字擴展成雙字;字擴展成雙字

15、例例:操作數擴展:操作數擴展假設被除數在假設被除數在AXAX中,除數在中,除數在CXCX中,實現無符號中,實現無符號數數16161616和帶符號數和帶符號數16161616。有符號:有符號: CBW CBW IDIV BL IDIV BL無符號:無符號: MOV AH MOV AH,00H00H DIV BL DIV BL假設被除數在假設被除數在ALAL中,除數在中,除數在BLBL中,實現無中,實現無符號數符號數8 88 8和和帶符號數帶符號數8 88 8。 無符號:無符號: MOV DX MOV DX,0 0 DIV CX DIV CX有符號:有符號: CWD CWD IDIV CX IDIV CX 寫出執行以下計算的指令序列,其中寫出執行以下計算的指令序列,其中X X、Y Y、Z Z、R R、W W均為存放均為存放1616位有符號數的內存單元地址。位有符號數的內存單元地址。(1) Z (1) Z W + ( Z - X ) W + ( Z - X )(2) (2) Z Z W - ( X + 6 ) -( R+9 ) W - ( X + 6 ) -( R+9 )(3) (3) Z Z ( W( WX X )/( Y+6 ), R )/( Y+6 ), R

溫馨提示

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

評論

0/150

提交評論