版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年銀杏葉凍干粉搬遷改造項(xiàng)目可行性研究報(bào)告
- 2024-2030年螯合樹(shù)脂搬遷改造項(xiàng)目可行性研究報(bào)告
- 促銷方案模板9篇
- 安全方案合集9篇
- 2024-2030年污水治理公司技術(shù)改造及擴(kuò)產(chǎn)項(xiàng)目可行性研究報(bào)告
- 2024年用水管理協(xié)議
- 2024年度高低壓配電設(shè)備檢測(cè)檢驗(yàn)協(xié)議3篇
- 2024年版園林綠化項(xiàng)目工程居間服務(wù)合同一
- 推板加工工藝課程設(shè)計(jì)
- 2024年版?zhèn)€人車輛租賃業(yè)務(wù)協(xié)議版
- 新修訂中華人民共和國(guó)行政許可法全文解讀學(xué)習(xí)
- 法院特別委托書(shū)授權(quán)模板
- 品質(zhì)年度總結(jié)及來(lái)年計(jì)劃
- 學(xué)生體質(zhì)健康存在的主要問(wèn)題及改進(jìn)措施
- 2024年執(zhí)業(yè)藥師資格繼續(xù)教育定期考試題庫(kù)(附含答案)
- 安徽工程大學(xué)《自然語(yǔ)言處理及應(yīng)用》2022-2023學(xué)年第一學(xué)期期末試卷
- 探尋中國(guó)茶:一片樹(shù)葉的傳奇之旅學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- GB/T 44264-2024光伏組件清潔機(jī)器人通用技術(shù)條件
- 電力系統(tǒng)自動(dòng)化課程設(shè)計(jì)
- 2023年半導(dǎo)體封裝工程師年終總結(jié)及下一年展望
- 23秋國(guó)家開(kāi)放大學(xué)《EXCEL在財(cái)務(wù)中的應(yīng)用》形考作業(yè)1-4參考答案
評(píng)論
0/150
提交評(píng)論