微機(jī)原理第04章3順序分支循環(huán)結(jié)構(gòu)06ppt課件_第1頁
微機(jī)原理第04章3順序分支循環(huán)結(jié)構(gòu)06ppt課件_第2頁
微機(jī)原理第04章3順序分支循環(huán)結(jié)構(gòu)06ppt課件_第3頁
微機(jī)原理第04章3順序分支循環(huán)結(jié)構(gòu)06ppt課件_第4頁
微機(jī)原理第04章3順序分支循環(huán)結(jié)構(gòu)06ppt課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)接口技術(shù)計(jì)算機(jī)接口技術(shù)(匯編與接口)(匯編與接口)第四章第四章 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)3主要內(nèi)容:主要內(nèi)容:u匯編語言源程序的結(jié)構(gòu)匯編語言源程序的結(jié)構(gòu)u匯編語言語句格式匯編語言語句格式u偽指令偽指令u功能調(diào)用功能調(diào)用u匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)一個(gè)完整源程序結(jié)構(gòu)例一個(gè)完整源程序結(jié)構(gòu)例DSEG SEGMENT DATA1 DB 1,2, DATA2 DW 1234HDSEG ENDSESEG SEGMENT DB 20 DUP(?)(?)ESEG ENDSSSEG SEGMENT STACK STACK DB 200 DUP(?)(?)SSEG ENDS一個(gè)完整源程序結(jié)構(gòu)例

2、一個(gè)完整源程序結(jié)構(gòu)例 CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ES:ESEG,SS:SSEG START:MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX mov ah,4ch int 21hCSEG ENDS END START 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)設(shè)計(jì)步驟:設(shè)計(jì)步驟:根據(jù)實(shí)際問題抽象出數(shù)學(xué)模型根據(jù)實(shí)際問題抽象出數(shù)學(xué)模型確定算法確定算法畫程序流程圖畫程序流程圖 分配內(nèi)存工作單元和寄存器分配內(nèi)存工作單元和寄存器程序編碼程序編碼調(diào)試調(diào)試第第4 4章:章:4.3 4.3 順序程序設(shè)計(jì)順序程序設(shè)計(jì)u沒有分支、循環(huán)等轉(zhuǎn)移

3、指令的程序,會(huì)沒有分支、循環(huán)等轉(zhuǎn)移指令的程序,會(huì)按指令書寫的前后順利依次執(zhí)行,這就按指令書寫的前后順利依次執(zhí)行,這就是順序程序是順序程序u順序結(jié)構(gòu)是最基本的程序結(jié)構(gòu)順序結(jié)構(gòu)是最基本的程序結(jié)構(gòu)u完全采用順序結(jié)構(gòu)編寫的程序并不多見完全采用順序結(jié)構(gòu)編寫的程序并不多見例題例題4.4 順序程序設(shè)計(jì)實(shí)例順序程序設(shè)計(jì)實(shí)例采用查表法,實(shí)現(xiàn)一位采用查表法,實(shí)現(xiàn)一位16進(jìn)制數(shù)進(jìn)制數(shù)轉(zhuǎn)換為轉(zhuǎn)換為ASCII碼顯示碼顯示第第4 4章:例章:例4.4 4.4 數(shù)據(jù)段數(shù)據(jù)段;數(shù)據(jù)段數(shù)據(jù)段ASCIIdb 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h;對(duì)應(yīng);對(duì)應(yīng)0 9的的ASCII碼碼db 4

4、1h,42h,43h,44h,45h,46h;對(duì)應(yīng);對(duì)應(yīng)A F的的ASCII碼碼hexdb 04h,0bh;假設(shè)兩個(gè)數(shù)據(jù);假設(shè)兩個(gè)數(shù)據(jù)第第4 4章:例章:例4.4 4.4 代碼段代碼段 ;代碼段代碼段mov bx,offset ASCII ;BX指向指向ASCII碼表碼表mov al,hex ;AL取得一位取得一位16進(jìn)制數(shù)進(jìn)制數(shù) ;恰好就是;恰好就是ASCII碼表中的位移碼表中的位移and al,0fh ;只有低;只有低4位是有效的,高位是有效的,高4位清位清0Xlat ;換碼:;換碼:ALDS:BXAL第第4 4章:例章:例4.4 4.4 代碼段續(xù))代碼段續(xù))mov dl,al;入口參數(shù):

5、;入口參數(shù):DLALmov ah,2;02號(hào)號(hào)DOS功能調(diào)用功能調(diào)用int 21h;顯示一個(gè);顯示一個(gè)ASCII碼字符碼字符mov al,hex+1 ;轉(zhuǎn)換并顯示下一個(gè)數(shù)據(jù);轉(zhuǎn)換并顯示下一個(gè)數(shù)據(jù)and al,0fhxlatmov dl,almov ah,2int 21h第第4 4章:章:4.4 4.4 分支程序設(shè)計(jì)分支程序設(shè)計(jì)u分支程序根據(jù)條件是真或假?zèng)Q定執(zhí)行與否分支程序根據(jù)條件是真或假?zèng)Q定執(zhí)行與否u判斷的條件是各種指令,如判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀態(tài)標(biāo)志等執(zhí)行后形成的狀態(tài)標(biāo)志u轉(zhuǎn)移指令轉(zhuǎn)移指令Jcc和和JMP可以實(shí)現(xiàn)分支控制可以實(shí)現(xiàn)分支控制u分支結(jié)構(gòu)有分支結(jié)構(gòu)有

6、u單分支結(jié)構(gòu)單分支結(jié)構(gòu)u雙分支結(jié)構(gòu)雙分支結(jié)構(gòu)u多分支結(jié)構(gòu)多分支結(jié)構(gòu)第第4 4章:單分支結(jié)構(gòu)章:單分支結(jié)構(gòu) u條件成立跳轉(zhuǎn),否條件成立跳轉(zhuǎn),否則順序執(zhí)行分支語則順序執(zhí)行分支語句體句體u注意選擇正確的條注意選擇正確的條件轉(zhuǎn)移指令和轉(zhuǎn)移件轉(zhuǎn)移指令和轉(zhuǎn)移目標(biāo)地址目標(biāo)地址第第4 4章:計(jì)算章:計(jì)算AXAX中有符號(hào)數(shù)的絕對(duì)值中有符號(hào)數(shù)的絕對(duì)值 cmp ax,0 cmp ax,0 jge nonneg jge nonneg;條件滿足;條件滿足AX0AX0),轉(zhuǎn)移),轉(zhuǎn)移 neg ax neg ax ;條件不滿足,求補(bǔ);條件不滿足,求補(bǔ)nonneg:nonneg:mov result,axmov result

7、,ax;條件;條件滿足滿足 ;不恰當(dāng)?shù)姆种?;不恰?dāng)?shù)姆种?cmp ax,0 cmp ax,0 jl yesneg jl yesneg;條件滿足;條件滿足AXAX0 0),轉(zhuǎn)移),轉(zhuǎn)移 jmp nonneg jmp nonnegyesneg:yesneg: neg axneg ax;條件不滿足,求補(bǔ);條件不滿足,求補(bǔ)nonneg:nonneg: mov result,axmov result,ax ;條件滿足;條件滿足第第4 4章:雙分支結(jié)構(gòu)章:雙分支結(jié)構(gòu) 條件成立跳轉(zhuǎn)執(zhí)條件成立跳轉(zhuǎn)執(zhí)行第行第2個(gè)分支語句體,個(gè)分支語句體,否則順序執(zhí)行第否則順序執(zhí)行第1個(gè)個(gè)分支語句體分支語句體 注意第注意第1個(gè)分

8、支個(gè)分支體后一定要有一個(gè)體后一定要有一個(gè)JMP指令跳到第指令跳到第2個(gè)個(gè)分支體后分支體后第第4 4章:顯示章:顯示BXBX的最高位的最高位( (雙雙) )shl bx,1;BX最高位移入最高位移入CF標(biāo)志標(biāo)志jc one;CF1,即最高位為,即最高位為1,轉(zhuǎn)移轉(zhuǎn)移mov dl,30h;CF0,即最高位為,即最高位為0:DL30H0jmp two;一定要跳過另一個(gè)分支體;一定要跳過另一個(gè)分支體one:mov dl,31h;DL 31H1two:mov ah,2int 21h;顯示;顯示4 4章:顯示章:顯示BXBX的最高位雙)的最高位雙)shl bx,1;BX最高位移入最高位移入CF標(biāo)志標(biāo)志jn

9、c one;CF0,即最高位為,即最高位為0,轉(zhuǎn)移轉(zhuǎn)移mov dl,31h;CF1,即最高位為,即最高位為1:DL31H1jmp two;一定要跳過另一個(gè)分支體;一定要跳過另一個(gè)分支體one:mov dl,30h;DL 30H0two:mov ah,2int 21h;顯示;顯示4 4章:顯示章:顯示BXBX的最高位單支)的最高位單支)mov dl,0 ;DL30H0shl bx,1;BX最高位移入最高位移入CF標(biāo)志標(biāo)志jnc two;CF0,即最高位為,即最高位為0,轉(zhuǎn)移轉(zhuǎn)移mov dl,1;CF1,即最高位為,即最高位為1:DL31H1two:mov ah,2int 21h;顯示;顯示 編寫

10、分支程序,需留心分支的開始和結(jié)束編寫分支程序,需留心分支的開始和結(jié)束4 4章:顯示章:顯示BXBX的最高位無分支)的最高位無分支)mov dl,0shl bx,1;BX最高位移入最高位移入CF標(biāo)志標(biāo)志adc dl,30h;CF0,DL030h030H0;CF1,DL030h131H1two:mov ah,2int 21h;顯示;顯示分支結(jié)構(gòu)多分支分支結(jié)構(gòu)多分支) )u試編寫程序段,實(shí)現(xiàn)符號(hào)函數(shù)。試編寫程序段,實(shí)現(xiàn)符號(hào)函數(shù)。u 1 X0uY= 0 X=0u -1 X0程序程序uSTART:MOVAX,BUFFER ;(;(BUFFER)=XuORAX,AXuJzZERO ;X0,則轉(zhuǎn)則轉(zhuǎn)ZERO

11、uJNSPLUS ;X為正數(shù),則轉(zhuǎn)為正數(shù),則轉(zhuǎn)PLUSuMOV BX,0FFFFH;X為負(fù)數(shù),那么為負(fù)數(shù),那么1送送BXuJMPCONT1uZERO:MOVBX,0uJMPCONT1uPLUS:MOV BX,1uCONT1:范例范例u現(xiàn)有若干個(gè)程序段,現(xiàn)有若干個(gè)程序段,每一程序段的入口地每一程序段的入口地址分別是址分別是SUB1,SUB2,SUBn。u試編制一程序,根據(jù)試編制一程序,根據(jù)指定的參數(shù)轉(zhuǎn)入相應(yīng)指定的參數(shù)轉(zhuǎn)入相應(yīng)的程序段。(入口地的程序段。(入口地址構(gòu)造的跳轉(zhuǎn)表)址構(gòu)造的跳轉(zhuǎn)表)SUB1SUB2SUB3SUB4.SUBn例子例子uDATA SEGMENTu TABLE DW SUB1

12、,SUB2,SUBnu PARAM DB 3uDATA ENDSuSTACK SEGMENT PARA STACKuDW 10 DUP0)uSTACK ENDSuCOSEG SEGMENT PARA STACKuASSUME CS:COSEG,DS:DATA,SS:STACKuBEING: MOV AX,DATAuMOV DS,AXuMOV AL,PARAMuMOV AH,0uDEC ALuSHL AL,1uMOV BX,OFFSET TABLEuADD BX,AXuJMP BXuSUB1: .u u JMP END0Mov bx,bxJmp bxuEND0: MOV AH,4CHuINT 2

13、1HuCOSEG ENDSuEND BEING跳轉(zhuǎn)表由轉(zhuǎn)移指令組成跳轉(zhuǎn)表由轉(zhuǎn)移指令組成uDATA SEGMENTuPARAM DB 3 uDATA ENDSuSTACK SEGMENT PARA STACKuDW 20H DUP0) uSTACK ENDSuCOSEG SEGMENTuASSUME CS:COSEG,DX:DATA,SS:STACKuBEING: MOV AX,DATA uMOV DS,AXuMOV BH,0uMOV BL,PARAMuDEC BL uMOV AL,BLuSHL BL,1uADD BL,ALuADD BX,OFFSET TABLEuJMP BXuTABLE: J

14、MP SUB1u JMP SUB2uu JMP SUBnuSUB1: uuJMP END0uSUB2: uuJMP END0uSUBn: uuEND0: MOV AH,4CHuINT 21HuCOSEG ENDSuEND BEING第第4 4章:章:4.5 4.5 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)u循環(huán)程序結(jié)構(gòu)是滿足一定條件的情況下循環(huán)程序結(jié)構(gòu)是滿足一定條件的情況下,重復(fù)執(zhí)行某段程序,重復(fù)執(zhí)行某段程序u循環(huán)結(jié)構(gòu)的程序通常有循環(huán)結(jié)構(gòu)的程序通常有3個(gè)部分:個(gè)部分:u 循環(huán)初始部分循環(huán)初始部分為開始循環(huán)準(zhǔn)備必要為開始循環(huán)準(zhǔn)備必要的條件,如循環(huán)次數(shù)、循環(huán)體需要的數(shù)的條件,如循環(huán)次數(shù)、循環(huán)體需要的數(shù)值等值等u

15、循環(huán)體部分循環(huán)體部分指重復(fù)執(zhí)行的程序部分指重復(fù)執(zhí)行的程序部分,其中包括對(duì)循環(huán)條件等的修改程序段,其中包括對(duì)循環(huán)條件等的修改程序段u循環(huán)控制部分循環(huán)控制部分判斷循環(huán)條件是否成判斷循環(huán)條件是否成立,決定是否繼續(xù)循環(huán)立,決定是否繼續(xù)循環(huán)第第4 4章:循環(huán)控制章:循環(huán)控制u循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)關(guān)鍵是循環(huán)控制部循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)關(guān)鍵是循環(huán)控制部分分u循環(huán)控制可以在進(jìn)入循環(huán)之前進(jìn)行,也循環(huán)控制可以在進(jìn)入循環(huán)之前進(jìn)行,也可以在循環(huán)體后進(jìn)行,于是形成兩種結(jié)可以在循環(huán)體后進(jìn)行,于是形成兩種結(jié)構(gòu):構(gòu):u“先判斷、后循環(huán)先判斷、后循環(huán)構(gòu)造構(gòu)造u“先循環(huán)、后判斷先循環(huán)、后判斷構(gòu)造構(gòu)造u循環(huán)結(jié)束的控制可以用循環(huán)次數(shù),還可

16、循環(huán)結(jié)束的控制可以用循環(huán)次數(shù),還可以用特定條件等,于是又有:以用特定條件等,于是又有:u計(jì)數(shù)控制循環(huán)計(jì)數(shù)控制循環(huán)u條件控制循環(huán)條件控制循環(huán)第第4 4章:先循環(huán)后判斷的循環(huán)結(jié)構(gòu)章:先循環(huán)后判斷的循環(huán)結(jié)構(gòu) 終了終了 初始化初始化 循環(huán)的初始狀態(tài)循環(huán)的初始狀態(tài) 循環(huán)體循環(huán)體 循環(huán)的工作部分循環(huán)的工作部分及修改部分及修改部分 計(jì)數(shù)控制循環(huán)計(jì)數(shù)控制循環(huán)條件控制循環(huán)條件控制循環(huán)修改部分修改部分控制條件控制條件Y YN N第第4 4章:章:4.5.1 4.5.1 計(jì)數(shù)控制循環(huán)計(jì)數(shù)控制循環(huán) u計(jì)數(shù)控制循環(huán)利用循環(huán)次數(shù)作計(jì)數(shù)控制循環(huán)利用循環(huán)次數(shù)作為控制條件為控制條件u易于采用循環(huán)指令易于采用循環(huán)指令LOOP和和

17、JCXZ實(shí)現(xiàn)實(shí)現(xiàn)u初始化:將循環(huán)次數(shù)或最大循初始化:將循環(huán)次數(shù)或最大循環(huán)次數(shù)置入環(huán)次數(shù)置入CXu循環(huán)體循環(huán)體u循環(huán)控制:用循環(huán)控制:用LOOP指令對(duì)指令對(duì)CX減減1、并判斷是否為、并判斷是否為0第第4 4章:用二進(jìn)制顯示章:用二進(jìn)制顯示BLBL內(nèi)容內(nèi)容mov cx,8 ;CX8循環(huán)次數(shù))循環(huán)次數(shù))again:shl bl,1;左移進(jìn);左移進(jìn)CF,從高位開始顯示從高位開始顯示mov dl,0 ;MOV指令不改變指令不改變CFadc dl,30h;DL030HCF;CF若是若是0,則,則DL 0 ;CF若是若是1,則,則DL 1 mov ah,2int 21h;顯示;顯示loop again;CX

18、減減1,如果,如果CX未減至未減至0,則循環(huán),則循環(huán)計(jì)數(shù)控制循環(huán)計(jì)數(shù)控制循環(huán)先循環(huán)后判斷先循環(huán)后判斷第第4 4章:章:4.5.2 4.5.2 條件控制循環(huán)條件控制循環(huán)u條件控制循環(huán)需要利用特定條件條件控制循環(huán)需要利用特定條件判斷循環(huán)是否結(jié)束判斷循環(huán)是否結(jié)束u條件控制循環(huán)用條件轉(zhuǎn)移指令判條件控制循環(huán)用條件轉(zhuǎn)移指令判斷循環(huán)條件斷循環(huán)條件u轉(zhuǎn)移指令可以指定目的標(biāo)號(hào)來改轉(zhuǎn)移指令可以指定目的標(biāo)號(hào)來改變程序的運(yùn)行順序,如果目的標(biāo)變程序的運(yùn)行順序,如果目的標(biāo)號(hào)指向一個(gè)重復(fù)執(zhí)行的語句體的號(hào)指向一個(gè)重復(fù)執(zhí)行的語句體的開始或結(jié)束,便構(gòu)成了循環(huán)控制開始或結(jié)束,便構(gòu)成了循環(huán)控制結(jié)構(gòu)結(jié)構(gòu)第第4 4章:顯示以章:顯示以0 0結(jié)尾的字符串結(jié)尾的字符串;數(shù)據(jù)段;數(shù)據(jù)段string db Let us have a try !,0;代碼段;代碼段mov bx,offset stringagain: mov dl,bxcmp dl,0jz done;為;為0結(jié)束結(jié)束mov ah,2;不為;不為0,顯示,顯示int 21hinc bx;指向下一個(gè)字符;指向下一個(gè)字符jmp againdone:條件控制循環(huán)條件控制循環(huán)先判斷后循環(huán)先判斷后循環(huán)第第4 4章:章: 記

溫馨提示

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

評(píng)論

0/150

提交評(píng)論