第5章循環(huán)與分之程序設(shè)計(jì)_第1頁
第5章循環(huán)與分之程序設(shè)計(jì)_第2頁
第5章循環(huán)與分之程序設(shè)計(jì)_第3頁
第5章循環(huán)與分之程序設(shè)計(jì)_第4頁
第5章循環(huán)與分之程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5第五章第五章教學(xué)重點(diǎn)教學(xué)重點(diǎn)1. 掌握掌握、及其匯編語言程序設(shè)計(jì)及其匯編語言程序設(shè)計(jì)2. 問題:問題:(09、AZ、az); 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 (3 3)分支結(jié)構(gòu))分支結(jié)構(gòu) (4 4) 子程序結(jié)構(gòu)子程序結(jié)構(gòu) 程序結(jié)構(gòu)程序結(jié)構(gòu)(5)復(fù)合結(jié)構(gòu):多種程序結(jié)構(gòu)的組合)復(fù)合結(jié)構(gòu):多種程序結(jié)構(gòu)的組合 (1 1) 順序結(jié)構(gòu)順序結(jié)構(gòu) (2 2) 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 寧夏師范學(xué)院

2、寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 編制匯編語言程序的步驟編制匯編語言程序的步驟(1) 分析題意,確定算法分析題意,確定算法(2) 根據(jù)算法畫出程序框圖根據(jù)算法畫出程序框圖(3) 根據(jù)框圖編寫程序根據(jù)框圖編寫程序(4) 上機(jī)調(diào)試程序上機(jī)調(diào)試程序 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch55.0 順序程序設(shè)計(jì)順序程序設(shè)計(jì)順序程序完全按指令書寫的前后順序程序完全按指令書寫的前后順序執(zhí)行每一條指令,是最基本、順序執(zhí)行每一條指令,是最基本、

3、最常見的程序結(jié)構(gòu)最常見的程序結(jié)構(gòu)一般純粹的順序結(jié)構(gòu)的程序設(shè)計(jì)一般純粹的順序結(jié)構(gòu)的程序設(shè)計(jì)較少。較少。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5data segmentdata segmentX Xdw 5dw 5Y Ydw 6dw 6Z Zdw 7dw 7W Wdw ?dw ?data endsdata endscode segmentcode segmentmain proc farmain proc far assume cs:code,ds:dataassume cs:code,ds:datastart

4、:start: push dspush ds xor ax,axxor ax,ax push ax push ax mov ax,data mov ax,data mov ds,ax mov ds,ax mov ax,Xmov ax,X add ax,Y add ax,Y add ax,Z add ax,Z mov W,ax mov W,ax ret retmain endpmain endpcode endscode ends end startend startWX+Y+Z 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1

5、-2ch5;查表法,實(shí)現(xiàn)一位;查表法,實(shí)現(xiàn)一位1616進(jìn)制數(shù)轉(zhuǎn)換為進(jìn)制數(shù)轉(zhuǎn)換為ASCIIASCII碼顯示碼顯示data segmentdata segment ASCII db 30h,31h,32h,33h,34h,35hASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h db 36h,37h,38h,39h ;0 ;09 9的的ASCIIASCII碼碼 db 41h,42h,43h,44h,45h,46hdb 41h,42h,43h,44h,45h,46h;A;AF F的的ASCIIASCII碼碼 hexhex db 0bh db 0bh

6、 ; ;任意設(shè)定一個(gè)待轉(zhuǎn)換的一位任意設(shè)定一個(gè)待轉(zhuǎn)換的一位1616進(jìn)制數(shù)進(jìn)制數(shù)data endsdata endscode segmentcode segmentmain proc farmain proc far 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 assume cs:code,ds:dataassume cs:code,ds:datastart:start: push ds push ds xor ax,ax xor ax,ax push ax push ax mov ax,data mov ax,d

7、ata mov ds,ax mov ds,ax ;- ;- mov bx,offset ASCIImov bx,offset ASCII;BX;BX指向指向ASCIIASCII碼表碼表mov al,hexmov al,hex;AL;AL取得一位取得一位1616進(jìn)制數(shù),正是進(jìn)制數(shù),正是ASCIIASCII碼表中位移碼表中位移 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 and al,0fh and al,0fh; ;只有低只有低4 4位是有效的,高位是有效的,高4 4位清位清0 0 xlatxlat ; ;換碼:

8、換碼:ALDS:BXALDS:BXALALmov dl,almov dl,al; ;入口參數(shù):入口參數(shù):DLALDLALmov ah,2mov ah,2;02;02號號DOSDOS功能調(diào)用功能調(diào)用int 21hint 21h; ;顯示一個(gè)顯示一個(gè)ASCIIASCII碼字符碼字符retretmain endpmain endpcode endscode ends end startend start;查表法,實(shí)現(xiàn)一位;查表法,實(shí)現(xiàn)一位1616進(jìn)制數(shù)轉(zhuǎn)換為進(jìn)制數(shù)轉(zhuǎn)換為ASCIIASCII碼顯示碼顯示data segmentdata segment ASCII db 30h,31h,32h,33h,

9、34h,35h ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h db 36h,37h,38h,39h ;0 ;09 9的的ASCIIASCII碼碼 db 41h,42h,43h,44h,45h,46hdb 41h,42h,43h,44h,45h,46h;A;AF F的的ASCIIASCII碼碼 hexhex db 0bh db 0bh ; ;任意設(shè)定一個(gè)待轉(zhuǎn)換的一位任意設(shè)定一個(gè)待轉(zhuǎn)換的一位1616進(jìn)制數(shù)進(jìn)制數(shù)data endsdata endscode segmentcode segmentmain proc farmain proc f

10、arassume cs:code,ds:dataassume cs:code,ds:datastart:start: push dspush ds xor ax,axxor ax,ax push axpush ax mov ax,datamov ax,data mov ds,axmov ds,ax ;- ;- mov bx,offset ASCIImov bx,offset ASCII;BX;BX指向指向ASCIIASCII碼表碼表mov al,hexmov al,hex;AL;AL取得一位取得一位1616進(jìn)制數(shù),正是進(jìn)制數(shù),正是ASCIIASCII碼表中位移碼表中位移and al,0fhan

11、d al,0fh; ;只有低只有低4 4位是有效的,高位是有效的,高4 4位清位清0 0 xlatxlat ; ;換碼:換碼:ALDS:BXALDS:BXALALmov dl,almov dl,al; ;入口參數(shù):入口參數(shù):DLALDLALmov ah,2mov ah,2;02;02號號DOSDOS功能調(diào)用功能調(diào)用int 21hint 21h; ;顯示一個(gè)顯示一個(gè)ASCIIASCII碼字符碼字符retretmain endpmain endpcode endscode ends end startend start 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥

12、山 匯編語言匯編語言第5章2022-1-2ch55.1 5.1 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)一般是循環(huán)結(jié)構(gòu)一般是和和可以實(shí)現(xiàn)循環(huán)控可以實(shí)現(xiàn)循環(huán)控制制 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 循環(huán)程序結(jié)構(gòu)形式循環(huán)程序結(jié)構(gòu)形式DO-WHILE 結(jié)構(gòu)結(jié)構(gòu) DO-UNTIL 結(jié)構(gòu)結(jié)構(gòu)控制條件控制條件初始化初始化循環(huán)體循環(huán)體YN控制條件控制條件初始化初始化循環(huán)體循環(huán)體YN 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5: 設(shè)置循環(huán)的初

13、始狀態(tài)設(shè)置循環(huán)的初始狀態(tài): 循環(huán)的工作部分及修改部分循環(huán)的工作部分及修改部分:計(jì)數(shù)控制(:計(jì)數(shù)控制(LOOP) 特征值控制特征值控制(LOOPZ/LOOPNZ/ 條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令) 循環(huán)程序結(jié)構(gòu)說明循環(huán)程序結(jié)構(gòu)說明 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5例:把例:把 BX BX 中的二進(jìn)制數(shù)以十六進(jìn)制的形式顯示在屏幕上中的二進(jìn)制數(shù)以十六進(jìn)制的形式顯示在屏幕上 如:如:1011 0010 1111 1010 B H BXBX1234 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院

14、田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5分析:分析:(1)程序結(jié)構(gòu)的確定程序結(jié)構(gòu)的確定 由題意由題意,顯然這可以用循環(huán)結(jié)構(gòu)來完成,每次顯,顯然這可以用循環(huán)結(jié)構(gòu)來完成,每次顯示一個(gè)十六進(jìn)制數(shù)位,因而循環(huán)次數(shù)是已知的,計(jì)數(shù)值示一個(gè)十六進(jìn)制數(shù)位,因而循環(huán)次數(shù)是已知的,計(jì)數(shù)值為為4。 (2)循環(huán)體的構(gòu)成(算法確定)循環(huán)體的構(gòu)成(算法確定) 循環(huán)體應(yīng)該包括:循環(huán)體應(yīng)該包括:。 需要了解相關(guān)知識需要了解相關(guān)知識:字符和其字符和其ASCII碼之間的關(guān)系?碼之間的關(guān)系? “0”“9” 30H39H, “A”F” 41H5AH如何顯示一個(gè)字符?如何顯示一個(gè)字符?(a)將顯示字符的將顯示字符的A

15、SCII碼放入碼放入DL寄存器;寄存器;(b)將將AH的內(nèi)的內(nèi)容置為容置為2(功能號);(功能號);(c)執(zhí)行執(zhí)行INT 21H(DOS 功能調(diào)功能調(diào)用)。用)。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5開開 始始初初 始始 化化 循循 環(huán)環(huán)計(jì)計(jì) 數(shù)數(shù) 值值B B X X 循循 環(huán)環(huán) 左左 移移一一 個(gè)個(gè) 數(shù)數(shù) 位位把把 最最 右右 面面 的的 數(shù)數(shù)位位 轉(zhuǎn)轉(zhuǎn) 換換 為為 A A S S C C I I I I是是 A A S S C C I I I IA A F F ?加加 上上 7 7顯顯 示示 一一 個(gè)

16、個(gè) 字字 符符循循 環(huán)環(huán) 計(jì)計(jì) 數(shù)數(shù) 值值 = = 0 0 ?結(jié)結(jié) 束束Y YN NN NY Y(3)循環(huán)控制條件分析)循環(huán)控制條件分析因?yàn)檠h(huán)次數(shù)已知,可以使用因?yàn)檠h(huán)次數(shù)已知,可以使用實(shí)現(xiàn),但是必須注意:實(shí)現(xiàn),但是必須注意:。除了可以使用除了可以使用LOOPLOOP指令之外,還指令之外,還可以使用可以使用來實(shí)現(xiàn)。來實(shí)現(xiàn)。LOOP AGAIN DEC 計(jì)數(shù)器計(jì)數(shù)器 JNZ AGAIN 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 mov cx, 4 mov cx, 4 ;初始化;初始化rotate: rotat

17、e: mov cl, 4 mov cl, 4 rol bx, cl rol bx, cl mov al, bl mov al, bl and al, 0fh and al, 0fh add al, 30h add al, 30h ; 09 ASCII 30H39H; 09 ASCII 30H39H cmp al, 3ah cmp al, 3ah jl printit jl printit add al, 7h add al, 7h ; AF ASCII 41H46H; AF ASCII 41H46Hprintit: printit: mov dl, almov dl, al mov ah, 2

18、 mov ah, 2 int 21h int 21h loop rotate loop rotate 方法方法1 (LOOP) 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 mov mov , 4 , 4 ;初始化;初始化rotate: mov rotate: mov , 4, 4 rol bx, cl rol bx, cl mov al, bl mov al, bl and al, 0fh and al, 0fh add al, 30h add al, 30h ; 09 ASCII 30H39H; 09 ASC

19、II 30H39H cmp al, 3ah cmp al, 3ah jl printit jl printit add al, 7h add al, 7h ; AF ASCII 41H46H; AF ASCII 41H46Hprintit: printit: mov dl, almov dl, al mov ah, 2 mov ah, 2 int 21h int 21h 方法方法2 (條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令) 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5例:將正數(shù)例:將正數(shù) n n 插入一個(gè)已整序的正數(shù)字?jǐn)?shù)組。

20、該數(shù)組的插入一個(gè)已整序的正數(shù)字?jǐn)?shù)組。該數(shù)組的首地址和末地址分別為首地址和末地址分別為ARRAY_HEAD, ARRAY_END。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5由于數(shù)組已經(jīng)排好序,因此可以將正數(shù)由于數(shù)組已經(jīng)排好序,因此可以將正數(shù)n依次和數(shù)組中的數(shù)進(jìn)依次和數(shù)組中的數(shù)進(jìn)行比較,比較有個(gè)方向問題,這里假設(shè)數(shù)組在存儲單元中按地行比較,比較有個(gè)方向問題,這里假設(shè)數(shù)組在存儲單元中按地址遞增的方向從小到大依次存放。不妨從大數(shù)開始進(jìn)行比較,址遞增的方向從小到大依次存放。不妨從大數(shù)開始進(jìn)行比較, 寧夏師范學(xué)院寧夏師范

21、學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 很顯然,查找位置和空出位置的過程就是循環(huán)比很顯然,查找位置和空出位置的過程就是循環(huán)比較的過程,因此采用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn),那么,循環(huán)條較的過程,因此采用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn),那么,循環(huán)條件如何確定呢?其中一種比較容易想到循環(huán)條件就是件如何確定呢?其中一種比較容易想到循環(huán)條件就是:數(shù)組長度(或數(shù)組首地址)及數(shù)組長度(或數(shù)組首地址)及K=n,其中,其中K為依次從為依次從數(shù)組中取出的一個(gè)數(shù)。數(shù)組中取出的一個(gè)數(shù)。 另外,可以充分利用題目中的已知條件即數(shù)組中另外,可以充分利用題目中的已知條件即數(shù)組中的數(shù)均為

22、正數(shù),所以我們可以在數(shù)組的開始的前一個(gè)的數(shù)均為正數(shù),所以我們可以在數(shù)組的開始的前一個(gè)位置存放一個(gè)負(fù)數(shù),不妨存放數(shù)位置存放一個(gè)負(fù)數(shù),不妨存放數(shù)-1,這樣,在循環(huán)控,這樣,在循環(huán)控制時(shí)就不需要用數(shù)組長度來進(jìn)行控制,可以進(jìn)一步簡制時(shí)就不需要用數(shù)組長度來進(jìn)行控制,可以進(jìn)一步簡化程序的設(shè)計(jì)。而且需要注意的是,有可能一次都不化程序的設(shè)計(jì)。而且需要注意的是,有可能一次都不需要移動數(shù)組中的數(shù)。因此,應(yīng)選擇需要移動數(shù)組中的數(shù)。因此,應(yīng)選擇DOWHILE 結(jié)結(jié)構(gòu)形式。構(gòu)形式。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5開開 始始(

23、 (A AR RR RA AY Y_ _H HE EA AD D- -2 2) ) - -1 1初初 始始 化化 變變 址址 寄寄 存存 器器 S SI IK K 0 0N NY Y 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10

24、z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10 z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_rule dw 00dch logic_rule dw 00dch ;0000,0000,1101,1100;0000,0000,1101,1100 mov bx, 0mov bx, 0 mov cx, 10 mov cx, 10 mov dx, logic_rule mov dx, logic_rulenext: mov ax, xbxnext: mov ax, xbx shr dx, 1 shr dx, 1 jc subtract jc

25、subtract add ax, ybx add ax, ybx jmp short result jmp short result ; ; 向前引用向前引用subtract: subtract: sub ax, ybx sub ax, ybxresult: mov zbx, axresult: mov zbx, ax add bx, 2 add bx, 2 loop next loop next 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5例例: 將首地址為將首地址為A的字?jǐn)?shù)組從小到大排序的字?jǐn)?shù)組從小到大排序3

26、2,85,16,15, 832,85,16,15, 8 (冒泡算法,多重循環(huán))(冒泡算法,多重循環(huán)) 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5冒泡法冒泡法“冒泡法冒泡法”是一種排序算法,不是最優(yōu)的算法,但它易是一種排序算法,不是最優(yōu)的算法,但它易于理解和實(shí)現(xiàn)于理解和實(shí)現(xiàn)冒泡法冒泡法;將所有元將所有元素比較完之后,最大的元素排到了最后素比較完之后,最大的元素排到了最后;n n個(gè)數(shù)需要個(gè)數(shù)需要n-1n-1遍比較,第一遍遍比較,第一遍比較出一個(gè)最大(或最?。?shù),第二遍對剩下的數(shù)進(jìn)比較出一個(gè)最大(或最?。?shù),第二遍對

27、剩下的數(shù)進(jìn)行比較,得到一個(gè)次最大(或次最小)數(shù)行比較,得到一個(gè)次最大(或次最小)數(shù) ,第,第n-1n-1遍比遍比較出最后兩個(gè)數(shù)的大小順序,至此整個(gè)數(shù)組全部排好較出最后兩個(gè)數(shù)的大小順序,至此整個(gè)數(shù)組全部排好序。每一遍比較需要比較的次數(shù)為要比較數(shù)減一序。每一遍比較需要比較的次數(shù)為要比較數(shù)減一。如。如n=5,n=5,第一遍比較次數(shù)為第一遍比較次數(shù)為4 4(內(nèi)循環(huán)),第二遍比較次數(shù)(內(nèi)循環(huán)),第二遍比較次數(shù)為為3 3 (內(nèi)循環(huán))(內(nèi)循環(huán)) ,第三遍比較次數(shù)為,第三遍比較次數(shù)為2 2 (內(nèi)循環(huán))(內(nèi)循環(huán)) ,第四遍比較次數(shù)為第四遍比較次數(shù)為1 1 (內(nèi)循環(huán))(內(nèi)循環(huán)) 。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)

28、與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5冒泡法的排序過程序號序號 數(shù)數(shù)比 較 遍 數(shù)1234 1 32 2 85 3 16 4 15 5 8321615885161583285158163285815163285 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 mov cx, 5 mov cx, 5 ; ;元素個(gè)數(shù)元素個(gè)數(shù) dec cx dec cx ; ;比較遍數(shù)比較遍數(shù): : mov bx, 0mov bx, 0: : mov ax, Abx mov ax

29、, Abx ; ;相鄰兩數(shù)相鄰兩數(shù) cmp ax, Abx+2 cmp ax, Abx+2 ; ; 比較比較 jle continuejle continue xchg ax, Abx+2 xchg ax, Abx+2 ; ;交換位置交換位置 mov Abx, axmov Abx, axcontinue:continue: add bx, 2 add bx, 2 loop loop loop loop 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch55.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì)分支程序根據(jù)條件是真或假決定執(zhí)行與否

30、分支程序根據(jù)條件是真或假決定執(zhí)行與否判斷的條件是各種指令,如判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀態(tài)標(biāo)志等執(zhí)行后形成的狀態(tài)標(biāo)志 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 5.2.1 5.2.1 分支程序結(jié)構(gòu)形式分支程序結(jié)構(gòu)形式 case 1 case 2 case n? CASE 結(jié)構(gòu)結(jié)構(gòu) IF-THEN-ELSE 結(jié)構(gòu)結(jié)構(gòu)? 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 5.2.2 5.2.2 分支程序設(shè)計(jì)方

31、法分支程序設(shè)計(jì)方法程序的分支用條件轉(zhuǎn)移指令程序的分支用條件轉(zhuǎn)移指令Jxx和和JMP可以實(shí)現(xiàn)分支控制;可以實(shí)現(xiàn)分支控制; 常用的控制方法有常用的控制方法有 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5例:有數(shù)組例:有數(shù)組 x(x1,x(x1,x2,x2,x10) ,x10) 和和 y(y1,y2,y10)y(y1,y2,y10), 編程計(jì)算編程計(jì)算 z z(z1,(z1,z2,z2,z10),z10)z1 = x1 + y1z1 = x1 + y1z2 = x2 + y2z2 = x2 + y2z3 = x3 -

32、y3z3 = x3 - y3z4 = x4 - y4z4 = x4 - y4z5 = x5 - y5z5 = x5 - y5z6 = x6 + y6z6 = x6 + y6z7 = x7 - y7z7 = x7 - y7z8 = x8 - y8z8 = x8 - y8z9 = x9 + y9z9 = x9 + y9z10= x10 + y10z10= x10 + y10 邏輯尺:邏輯尺:0 0 1 1 0 1 1 1 0 00 0 1 1 0 1 1 1 0 01 1 減法減法0 0 加法加法(1) 邏輯尺控制邏輯尺控制 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥

33、山田彥山 匯編語言匯編語言第5章2022-1-2ch5 x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10 z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_rule dw logic_rule dw 00dc00dch ;0000,0000,1101,110

34、0h ;0000,0000,1101,1100 mov bx, 0mov bx, 0 mov cx, 10 mov cx, 10 mov dx, logic_rule mov dx, logic_rulenext: mov ax, xbxnext: mov ax, xbx shr dx, 1 shr dx, 1 jc subtract jc subtract add ax, ybx add ax, ybx jmp short result jmp short result ; ; 向前引用向前引用subtract: subtract: sub ax, ybx sub ax, ybxresult

35、: mov zbx, axresult: mov zbx, ax add bx, 2 add bx, 2 loop next loop next 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5(2) 條件控制條件控制data segmentdata segment array dw 12,11,22,33,44,55,66 array dw 12,11,22,33,44,55,66 dw 77,88,99,111,222,333 dw 77,88,99,111,222,333 number dw 55 number

36、 dw 55 low_idx dw ? low_idx dw ? high_idx dw ? high_idx dw ?data endsdata ends例:例:折半查找算法折半查找算法. .在數(shù)據(jù)段中,有一個(gè)按從小到大順序在數(shù)據(jù)段中,有一個(gè)按從小到大順序排列的無符號數(shù)字?jǐn)?shù)組排列的無符號數(shù)字?jǐn)?shù)組ARRAYARRAY,數(shù)組中的第一個(gè)單元存放,數(shù)組中的第一個(gè)單元存放著數(shù)組的長度。在著數(shù)組的長度。在AXAX中有一個(gè)無符號數(shù),要求在數(shù)組中查中有一個(gè)無符號數(shù),要求在數(shù)組中查找找numbernumber,如果找到,則使,如果找到,則使CF=0CF=0,并在,并在SISI中給出該元素在中給出該元素在數(shù)組中

37、的偏移地址;如未找到,則使數(shù)組中的偏移地址;如未找到,則使CF=1CF=1。 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 12 12 11 11 22 22 33 33 44 44 55 55 66 66 77 77 88 88 99 99111111222222333333 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9101011111212(ax)=55(ax)=55(si)=0ah(si)=0ahCf=0Cf=0(ax)=90(ax)=90 (si)=10h(si)=10

38、hCf=1Cf=1折半算法折半算法 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5 lea di, arraylea di, array mov ax, number mov ax, number ; ;要查找數(shù)要查找數(shù) cmp ax, di+2 cmp ax, di+2 ; (ax); (ax)與第一個(gè)元素比較與第一個(gè)元素比較 ja chk_lastja chk_last lea si,

39、 di+2 lea si, di+2 je exit je exit ; (ax); (ax)第一個(gè)元素第一個(gè)元素, ,找到退出找到退出 stcstc jmp exit jmp exit ; (ax); (ax); (ax)最后一個(gè)元素最后一個(gè)元素, ,未找到退出未找到退出算法算法 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5compare:compare: cmp ax, bx+si cmp ax, bx+si je exit je exit ja higher ja higher dec cxdec cx m

40、ov high_idx, cx mov high_idx, cx jmp mid jmp midhigher:higher: inc cxinc cx mov low_idx, cx mov low_idx, cx jmp mid jmp midno_match:no_match: stc stcexit:exit: search:search: mov low_idx, 1 mov low_idx, 1 mov bx, di mov bx, di ; ;個(gè)數(shù)個(gè)數(shù) mov high_idx, bxmov high_idx, bx mov bx, di mov bx, dimid:mid: mo

41、v cx, low_idx mov cx, low_idx mov dx, high_idx mov dx, high_idx cmp cx, dx cmp cx, dx ja no_match ja no_match add cx, dxadd cx, dx shr cx, 1 shr cx, 1 mov si, cx mov si, cx shl si, 1 shl si, 1 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章2022-1-2ch5(3) 地址跳躍表地址跳躍表(值與地址有對應(yīng)關(guān)系的表)(值與地址有對應(yīng)關(guān)系的表)branch_tablebranch_table dw routine1 dw routine1 dw routine2 dw routine2 dw routine3 dw routine3 dw routine4 dw routine4 dw routine5 dw routine5 dw routine6 dw routine6 dw routine7 dw routine7 dw routine8 dw routine8 寧夏師范學(xué)院寧夏師范學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 田彥山田彥山 匯編語言匯編語言第5章20

溫馨提示

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

評論

0/150

提交評論