微機數(shù)據(jù)傳送和加減乘除_第1頁
微機數(shù)據(jù)傳送和加減乘除_第2頁
微機數(shù)據(jù)傳送和加減乘除_第3頁
微機數(shù)據(jù)傳送和加減乘除_第4頁
微機數(shù)據(jù)傳送和加減乘除_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機數(shù)據(jù)傳送和加減乘除第一頁,共三十八頁,編輯于2023年,星期二3.3.1數(shù)據(jù)傳送指令細分,如下四種:通用傳送(*)目標地址傳送標志傳送輸入輸出(*)寄存器存儲器I/O第二頁,共三十八頁,編輯于2023年,星期二(1)MOVdest,src;dest←src可實現(xiàn):1.通用傳送指令寄存器之間傳送(除CS和IP)

例:MOV CL,DLMOVDS,AXMOV AX,BXMOVAX,ES寄存器(除CS、IP)與存儲器之間傳送

例:MOVAX,[SI]MOV[1000H],ALMOVDS,DATA[SI+BX]MOVDEST[BP+DI],ES第三頁,共三十八頁,編輯于2023年,星期二MOV指令使用規(guī)則:

1、源操作數(shù)與目的操作數(shù)類型要一致。2、不能在兩個存儲單元之間傳送。(某些單片機內(nèi)部RAM可以)MOV[1000H],[2000H]3、立即數(shù)不能送段寄存器。MOVDS,300H3、段寄存器之間不能傳送。MOVDS,ES5、CS、IP不能做目的操作數(shù)。MOVCS,AX6、立即數(shù)不允許作為目的操作數(shù)

原則:邏輯上合理,有必要,使用頻率高,效率高

立即數(shù)送通用REG或存儲器例:MOVCL,4MOVAX,03FFHMOVBYTEPTR[BX],5MOVWORDPTR[100H],5678H第四頁,共三十八頁,編輯于2023年,星期二幾個不能直接傳送的解決辦法:

用AX作橋梁

存儲器←存儲器:

MOVAX,MEM1MOVMEM2,AX

段寄存器←段寄存器:MOVAX,DS MOVES,AX段寄存器←立即數(shù):MOVAX,DATA MOVDS,AX第五頁,共三十八頁,編輯于2023年,星期二MOVDS,100;MOV[1000H],23HMOVIP,2000H;MOVAX,[0100H+BX+BP]練習:1.指出下列指令的錯誤:MOV[BX],[DI];MOVAH,CX;MOVAX,[SI][DI];MOVCS,0;第六頁,共三十八頁,編輯于2023年,星期二200MEM1MEM2…...…...

MOVSI,OFFSETMEM1MOVDI,OFFESTMEM2MOVCX,200NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNEXTHLTMEM1,MEM2是符號地址(變量)先定義后使用。在這是字節(jié)傳送,定義為字節(jié)變量應用舉例:把內(nèi)存中首地址為MEM1的200個字節(jié)送到首地址為MEM2的區(qū)域中。第七頁,共三十八頁,編輯于2023年,星期二規(guī)定由SS指示堆棧段的段基址,堆棧指針SP始終指向堆棧的頂部,SP的初值規(guī)定了所用堆棧區(qū)的大小。堆棧的最高地址叫棧底。

(2)堆棧操作指令什么是堆棧?

按“后進先出(LIFO)”方式工作的存儲區(qū)域。堆棧以字為單位進行壓入彈出操作。棧底低地址高地址SPSS堆棧段進棧方向退棧方向棧頂?shù)诎隧摚踩隧?,編輯?023年,星期二

①壓棧指令格式:PUSHsrc;源操作數(shù)可為REG、M,目的隱含SP例:PUSHAX,設(AX)=1020H(SS)=1050H,(SP)=0004H操作:[(SP)-1]←高字節(jié)AH,[(SP)-2]←低字節(jié)AL(SP)←(SP)-2進棧方向執(zhí)行后10500H10501H10502H10503H10504H?;?020棧頂執(zhí)行前?;窏m敆5譇X102010500H10501H10502H10503H10504H第九頁,共三十八頁,編輯于2023年,星期二

彈出指令格式:POPdest

;目的操作數(shù)可為REG、M例:POPBX,設(SS)=1050H,(SP)=0002H操作:(BL)←[SP](BH)←[SP+1](SP)←(SP)+21020執(zhí)行前?;窏m敆5?020BX10500H10501H10502H10503H10504H執(zhí)行后10500H10501H10502H10503H10504H?;窏m敵鰲7较虻谑?,共三十八頁,編輯于2023年,星期二堆棧指令使用時應注意幾點:①堆棧操作總是按字進行②不能從棧頂彈出一個字給CS③堆棧指針為SS:SP,SP永遠指向棧頂④SP自動進行增減量(-2,+2)第十一頁,共三十八頁,編輯于2023年,星期二練習:已知(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213H,執(zhí)行指令PUSHAXPUSHCXPOPAX(SP)=?(AX)=?第十二頁,共三十八頁,編輯于2023年,星期二其他數(shù)據(jù)傳送指令(3)交換指令XCHG格式:XCHGdest,src(4)查表指令格式:XLAT

執(zhí)行的操作:AL←[(BX)+(AL)]也叫換碼指令MOVBX,2000H;(BX)←表首地址MOVAL,0BH;(AL)←序號XALT

;查表轉(zhuǎn)換執(zhí)行后得到:(AL)=42H=’B’第十三頁,共三十八頁,編輯于2023年,星期二(5)字節(jié)/字擴展格式:CBW;combinebytetowordCWD;combinewordtodoubleword第十四頁,共三十八頁,編輯于2023年,星期二2.輸入輸出(I/O)指令CPU通過總線操作,訪問I/O端口(硬件)實現(xiàn)信息傳送。(1)輸入指令8位端口:INAL,PORT;PORT:8位端口號,0~255INAL,DX;DX:預置16位端口范圍,64K例:INAL,80H;(AL)←(80H端口)

INAX,80H;(AH)←(81H端口);(AL)←(80H端口)

MOVDX,03B0H

INAL,DX;(AL)←((DX))(2)輸入指令16位端口:INAX,PORT;PORT:8位端口號,0~255INAX,DX;DX:預置16位端口范圍,64K第十五頁,共三十八頁,編輯于2023年,星期二例:OUT68H,AX

;(69H,68H)←(AX)

MOVDX,220H

OUTDX,AL

;((DX))←(AL)(3)輸出指令8位端口:OUTPORT,AL;PORT:8位端口號,0~255OUTDX,AL;DX:預置16位端口范圍,64K(4)輸出指令16位端口:OUTPORT,AX; PORT:8位端口號,0~255OUTDX,AX ;DX:預置16位端口范圍,64K第十六頁,共三十八頁,編輯于2023年,星期二例:已知(AX)=8060H,(DX)=03F8H,端口PORT1的地址是48H,內(nèi)容是40H,請指出下列指令執(zhí)行的結(jié)果.1)OUTDX,AL2)INAL,PORT1第十七頁,共三十八頁,編輯于2023年,星期二3.地址傳送指令4.標志傳送指令其它傳送指令第十八頁,共三十八頁,編輯于2023年,星期二PUSH AXPUSH CX

PUSHF;保護標志寄存器內(nèi)容;這段程序要用到AX,CX以及標志位

POPF ;恢復標志寄存器內(nèi)容POP CXPOP AX...堆棧的應用舉例第十九頁,共三十八頁,編輯于2023年,星期二3.3.2算術運算指令指令本身并不區(qū)分無符號數(shù)和帶符號數(shù):無符號數(shù)可用CF標志判斷是否溢出;帶符號數(shù)可用OF標志判斷是否溢出;帶符號數(shù)的溢出是一種出錯狀態(tài),在運算過程中應當避免。無符號數(shù)的溢出可看作是向更高位的進位。第二十頁,共三十八頁,編輯于2023年,星期二1)不帶進位的加法指令

ADDdest,src

;destdest+src1.加法指令src:n,通用REG,M三種尋址方式dest:通用REG,M兩種尋址方式實例:ADDCL,10;ADDSI,[BX+20H];ADD[DI],200H;第二十一頁,共三十八頁,編輯于2023年,星期二例:MOVAL,7EHADDAL,5BH對標志位的影響:CF=0,AF=1OF=1,PF=0SF=1ZF=0第二十二頁,共三十八頁,編輯于2023年,星期二實例:ADCAX,BX;ADC[BX+200H],CL;2)帶進位的加法指令

ADCdest,src

;destdest+src+CF第二十三頁,共三十八頁,編輯于2023年,星期二3)加1指令

INCdest

;dest+1dest(不影響CF,常用循環(huán)指令中修改指針或循環(huán)次數(shù))第二十四頁,共三十八頁,編輯于2023年,星期二例:已知數(shù)據(jù)如圖,低位在前,高位在后.1)將其看作兩個4字節(jié)(雙倍精度字)的無符號數(shù)相加:

28164148H+84522258=?結(jié)果存放在SUM開始的存儲區(qū)。ADC指令用于多字節(jié)加法運算中

程序段如下:MOVAX,NUM1MOVBX,NUM2ADDAX,BX;低字相加MOVSUM,AX數(shù)據(jù)段16H28H58H22H48H41H52H84H被加數(shù)加數(shù)NUM1NUM2SUMMOVAX,NUM1+2MOVBX,NUM2+2ADCAX,BX;高字相加,

;包括低字的進位MOVSUM+2,AX第二十五頁,共三十八頁,編輯于2023年,星期二MOVCX,4LEASI,NUM1LEADI,NUM2LEABX,SUM字節(jié)運算:AGAIN:MOVAL,[SI]ADCAL,[DI]MOV[BX],ALCLCINCSIINCDIINCBXLOOPAGAIN第二十六頁,共三十八頁,編輯于2023年,星期二作業(yè):

2)將其看作從NUM1單元開始的連續(xù)8個字節(jié)

數(shù)據(jù)相加,和為16位數(shù),放在SUM和SUM+1單元中.第二十七頁,共三十八頁,編輯于2023年,星期二作業(yè):P1523.53.63.14第二十八頁,共三十八頁,編輯于2023年,星期二第二十九頁,共三十八頁,編輯于2023年,星期二(1)不考慮借位的減法指令SUB

SUBdest,src

;dest←(dest)-(src)2.減法指令(2)考慮借位的減法指令SBB(主要用于多字節(jié)的減法)

SBBdest,src

;dest←(dest)-(src)-(CF)(3)減1指令DEC

DECdest

;dest←(dest)-1,不影響CF實例:

SUBAL,60H;SUB[BX+20H],DXSBBAX,CX;SBBWORDPTR[SI],2080HDECCL;DECBYTEPTR[DI+2]第三十頁,共三十八頁,編輯于2023年,星期二(4)求補指令NEG:

NEGopr

;opr←0-(opr)對一個操作數(shù)取補碼相當于用0減去此操作數(shù),故利用NEG指令可得到負數(shù)的絕對值。(5)比較指令CMP

CMPdest,src

;(dest)-(src)CMP也是執(zhí)行兩個操作數(shù)相減,但結(jié)果不送目標操作數(shù),其結(jié)果只反映在標志位上。例:CMPAL,0AH;CMPDI,[BX+03]第三十一頁,共三十八頁,編輯于2023年,星期二根據(jù)標志位來判斷比較的結(jié)果②比較的是兩個有符號數(shù),須考慮兩個數(shù)是同號或異號。1)根據(jù)ZF判斷兩個數(shù)是否相等。若ZF=1,則兩數(shù)相等。2)若兩個數(shù)不相等,則分兩種情況考慮:①比較的是兩個無符號數(shù)若CF=0,則dest>src;若CF=1,則dest<src。若OF⊕SF=0,則dest>src;若OF⊕SF=1,則dest<src。第三十二頁,共三十八頁,編輯于2023年,星期二例:在內(nèi)存中從DATA單元開始兩個8位數(shù),試比較大小,將大者送到MAX單元。MOVAL,DATACMPAL,DATA+1若是帶符號數(shù)JG大于轉(zhuǎn)移JNCDONE;判斷CF分支,或用JA指令MOVAL,DATA+1DONE:MOVMAX,AL第三十三頁,共三十八頁,編輯于2023年,星期二進行乘法時:8位*8位→16位乘積,16位*16位→32位乘積隱含的操作數(shù)為AX,DX3.乘法指令(1)無符號數(shù)的乘法指令MULsrc;字節(jié)操作數(shù)(AX)(AL)×(src);字操作數(shù)(DX,AX)(AX)×(src)(2)有符號數(shù)乘法指令IMULsrc;要求兩操作數(shù)均為有符號數(shù)實例:MULBL;(AL)×(BL),乘積在AX中MULCX;(AX)×(CX),乘積在DX,AX中IMULBL;(AX)←(AL)×(BL)MULBYTEPTR[BX]第三十四頁,共三十八頁,編輯于2023年,星期二4.除法指令進行除法時:16位/8位→8位商 32位/16位→16位商隱含的操作數(shù)為AX,DX(1)無符號數(shù)除法指令DIVsrc;字節(jié)操作(AX)/(SRC),;(AL)商,(AH)余數(shù);字操作(DX,AX)/(SRC),;(AX)商,(DX)余數(shù)

(2)有符號數(shù)除法指令

IDIVsrc實例:DIVWORDPTR[BX]DIVCL第三十五頁,共三十八頁,編輯于2023年,星期二5.BCD碼運算的十進制調(diào)整指令壓縮BCD碼指令:DAA(加法調(diào)整)、DAS(減法調(diào)整)非壓縮BCD碼指令:AAA(加法調(diào)整)、AAS(減法調(diào)整)

AAM(乘法調(diào)整)、AAD(除法調(diào)整)1、這類指令都是無操作數(shù)指令,隱含的源操作數(shù)是AL/AX,目的是AL/AX。2、先執(zhí)行二進制運算指令如ADD、SUB、MUL等(除法除外),并將結(jié)果放AL(AX),然后緊接著執(zhí)行BCD碼指令。第三十六頁,共三十八頁,編輯于2

溫馨提示

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

最新文檔

評論

0/150

提交評論