匯編語(yǔ)言系列課件第一章(考試重點(diǎn)在里面)第8講 6.1-6.4_第1頁(yè)
匯編語(yǔ)言系列課件第一章(考試重點(diǎn)在里面)第8講 6.1-6.4_第2頁(yè)
匯編語(yǔ)言系列課件第一章(考試重點(diǎn)在里面)第8講 6.1-6.4_第3頁(yè)
匯編語(yǔ)言系列課件第一章(考試重點(diǎn)在里面)第8講 6.1-6.4_第4頁(yè)
匯編語(yǔ)言系列課件第一章(考試重點(diǎn)在里面)第8講 6.1-6.4_第5頁(yè)
已閱讀5頁(yè),還剩34頁(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)介

第六章分支結(jié)構(gòu)程序6.1分支結(jié)構(gòu)程序的引出6.2轉(zhuǎn)移指令6.3分支結(jié)構(gòu)程序設(shè)計(jì)6.4多分支結(jié)構(gòu)程序設(shè)計(jì)16.1分支結(jié)構(gòu)程序的引出用計(jì)算機(jī)處理問(wèn)題過(guò)程中,總是要求計(jì)算機(jī)能做出各種邏輯判斷,并根據(jù)判斷的結(jié)果,做相應(yīng)的處理。例如,火車(chē)站用計(jì)算機(jī)計(jì)算托運(yùn)行李的托運(yùn)費(fèi),當(dāng)旅客行李重量小于或等于20kg時(shí),收費(fèi)0.2元/kg,當(dāng)行李重量超過(guò)20kg時(shí),20kg以內(nèi)部分0.2元/kg,超出部分,收費(fèi)0.3元/kg。這個(gè)處理過(guò)程,可歸納為下面數(shù)學(xué)表達(dá)式: 0.2w(w≤20kg) 0.2*20+0.3*(w-20)(w>20kg)26.2轉(zhuǎn)移指令6.2.1無(wú)條件轉(zhuǎn)移指令6.2.2條件轉(zhuǎn)移指令36.2.1無(wú)條件轉(zhuǎn)移指令JMP(Jump)指令匯編格式:JMPtarg操作:

段內(nèi)轉(zhuǎn)移:IP←目標(biāo)的偏移地址段間轉(zhuǎn)移:IP←目標(biāo)的偏移地址

CS←目標(biāo)所處代碼段的基址受影響的狀態(tài)標(biāo)志位:無(wú)說(shuō)明:無(wú)條件轉(zhuǎn)移指令可以轉(zhuǎn)到內(nèi)存中存放的任何程序段。指令中的targ可以是直接標(biāo)號(hào)、寄存器間接或存儲(chǔ)器間接尋址形式。4

段內(nèi)直接轉(zhuǎn)移方式段內(nèi)間接轉(zhuǎn)移方式段間直接轉(zhuǎn)移方式段間間接轉(zhuǎn)移方式目標(biāo)地址尋址方式5目標(biāo)IP=當(dāng)前IP+相對(duì)位移量(8bit/16bit)相對(duì)位移量是一個(gè)8位或者16位的帶符號(hào)數(shù),在機(jī)器指令中直接給出,匯編指令中的目標(biāo)地址以標(biāo)號(hào)的形式給出。

JMPNEARPTR目標(biāo)地址目標(biāo)地址在當(dāng)前代碼段,且在-32768~32767之間

JMPSHORT目標(biāo)地址

目標(biāo)地址在當(dāng)前代碼段,且在-128~127范圍內(nèi)段內(nèi)直接轉(zhuǎn)移方式6段內(nèi)直接轉(zhuǎn)移方式71)段內(nèi)寄存器間接轉(zhuǎn)移

JMPAX2)段內(nèi)存儲(chǔ)器間接轉(zhuǎn)移

JMP[SI](默認(rèn)是WORD類(lèi)型)

JMPWORDPTR[BX+DI+1000H]段內(nèi)間接轉(zhuǎn)移方式8匯編后的機(jī)器指令中直接給出目標(biāo)地址的CS和IP,匯編指令以標(biāo)號(hào)的形式給出。

JMPFARPTR目標(biāo)地址段間直接轉(zhuǎn)移方式CSEGSEGMENTSTART: JMP FARPTRL1 : :CSEG ENDSCSEG1SEGMENTL1::NOP : :CSEG1 ENDS9

IP和CS的內(nèi)容用內(nèi)存中2個(gè)連續(xù)的字來(lái)替換,可以使用任意一種存儲(chǔ)器尋址方式。

JMPDWORDPTR[BX][SI]例

(BX)=1256H,(SI)=528EH,(DS)=2000H,(264E4H)=1234H,(264E6H)=5678H執(zhí)行指令后IP=?CS=?段間間接轉(zhuǎn)移方式106.2.2條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令是根據(jù)執(zhí)行該指令前CPU中狀態(tài)標(biāo)志位的狀態(tài)決定程序執(zhí)行的流程。條件轉(zhuǎn)移指令是以對(duì)不同的狀態(tài)標(biāo)志位的測(cè)試為條件。如果條件成立,則程序轉(zhuǎn)移到指令中所給出的轉(zhuǎn)移目標(biāo)執(zhí)行。條件不成立,程序?qū)㈨樞驁?zhí)行。所有的條件轉(zhuǎn)移指令都是相對(duì)轉(zhuǎn)移形式的短(short)轉(zhuǎn)移指令,并且是在從下條指令算起的--128~127字節(jié)的地址范圍內(nèi)轉(zhuǎn)移。11條件轉(zhuǎn)移指令在比較完兩個(gè)數(shù)的大小后根據(jù)比較的結(jié)果而決定是否轉(zhuǎn)移,對(duì)于某兩個(gè)二進(jìn)制數(shù),把它們看成有符號(hào)數(shù)和無(wú)符號(hào)數(shù),比較后會(huì)有不同的結(jié)果,實(shí)際是測(cè)試不同的標(biāo)志位。

8086的條件轉(zhuǎn)移指令中,大部分指令可以用兩種不同的助記符來(lái)表示。單條件轉(zhuǎn)移指令無(wú)符號(hào)數(shù)的條件轉(zhuǎn)移指令帶符號(hào)數(shù)的條件轉(zhuǎn)移指令12單條件轉(zhuǎn)移指令13有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的條件轉(zhuǎn)移指令根據(jù)兩數(shù)(A,B)的大小關(guān)系轉(zhuǎn)移的指令(1)使用該指令前用過(guò)比較(CMPA,B)、減法(SUBA,B、SBBA,B)指令。(2)比較轉(zhuǎn)移時(shí)分無(wú)符號(hào)數(shù)和帶符號(hào)數(shù)。例:A=11111111BB=00000001B(3)A與B的關(guān)系共有6種:

A<B A>B A≤BA≥B A=B A≠B14Below

Above

Less

Great

EqualJNAEJNAJNBEJNBJNGEJNGJNLEJNL

無(wú)符號(hào)數(shù)

帶符號(hào)數(shù)

A<B

JB

CF=1

JL

(SF⊕OF)=1

A≤B

JBE

CF=1||ZF=1

JLE

(SF⊕OF)||ZF=1

A>B

JA

CF=0&ZF=0

JG

(SF⊕OF)||ZF=0

A≥B

JAE

CF=0

JGE

(SF⊕OF)=0

A=B

JE(ZF=1)

A≠B

JNE(ZF=0)

15條件轉(zhuǎn)移指令比較MOVAL,0FFHCMPAL,1JBENEXTMOVAL,1……NEXT:MOVAL,0FFHCMPAL,1JLENEXTMOVAL,1……NEXT:思考:兩段程序執(zhí)行完后AL的值分別是什么?16AX,BX,CX分別存放著三個(gè)互不相等的無(wú)符號(hào)數(shù),試編寫(xiě)程序段比較它們的大小,將最大的數(shù)放到AX中。條件轉(zhuǎn)移指令舉例117 CMPAX,BX

JAENEXT XCHGAX,BXNEXT: CMPAX,CX

JAENEXT1 XCHGAX,CXNEXT1:……如果存放的是有符號(hào)數(shù)呢?18如果存放的是有符號(hào)數(shù),程序應(yīng)該為: CMPAX,BX

JGENEXT XCHGAX,BXNEXT: CMPAX,CX

JGENEXT1 XCHGAX,CXNEXT1:……196.3分支結(jié)構(gòu)程序設(shè)計(jì)例6.1設(shè)X為單字節(jié)帶符號(hào)整數(shù),且存于ARGX單元,計(jì)算結(jié)果Y存入RLT單元。X+10(0<X≤8)5X-2(8<X<15)|X|(其它){Y=20X+10(0<X≤8)5X-2(8<X<15)X(X=0,X≥15)-X(X<0){Y=X+10(0<X≤8)5X-2(8<X<15)X(X≥15)-X(X≤0){Y=21221:;*****EXAM6.1*****2:SSEG SEGMENT STACK3:STK DB 50DUP(0)4:SSEG ENDS5:DSEG SEGMENT6:ARGX DB -57:RLT DB ?8:DSEG ENDS9:CSEG SEGMENT10: ASSUME CS:CSEG,DS:DSEG11: ASSUME SS:SSEG12:BEGIN: MOV AX,DSEG13: MOV DS,AX14: MOV AX,SSEG15: MOV SS,AX16: MOV SP,SIZESTK2317: MOV AL,ARGX ;取X值18: CMP AL,0 ;X≤0?19: JNG ABSL ;是,轉(zhuǎn)20: CMP AL,8 ;X≤8?21: JLE ONE ;是,轉(zhuǎn)22: CMP AL,15 ;X≥15?23: JGE MOVE ;是,轉(zhuǎn)24: SHL AL,1 ;計(jì)算5X-225: SHL AL,126: ADD AL,ARGX27: SUB AL,228: JMP MOVE29:ONE:ADD AL,10 ;X≤8,計(jì)算X+1030: JMP MOVE31:ABSL:NEG AL ;取補(bǔ)32:MOVE:MOV RLT,AL ;保存結(jié)果33: MOV AH,4CH34: INT 21H35:CSEG ENDS36: END BEGIN24X+10(0<X≤8)5X-2(8<X<15)X(X=0,X≥15)-X(X<0){Y=2517: MOV AL,ARGX ;取X值18: AND AL,AL ;置標(biāo)志位19: JS ABSL ;X<0轉(zhuǎn)20: JZ MOVE ;X=0轉(zhuǎn)21: CMP AL,8 ;X≤8?22: JLE ONE ;是,轉(zhuǎn)23: CMP AL,15 ;X≥15?24: JGE MOVE ;是,轉(zhuǎn)25: SHL AL,1 ;計(jì)算5X-226: SHL AL,127: ADD AL,ARGX28: SUB AL,229: JMP MOVE30:ONE:ADD AL,10 ;X≤8,計(jì)算X+1031: JMP MOVE32:ABSL:NEG AL ;取補(bǔ)33:MOVE:MOV RLT,AL ;保存結(jié)果34: MOV AH,4CH35: INT 21H36:CSEG ENDS37: END BEGIN26例6.2設(shè)內(nèi)存中有三個(gè)互不相等的無(wú)符號(hào)字?jǐn)?shù)據(jù),分別存放在ARG開(kāi)始的字單元,編制程序?qū)⑵渲凶畲笾荡嫒隡AX單元。ABC大大271:;*****EXAM6.2*****2:SSEG SEGMENT STACK3:STK DB 20DUP(0)4:SSEG ENDS5:DSEG SEGMENT6:ARG DW 7138H,84A6H,29EH7:MAX DW ?8:DSEG ENDS9:CSEG SEGMENT10: ASSUME CS:CSEG,DS:DSEG11: ASSUME SS:SSEG12:FMAX:MOV AX,DSEG13: MOV DS,AX14: MOV AX,SSEG15: MOV SS,AX16: MOV SP,SIZESTK2817: LEA SI,ARG ;取數(shù)據(jù)首址18: MOV AX,[SI] ;取第1個(gè)數(shù)19: MOV BX,[SI+2];取第2個(gè)數(shù)20: CMP AX,BX ;兩數(shù)比較21: JAE FMAX1 ;AX中的數(shù)大22: MOVAX,BX ;大數(shù)送AX23:FMAX1:CMPAX,[SI+4];大數(shù)與第3個(gè)數(shù)比較24: JAE FMAX2 ;AX中的數(shù)大25: MOV AX,[SI+4] ;第3個(gè)數(shù)大大值26:FMAX2:MOVMAX,AX ;保存最大值27: MOV AH,4CH28: INT 21H29:CSEGENDS30:ENDFMAX296.4多分支結(jié)構(gòu)程序設(shè)計(jì)

利用計(jì)算機(jī)解決實(shí)際問(wèn)題時(shí),常遇到這樣的情況:處理某個(gè)問(wèn)題時(shí)有多種選擇方案,根據(jù)實(shí)際情況選擇其中一種。每種處理方案由一段程序完成,每一段程序可以看作一個(gè)分支,程序在執(zhí)行過(guò)程中根據(jù)當(dāng)前的狀況,決定下一步應(yīng)執(zhí)行哪一個(gè)分支,這就構(gòu)成了多個(gè)分支的程序。如用計(jì)算機(jī)控制一臺(tái)電動(dòng)機(jī),該電動(dòng)機(jī)有正轉(zhuǎn)、逆轉(zhuǎn),在每種轉(zhuǎn)動(dòng)方式下又有幾種轉(zhuǎn)速的檔次控制,這些控制可以通過(guò)鍵盤(pán)0~9的數(shù)字鍵進(jìn)行選擇,進(jìn)入某種檔次選擇后,執(zhí)行相應(yīng)分支程序,使電機(jī)以最佳方式由一個(gè)狀態(tài)進(jìn)入所選狀態(tài)。假設(shè)程序的十個(gè)分支的起始地址分別為ADR0,ADR1,...ADR9。301:;*****EXAM6.5.1*****2:SSEG SEGMENTSTACK3:STK DB20DUP(0)4:SSEG ENDS5:DSEG SEGMENT6:DSEG ENDS7:CSEG SEGMENT8: ASSUME CS:CSEG,DS:DSEG9: ASSUME SS:SSEG10:MOTOR:MOV AX,DSEG11: MOV DS,AX12: MOV AX,SSEG13: MOV SS,AX14: MOV SP,SIZESTK15: MOV AH,0116: INT 21H17: CMP AL,’0’18: JZ ADR019: CMP AL,’1’20: JZ ADR121: :22: CMP AL,’8’23: JZ ADR824:ADR9: :25: ::ADR0: :: ::ADR1 :: ::ADR8 ::1.樹(shù)形結(jié)構(gòu)法31

所謂地址常數(shù)表法,就是把多個(gè)分支中的每個(gè)分支程序段的起始地址順序存放在一個(gè)存儲(chǔ)區(qū)中,這個(gè)存儲(chǔ)區(qū)稱(chēng)地址表存儲(chǔ)區(qū)。根據(jù)鍵值,將相應(yīng)處理程序的入口地址取入某寄存器,然后用間接轉(zhuǎn)移指令實(shí)現(xiàn)轉(zhuǎn)移。2.地址常數(shù)表法321:;*****EXAM6.5.2*****2:SSEG SEGMENT STACK3:STK DB 20 DUP(0)4:SSEG ENDS5:DSEG SEGMENT6:ADRTAB DW OFFSETADR0,OFFSETADR17: DW OFFSETADR2,..,OFFSETADR98: DSEG ENDS9:CSEG SEGMENT10: ASSUME CS:CSEG,DS:DSEG11: ASSUME SS:SSEG12:BRANCH: MOV AX,DSEG13: MOV DS,AX14: MOV AX,SSEG15: MOV SS,AX16: MOV SP,LENGTHSTK3317: LEA DI,ADRTAB;取地址表首址18: MOV AH,01;讀鍵盤(pán)19: INT 21H20: SUB AL,’0’;轉(zhuǎn)換為數(shù)字21: XOR AH,AH;擴(kuò)展為字?jǐn)?shù)據(jù)22: SHL AX,1;乘223: ADD DI,AX;形成相應(yīng)地址24: MOV AX,[DI];取程序入口25: JMP AX;轉(zhuǎn)去執(zhí)行26:ADR0: :27: ::ADR1: :: ::ADR9: :: ::CSEG ENDS: END BRANCHMOVBX,AXJMPADRTAB[BX]MOVBX,AXJMP[DI+BX]34設(shè)DATA1開(kāi)始的內(nèi)存單元中,存放著6個(gè)無(wú)符號(hào)字節(jié)數(shù)據(jù),要求找出其中最小的一個(gè)數(shù),并存到MIN單元。條件轉(zhuǎn)移指令舉例235CSEG SEGMENT ASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEG MOVDS,AX

MOVAX,4C00H INT 21HCSEGENDS END START DSEG SEGMENTDATA1 DB 0B5H,2,45Q,20H,30H,0D3HCOUNT E

溫馨提示

  • 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)論