大綜合課件微機(jī)原理基礎(chǔ)_第1頁(yè)
大綜合課件微機(jī)原理基礎(chǔ)_第2頁(yè)
大綜合課件微機(jī)原理基礎(chǔ)_第3頁(yè)
大綜合課件微機(jī)原理基礎(chǔ)_第4頁(yè)
大綜合課件微機(jī)原理基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章程序設(shè)計(jì)3.1乘除法指令3.2BCD數(shù)調(diào)整指令3.3順序程序設(shè)計(jì)3.4分支程序設(shè)計(jì)3.5循環(huán)程序設(shè)計(jì)進(jìn)行乘法時(shí):8位*8位→16位乘積 16位*16位→32位乘積(1)無(wú)符號(hào)數(shù)的乘法指令MUL(MEM/REG)格式:MULsrc操作:字節(jié)操作數(shù)(AX)

(AL)×(src)

字操作數(shù)(DX,AX)

(AX)×(src)指令例子:

MULBL;(AL)×(BL),乘積在AX中

MULCX;(AX)×(CX),乘積在DX,AX中

MULBYTEPTR[BX]3.1乘除法指令

1.乘法指令格式與MUL指令類似,只是要求兩操作數(shù)均為有符號(hào)數(shù)。指令例子:

IMULBL;(AX)←(AL)×(BL)IMULWORDPTR[SI];(DX,AX)←(AX)×([SI+1][SI])

(2)有符號(hào)數(shù)乘法指令I(lǐng)MUL注意:MUL/IMUL指令中

●AL(AX)為隱含的乘數(shù)寄存器;

AX(DX,AX)為隱含的乘積寄存器;

SRC不能為立即數(shù);

●除CF和OF外,對(duì)其它標(biāo)志位無(wú)定義。格式:DIVsrc操作:字節(jié)操作(AL)

(AX)/(SRC)的商

(AH)

(AX)/(SRC)的余數(shù)字操作(AX)

(DX,AX)/(SRC)的商

(DX)

(DX,AX)/(SRC)的余數(shù)指令例子:

DIVCLDIVWORDPTR[BX]注:若除數(shù)為零或AL中商大于FFH,(或AX中商大于FFFFH),則CPU產(chǎn)生一個(gè)類型0的內(nèi)部中斷(除法錯(cuò)誤中斷)。(1)無(wú)符號(hào)數(shù)除法指令DIV(2)有符號(hào)數(shù)除法指令I(lǐng)DIV格式:IDIVsrc操作與DIV類似。商及余數(shù)均為有符號(hào)數(shù),且余數(shù)符號(hào)總是與被除數(shù)符號(hào)相同。注意:

對(duì)于DIV/IDIV指令A(yù)X(DX,AX)為隱含的被除數(shù)寄存器。

AL(AX)為隱含的商寄存器。

AH(DX)為隱含的余數(shù)寄存器。

src不能為立即數(shù)。

對(duì)所有條件標(biāo)志位均無(wú)定義。除法運(yùn)算要求被除數(shù)字長(zhǎng)是除數(shù)字長(zhǎng)的兩倍,若不滿足則需對(duì)被除數(shù)進(jìn)行擴(kuò)展,否則產(chǎn)生錯(cuò)誤。對(duì)于無(wú)符號(hào)數(shù)除法擴(kuò)展,只需將AH或DX清零即可。對(duì)有符號(hào)數(shù)而言,則是符號(hào)位的擴(kuò)展??墒褂孟旅娼榻B的符號(hào)擴(kuò)展指令CBW和CWD關(guān)于除法操作中的字長(zhǎng)擴(kuò)展問(wèn)題3.擴(kuò)展指令格式:CBW;把AL的符號(hào)位復(fù)制到AHCWD;把AX的符號(hào)位復(fù)制到DX用途:用于有符號(hào)數(shù)的除法。例如:(AL)=A7H,則執(zhí)行CBW后,AH的內(nèi)容為FFH。3.2BCD數(shù)調(diào)整指令專用于對(duì)BCD碼運(yùn)算的結(jié)果進(jìn)行調(diào)整包括:DAA、AAA、DAS、AAS、AAM、AAD均為隱含尋址,隱含的操作數(shù)為AL和AH為何要對(duì)BCD碼的運(yùn)算結(jié)果進(jìn)行調(diào)整?

BCD碼本質(zhì)上是十進(jìn)制數(shù),即應(yīng)遵循逢十進(jìn)一的規(guī)則。而計(jì)算機(jī)是按二進(jìn)制(十六進(jìn)制)進(jìn)行運(yùn)算,并未按十進(jìn)制規(guī)則進(jìn)行運(yùn)算。3.3順序程序設(shè)計(jì)3.4分支程序設(shè)計(jì)3.5循環(huán)程序設(shè)計(jì)無(wú)條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令分支程序設(shè)計(jì)舉例轉(zhuǎn)移指令的實(shí)質(zhì):改變IP(或CS)的內(nèi)容。

所有轉(zhuǎn)移指令不會(huì)影響標(biāo)志位。

分為無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移兩種。(1)無(wú)條件轉(zhuǎn)移指令-JMP本指令無(wú)條件轉(zhuǎn)移到指定的目標(biāo)地址,以執(zhí)行從該地址開(kāi)始的程序段。條件轉(zhuǎn)移指令可實(shí)現(xiàn)程序的條件分支。條件轉(zhuǎn)移指令根據(jù)標(biāo)志位的狀態(tài)來(lái)決定是否進(jìn)行分支轉(zhuǎn)移。格式:

JXXlabel ;xx為條件名稱縮寫(xiě)指令的轉(zhuǎn)移范圍為-128~+127字節(jié)。(2)條件轉(zhuǎn)移指令-JXX①根據(jù)單個(gè)標(biāo)志位設(shè)置的條件轉(zhuǎn)移指令JB/JC;低于,或CF=1,則轉(zhuǎn)移JNB/JNC/JAE;高于或等于,或CF=0,則轉(zhuǎn)移JP/JPE;奇偶標(biāo)志PF=1(偶),則轉(zhuǎn)移JNP/JPO;奇偶標(biāo)志PF=0(奇),則轉(zhuǎn)移JZ/JE;結(jié)果為零(ZF=1),則轉(zhuǎn)移JNZ/JNE;結(jié)果不為零(ZF=0),則轉(zhuǎn)移JS;SF=1,則轉(zhuǎn)移JNS;SF=0,則轉(zhuǎn)移JO

;OF=1,則轉(zhuǎn)移JNO

;OF=0,則轉(zhuǎn)移這類指令主要用來(lái)判斷兩個(gè)數(shù)的大小。判斷無(wú)符號(hào)數(shù)的大小JA高于則轉(zhuǎn)移條件為:CF=0∧ZF=0,即A>BJNA/JBE低于或等于則轉(zhuǎn)移條件為:CF=1∨ZF=1,即A≤B②根據(jù)組合條件設(shè)置的條件轉(zhuǎn)移指令JG;大于則轉(zhuǎn)移(A>B)條件為:(SF⊕OF=0)∧ZF=0JGE;大于或等于則轉(zhuǎn)移(A≥B)條件為:(SF⊕OF=0)∨ZF=1JLE;小于或等于則轉(zhuǎn)移(A≤B)條件為:(SF⊕OF=1)∨ZF=1JL;小于則轉(zhuǎn)移(A<B)條件為:(SF⊕OF=1)∧ZF=0判斷有符號(hào)數(shù)的大小循環(huán)控制指令用在循環(huán)程序中以確定是否要繼續(xù)循環(huán)。循環(huán)次數(shù)通常置于CX中。轉(zhuǎn)移的目標(biāo)應(yīng)在距離本指令-128~+127的范圍之內(nèi)。循環(huán)控制指令不影響標(biāo)志位。3.5循環(huán)程序設(shè)計(jì)(1)LOOP格式:LOOPlabel操作:(CX)-1→CX;若(CX)≠0,則轉(zhuǎn)至label處執(zhí)行;否則退出循環(huán),執(zhí)行LOOP后面的指令。LOOP指令與下面的指令段等價(jià):

DECCX JNZlabel(2)LOOPZ(LOOPE)格式:LOOPZ

label操作:(CX)-1→CX;

若(CX)≠0∧ZF=1,則轉(zhuǎn)至label處執(zhí)行;否則退出循環(huán),執(zhí)行LOOP后面的指令。(3)LOOPNZ(LOOPNE)格式:LOOPNZlabel操作:(CX)-1→CX;若(CX)≠0∧ZF=0,則轉(zhuǎn)至label處執(zhí)行;否則退出循環(huán),執(zhí)行LOOP后面的指令。(4)根據(jù)CX內(nèi)容來(lái)決定是否轉(zhuǎn)移的轉(zhuǎn)移指令

JCXZlabel

若(CX)=0,則轉(zhuǎn)移到label處開(kāi)始執(zhí)行。舉例:例1:給1A000H開(kāi)始的256個(gè)內(nèi)存單元均減去1,若發(fā)現(xiàn)某個(gè)單元減為0則立即退出循環(huán),其后的單元不再減1。

MOVAX,1A00HMOVDS,AXMOVDI,0MOVCX,256GOON:DECBYTEPTR[DI]INCDICMPBYTEPTR[DI-1],0LOOPNZ

GOONHLT例2:在8000H開(kāi)始的長(zhǎng)度為1000字節(jié)的字符串中查找’S’,若找到,把其偏移地址記錄在ADDR中,否則ADDR單元置為0FFFFH。MOVDI,8000HMOVCX,1000MOVAL,’S’MOVADDR,0FFFFHGOON:SCASBLOOPNZ

GOONJNZDONEDECDIMOVADDR,DIDONE:HLT3.6串操作指令串操作指令就是用一條指令實(shí)現(xiàn)對(duì)一串字符或數(shù)據(jù)的操作。串操作指令的特點(diǎn):

1.可以對(duì)字節(jié)串或者字串進(jìn)行操作;

2.源串用DS段SI作間接尋址,目的串用ES段DI作間接尋址。每次串操作后,SI和DI會(huì)自動(dòng)修改,修改的方向與DF有關(guān)。

3.串操作時(shí),地址的修改與方向標(biāo)志DF有關(guān)。

DF=0,增址

W=1,字(SI+2

SI,DI+2

DI)

W=0,字節(jié)(SI+1

SI,DI+1

DI)

DF=1,減址

W=1,字(SI-2

SI,DI-2

DI)

W=0,字節(jié)(SI-1

SI,DI-1

DI) 4.可以加重復(fù)前綴:(相當(dāng)于一個(gè)循環(huán)程序的運(yùn)行)

修改CX并進(jìn)行判斷

REPCX到0不再重復(fù);

REPE/REPZZF=1或CX=0不再重復(fù);

REPNE/REPNZZF=0或CX=0不再重復(fù)。串操作指令有5類:1.字符串傳送MOVSB/MOVSW2.字符串比較CMPSB/CMPSW3.字符串檢索SCASB/SCASW4.取字符串LODSB/LODSW5.存字符串STOSB/STOSW串操作指令是唯一的一組能直接處理源和目的操作數(shù)都在存儲(chǔ)器中的指令3.6子程序設(shè)計(jì)子程序的概念子程序的調(diào)用和返回指令子程序及其調(diào)用程序設(shè)計(jì)過(guò)程的定義及功能調(diào)用3.6.2.子程序/過(guò)程調(diào)用和返回指令過(guò)程(子程序)一段具有特定功能的,供其它程序調(diào)用的公用程序。特點(diǎn)調(diào)用子程序時(shí),IP(CS)的內(nèi)容被壓入堆棧棧頂。從子程序返回時(shí),棧頂?shù)膬?nèi)容又被彈出到IP(CS)。子程序執(zhí)行結(jié)束后一般均要返回調(diào)用程序。一次定義,多次調(diào)用;可帶參數(shù)調(diào)用,以完成不同的功能。優(yōu)點(diǎn)程序代碼短,結(jié)構(gòu)清晰,便于編程、調(diào)試、修改和閱讀。兩條相關(guān)指令:子程序調(diào)用指令CALL子程序返回指令RET段的定義段的定義通過(guò)SEGMENT和ENDS偽指令進(jìn)行。定義一個(gè)段的格式是:段名

SEGMENT[定位方式][組合方式]['類別名']

段名ENDS

其中,SEGMENT和ENDS必須成對(duì)出現(xiàn),它們的前面需有相同的名字,該名字為段名。

DATASEGMENTBUFDB'ABCDEF'COUNTEQU$-BUFDATAENDS

常量COUNT的值就是變量BUF數(shù)據(jù)區(qū)所占的存儲(chǔ)單元數(shù)16。

$可以用作指令的操作數(shù),此時(shí)$的值就是該指令的偏移地址。

$也可以出現(xiàn)在表達(dá)式中。如:$的值可以用偽指令ORG來(lái)設(shè)置。其格式是:

ORG數(shù)值表達(dá)式功能是將$設(shè)置成數(shù)值表達(dá)式的值(0000H~FFFFH之間的整數(shù))。e.gORG$+8

調(diào)用方法設(shè)置入口參數(shù)在AH設(shè)置功能號(hào)m執(zhí)行中斷指令I(lǐng)NTN分析、應(yīng)用出口參數(shù)

1.1號(hào)功能調(diào)用

MOVAH,1INT21H

執(zhí)行該調(diào)用時(shí)將等待鍵入,一旦有鍵按下就將該按鍵字符的ASCII碼讀入AL,并同時(shí)顯示該字符。

2.2號(hào)功能調(diào)用

MOVDL,待顯示字符的ASCII碼

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論