匯編語言第五章循環(huán)計本_第1頁
匯編語言第五章循環(huán)計本_第2頁
匯編語言第五章循環(huán)計本_第3頁
匯編語言第五章循環(huán)計本_第4頁
匯編語言第五章循環(huán)計本_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五章第五章 匯編語言程序設(shè)計匯編語言程序設(shè)計第一節(jié)第一節(jié) 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計 一、循環(huán)結(jié)構(gòu)程序概述一、循環(huán)結(jié)構(gòu)程序概述 在程序中,在程序中,凡能有規(guī)則重復(fù)執(zhí)行的程序段凡能有規(guī)則重復(fù)執(zhí)行的程序段稱作循環(huán)稱作循環(huán)。 包含循環(huán)程序段的程序稱為循環(huán)結(jié)構(gòu)程序。包含循環(huán)程序段的程序稱為循環(huán)結(jié)構(gòu)程序。1、循環(huán)程序的組成、循環(huán)程序的組成循環(huán)的初始狀態(tài):循環(huán)的初始狀態(tài):設(shè)置一些初值,如設(shè)寄存器、設(shè)置一些初值,如設(shè)寄存器、計數(shù)器的初值等。計數(shù)器的初值等。循環(huán)體:循環(huán)體:由工作部分和修改部分構(gòu)成。工作部由工作部分和修改部分構(gòu)成。工作部分是循環(huán)程序具體要完成的功能,是循環(huán)的主分是循環(huán)程序具體要完成的功

2、能,是循環(huán)的主要部分,修改部分是控制循環(huán)的一些參數(shù)有規(guī)要部分,修改部分是控制循環(huán)的一些參數(shù)有規(guī)律的變化。律的變化。循環(huán)控制部分:循環(huán)控制部分:控制循環(huán)的結(jié)束??刂蒲h(huán)的結(jié)束。2 2、循環(huán)程序的結(jié)構(gòu)形式:、循環(huán)程序的結(jié)構(gòu)形式:循環(huán)初始化循環(huán)初始化 循環(huán)控制條件循環(huán)控制條件循環(huán)體循環(huán)體循環(huán)初始化循環(huán)初始化循環(huán)體循環(huán)體循環(huán)控制條件循環(huán)控制條件 二、循環(huán)程序設(shè)計方法二、循環(huán)程序設(shè)計方法(95頁頁)1.循環(huán)指令循環(huán)指令指指令令 指指令令格格式式 操操 作作 數(shù)數(shù) 說說明明 指指令令功功能能說說明明 loop loop (cx) (cx)-1,(cx0),循循環(huán)環(huán) loopz loopz loope lo

3、ope (cx) (cx)-1,(cx0), zf=1, 循循環(huán)環(huán) loopnz loopnz loopne loopne (cx) (cx)-1,(cx0), zf=0, 循循環(huán)環(huán) jcxz jcxz 均均 為為 短短 標(biāo)標(biāo)號號 范范圍圍: (-128127)+2 即即: -126129 (cx)=0, 轉(zhuǎn)轉(zhuǎn) 說明說明:這些指令對狀態(tài)標(biāo)志位都沒影響這些指令對狀態(tài)標(biāo)志位都沒影響.loope/loopz 和和loopne/loopnz兩類指令有條件地形兩類指令有條件地形成循環(huán)成循環(huán),前者當(dāng)規(guī)定的循環(huán)次數(shù)未完成時前者當(dāng)規(guī)定的循環(huán)次數(shù)未完成時,還必須滿足還必須滿足“相等相等”或或“等于零等于零”的條

4、件,才能繼續(xù)循環(huán)。后者類似,條件相反。的條件,才能繼續(xù)循環(huán)。后者類似,條件相反。兩個條件必須同時成立,兩個條件必須同時成立,才繼續(xù)循環(huán)才繼續(xù)循環(huán)動畫動畫(cx)-1 cx循環(huán)次數(shù)循環(huán)次數(shù)cx循環(huán)體循環(huán)體(cx)=0?ynloope/loopzzf=1?yn(cx)-1 cx循環(huán)次數(shù)循環(huán)次數(shù)cx循環(huán)體循環(huán)體(cx)=0?ynloop操作圖操作圖zf=0?loopne/loopnz例例1 1:在屏幕上顯示:在屏幕上顯示1010行行 “how do you do”how do you do”, 程序名程序名: exa.asm: exa.asm(2 2)求)求1n1n自然數(shù)的和,結(jié)果存在自然數(shù)的和,結(jié)

5、果存在resultresult單單元。元。程序如下:程序如下: movmov ax ax, 0 0 mov mov cx cx, n ndonedone:add axadd ax,cxcx loop done ; loop done ;和它等價的指令是?和它等價的指令是? movmov result result,axax(2)在一首址為在一首址為array1長度為長度為20的字符串查找字符的字符串查找字符“*”,如果找到,則將結(jié)果單元,如果找到,則將結(jié)果單元result清清0,否則,否則結(jié)果單元為全結(jié)果單元為全1。 lea si, array1 dec si ;為后面循環(huán)從第為后面循環(huán)從第1

6、個字符作準(zhǔn)備個字符作準(zhǔn)備. mov result,0ffh ;先假設(shè)沒找到先假設(shè)沒找到,送全送全1 mov cx,20 mov al,* ;*的的ascii為為42d=2ahdone:inc si cmp al,si ;與第一個字符比較;與第一個字符比較 loopne done ;不相等且;不相等且cx0,zf=0繼續(xù)循環(huán)繼續(xù)循環(huán) jcxz end1 ;退出循環(huán)時退出循環(huán)時cx為為0 或沒找到或沒找到 mov result,0 ;找到找到end1: hlt2 2 串操作指令串操作指令(75(75頁頁) )包括包括串傳送、存取、比較、掃描串傳送、存取、比較、掃描等等操作操作. . 利用串操作指令

7、可以直接處理兩個存儲利用串操作指令可以直接處理兩個存儲器操作數(shù),方便地處理字符串或數(shù)據(jù)塊。器操作數(shù),方便地處理字符串或數(shù)據(jù)塊。串指令的特點(diǎn)串指令的特點(diǎn)(1 1)指令格式)指令格式串指令可以顯式地帶有操作數(shù),也可以使串指令可以顯式地帶有操作數(shù),也可以使用隱含格式。例如串傳送指令用隱含格式。例如串傳送指令movsmovs,可以有以,可以有以下幾種格式:下幾種格式:顯式:顯式:movs dst,srcmovs dst,src隱式:隱式:movsbmovsb; ;字節(jié)傳送字節(jié)傳送 movswmovsw; ;字傳送字傳送 movsdmovsd; ;雙字傳送雙字傳送(2 2)操作數(shù))操作數(shù)串指令可以處理串

8、指令可以處理寄存器操作數(shù)寄存器操作數(shù)和和存儲器操存儲器操作數(shù)作數(shù)。若為寄存器操作數(shù)則只能放在累加器中,。若為寄存器操作數(shù)則只能放在累加器中,對于字節(jié)操作數(shù)應(yīng)放在對于字節(jié)操作數(shù)應(yīng)放在alal中,字操作數(shù)放在中,字操作數(shù)放在axax中。中。對于存儲器操作數(shù)應(yīng)先建立地址指針:對于存儲器操作數(shù)應(yīng)先建立地址指針: 若為若為源操作數(shù)源操作數(shù),則必須把,則必須把源串首地址放入源串首地址放入sisi寄存器寄存器,缺省情況尋址,缺省情況尋址dsds所指向的段。所指向的段。 若為若為目標(biāo)操作數(shù)目標(biāo)操作數(shù),則必須把,則必須把目標(biāo)串首地址放目標(biāo)串首地址放入入es:dies:di寄存器寄存器,不允許使用段超越前綴。,不

9、允許使用段超越前綴。(3 3)地址指針的修改)地址指針的修改串指令執(zhí)行后系統(tǒng)自動修改地址串指令執(zhí)行后系統(tǒng)自動修改地址指針指針sisi、didi。若為字節(jié)型操作其修改。若為字節(jié)型操作其修改量為量為1 1,若為字型操作其修改量為,若為字型操作其修改量為2 2。(4 4)方向標(biāo)志)方向標(biāo)志方向標(biāo)志方向標(biāo)志dfdf決定地址指針的增減決定地址指針的增減方向方向。若若dfdf0 0,則地址指針增量;若,則地址指針增量;若dfdf1 1,則地址指針減量。,則地址指針減量。(5 5)重復(fù)前綴)重復(fù)前綴串指令前可以加重復(fù)前綴串指令前可以加重復(fù)前綴repereperepzrepz、 reprep或或repnere

10、pnerepnz,repnz,使后跟的串指令重復(fù)使后跟的串指令重復(fù)執(zhí)行。執(zhí)行。 重復(fù)次數(shù)應(yīng)事先初始化在計數(shù)器重復(fù)次數(shù)應(yīng)事先初始化在計數(shù)器cxcx。二、串指令二、串指令1 1串傳送指令串傳送指令 movs(76movs(76頁頁) )顯式格式:顯式格式:movs dst,srcmovs dst,src隱含格式:隱含格式:movsbmovsb movsw movsd movsw movsd功能功能: :源源目標(biāo)目標(biāo), ,即即(si)es:di,(si)es:di,且且自動修改自動修改sisi、didi指針。指針。標(biāo)志:不影響標(biāo)志位。標(biāo)志:不影響標(biāo)志位。 串傳送指令允許目的串和源串都是串傳送指令允許

11、目的串和源串都是存儲器操作數(shù),在這一點(diǎn)上有別于存儲器操作數(shù),在這一點(diǎn)上有別于m0vm0v指令。指令。動畫演示動畫演示 把自把自buffer1buffer1開始的開始的200200個字節(jié)數(shù)據(jù)傳送到個字節(jié)數(shù)據(jù)傳送到buffer2buffer2開開始的區(qū)域中。始的區(qū)域中。 mov movax,seg buffer1ax,seg buffer1movmovds,axds,axmov mov ax,seg buffer2ax,seg buffer2mov mov es,axes,axlealeasi, buffer1si, buffer1lealeadi, buffer2di, buffer2movmo

12、vcx,200cx,200cldcldreprepmovsbmovsb 和它等價的程序段是什么?和它等價的程序段是什么?;200;200個字節(jié)數(shù)據(jù)傳送完畢后執(zhí)行下一條指令個字節(jié)數(shù)據(jù)傳送完畢后執(zhí)行下一條指令前面的例子中語句前面的例子中語句reprep movsbmovsb和它等價的程序段是什么?和它等價的程序段是什么?last:mov al,silast:mov al,si mov es:di,al mov es:di,al inc si inc si inc di inc di loop last loop lastlast: movsblast: movsb loop last loop l

13、ast2 2取串指令取串指令 lods顯式格式:顯式格式:lods srclods src隱含格式隱含格式:lodsblodsb lodsw lodsd lodsw lodsd功能:源功能:源累加器,即累加器,即(si) al(si) al(或(或axax、eaxeax),且自動修改),且自動修改sisi指針。指針。說明:若說明:若dfdf0,0,則則lodsb(lodsb(或或lodsw)lodsw)使使sisi加加1 1(或(或2 2);若);若dfdf1 1,則,則lodsblodsb(或(或lodswlodsw)使)使sisi減減1 1(或(或2 2)。)。標(biāo)志:不影響標(biāo)志位。標(biāo)志:不

14、影響標(biāo)志位。 自自buffer1buffer1開始的開始的1010個非壓縮個非壓縮bcdbcd碼形式存放的十進(jìn)碼形式存放的十進(jìn)制數(shù)轉(zhuǎn)換成制數(shù)轉(zhuǎn)換成asciiascii碼,按順序顯示在屏幕上。設(shè)碼,按順序顯示在屏幕上。設(shè)dsds、eses已按要求設(shè)置已按要求設(shè)置 lea lea si, buffer1 si, buffer1movmov cx,10 cx,10cldcld mov ah,02h mov ah,02h get get: : lodsblodsboror al,30h al,30hmov dl,almov dl,al int 21h int 21h looploop get get

15、hlt hlt 3 3存串指令存串指令 stos顯式格式:顯式格式:stos dststos dst隱含格式:隱含格式:stosbstosb stosw stosw stosd stosd功能:累加器功能:累加器目標(biāo),即目標(biāo),即(al(al(或或axax、eax)eax) es:di es:di,且自動修改,且自動修改didi指針。指針。說明:若說明:若dfdf0,0,則則stosbstosb使使didi加加1 1; 若若dfdf1 1,則,則stosbstosb使使didi減減1 1標(biāo)志:不影響標(biāo)志位。標(biāo)志:不影響標(biāo)志位。 把自把自buffer1buffer1開始的非壓縮開始的非壓縮bcdb

16、cd碼存放碼存放的十進(jìn)的十進(jìn)制數(shù)制數(shù)轉(zhuǎn)換成轉(zhuǎn)換成asciiascii碼碼,并放到并放到buufer2buufer2中中, ,字符串字符串長度為長度為1010字節(jié)。設(shè)字節(jié)。設(shè)dsds、eses已按要求設(shè)置已按要求設(shè)置 lea lea si, buffer1 si, buffer1lealea di, buffer2 di, buffer2movmov cx,10 cx,10cldcld lop lop: : lodsblodsboror al,30h al,30hstosbstosbloop loploop lop例例. . 用用4 4到到5 5種方法編寫實(shí)現(xiàn)以下功能的程序片斷。種方法編寫實(shí)現(xiàn)以

17、下功能的程序片斷。 把自把自buffer1buffer1開始的開始的200200個字節(jié)數(shù)據(jù)傳送到個字節(jié)數(shù)據(jù)傳送到buffer2buffer2開開始的區(qū)域中。始的區(qū)域中。 mov movax,seg buffer1ax,seg buffer1movmovds,axds,axmov mov ax,seg buffer2ax,seg buffer2mov mov es,axes,axlealeasi, buffer1si, buffer1lealeadi, buffer2di, buffer2movmovcx,200cx,200cldcldreprepmovsbmovsb 和它等價的程序段是什么?和

18、它等價的程序段是什么?;200;200個字節(jié)數(shù)據(jù)傳送完畢后執(zhí)行下一條指令個字節(jié)數(shù)據(jù)傳送完畢后執(zhí)行下一條指令前面的例子中語句前面的例子中語句reprepmovsbmovsb和它等價的程序段是什么?和它等價的程序段是什么?last:mov al,silast:mov al,si mov es:di,al mov es:di,al inc si inc si inc di inc di loop last loop lastlast: movsblast: movsb loop last loop lastlast:lodsblast:lodsb stosb stosb loop last loop

19、 lastmov cx,100mov cx,100cldcldrep movswrep movsw6 6串比較指令串比較指令 cmps顯式格式:顯式格式:cmps dst,srccmps dst,src隱含格式:隱含格式:cmpsbcmpsb cmpsw cmpswcmpsdcmpsd功能:源目標(biāo)功能:源目標(biāo), ,即即(si)(si)(es:di)(es:di),并且根,并且根據(jù)指令執(zhí)行結(jié)果設(shè)置標(biāo)志位,然后自動修改據(jù)指令執(zhí)行結(jié)果設(shè)置標(biāo)志位,然后自動修改sisi、didi指針。指針。說明:若說明:若dfdf0,0,則則cmpsb(cmpsb(或或cmpsw)cmpsw)使使sisi、didi各加

20、各加1 1(或(或2 2)。若)。若dfdf1,1,則則cmpsbcmpsb(或或cmpswcmpsw)使使sisi、didi各減各減1 1(或或2 2)。標(biāo)志:影響標(biāo)志:影響zfzf、sfsf、cfcf、ofof、afaf和和pfpf。repe/repz cmpsrepe/repz cmps : :指令結(jié)束后如果指令結(jié)束后如果zfzf為為1 1,表明兩串?dāng)?shù),表明兩串?dāng)?shù)據(jù)相等,據(jù)相等,zfzf為為0 0,表明至少有一個元素不相等。,表明至少有一個元素不相等。或或repne/repnzrepne/repnzcmpscmps上機(jī)作業(yè):字符串比較上機(jī)作業(yè):字符串比較(5-18.asm)設(shè)數(shù)據(jù)區(qū)有兩個

21、字節(jié)串,串設(shè)數(shù)據(jù)區(qū)有兩個字節(jié)串,串1 1的長度為的長度為5 5,串串2 2的長度為的長度為10.10.請判斷:請判斷: 若串若串2 2的最后的最后5 5個字符和串個字符和串1 1相同,相同,則置則置flagflag單元為單元為“y”y”,否則置為,否則置為“n”n”string1 db . string2 db .flag db ymov si,offset string1+4mov di,offset string2+9mov cx,5stdrepe cmpsbjz exitmov flag nexit: mov ah, 4chint 21h7 7串掃描指令串掃描指令 scas(搜索關(guān)鍵字)

22、(搜索關(guān)鍵字)(82頁頁)顯式格式:顯式格式:scas dst scas dst 隱含格式:隱含格式:scasb scaswscasb scasw 功能:功能: 累加器目標(biāo)累加器目標(biāo), ,即即(al(al(或或ax)ax)(es:dies:di),并且),并且根據(jù)指令執(zhí)行結(jié)果設(shè)置標(biāo)志,然后自動修改根據(jù)指令執(zhí)行結(jié)果設(shè)置標(biāo)志,然后自動修改didi指針。指針。指令執(zhí)行后,指令執(zhí)行后,didi自動指向下一個元素,若自動指向下一個元素,若zfzf1 1,說明相等,說明相等,如果用如果用reperepescasbscasb,指令執(zhí)行后,指令執(zhí)行后,didi自動指向下自動指向下一個元素,若一個元素,若zfz

23、f1 1,說明串中每一個都與目標(biāo)相等,說明串中每一個都與目標(biāo)相等,repne/repnzrepne/repnzscasb scasb 在一首址為在一首址為array1長度為長度為20的字符串查找字符的字符串查找字符“*”,如果找到,則將結(jié)果單元,如果找到,則將結(jié)果單元result清清0,否則,否則結(jié)果單元為全結(jié)果單元為全1。 lea si, array1mov result,0ffh ;先假設(shè)沒找到先假設(shè)沒找到,送全送全1 mov cx,20 mov al,* ;*的的ascii為為42d=2ah cld repne scasb jnz end1 ;退出循環(huán)時退出循環(huán)時cx為為0 或或 沒找到

24、沒找到 mov result,0 ;找到找到end1: hlt(三)循環(huán)結(jié)構(gòu)的基本模式:(三)循環(huán)結(jié)構(gòu)的基本模式: 單重循環(huán)結(jié)構(gòu)和多重循環(huán)結(jié)構(gòu)單重循環(huán)結(jié)構(gòu)和多重循環(huán)結(jié)構(gòu)(四)常用循環(huán)控制方法:(四)常用循環(huán)控制方法:1.計數(shù)器控制法:適用于循環(huán)次數(shù)已知情況。計數(shù)器控制法:適用于循環(huán)次數(shù)已知情況。 2 .2 .條件控制法條件控制法 : 循環(huán)次數(shù)未知的情況。循環(huán)次數(shù)未知的情況。 3. 3. 邏輯尺控制法:適用于作特殊的處理。邏輯尺控制法:適用于作特殊的處理。例例2:求:求1n的自然數(shù)的和。設(shè)的自然數(shù)的和。設(shè)n為為50以內(nèi)的數(shù)。以內(nèi)的數(shù)。data segment sj db 31,?,? resul

25、t dw ? data ends code segment assume cs:code,ds:datastart: mov ax,data mov ds, ax mov ax, 0 mov cl, sj done: add al, cl adc ah,0 dec cl jnz done mov result,ax mov ah,4ch int 21h code ends end start作業(yè)作業(yè)從自然數(shù)從自然數(shù)1開始累加,直到累加和大于開始累加,直到累加和大于500為止,為止,統(tǒng)計被累加的自然數(shù)的個數(shù),并把統(tǒng)計的個統(tǒng)計被累加的自然數(shù)的個數(shù),并把統(tǒng)計的個數(shù)送入單元數(shù)送入單元n中,把累加和送入

26、單元中,把累加和送入單元sum中。中。(sum1.asm) 分析:分析:用兩個寄存器用兩個寄存器,一個放累加的次數(shù),一一個放累加的次數(shù),一個放累加的和,條件控制法個放累加的和,條件控制法.x dw 110,120,130,140,150,160,170,180,190,200 y dw ? . .mov ax, x mov bx, offset x mov cx, 9 l1: inc bx inc bx cmp ax , bx jae l2 xchg ax, bx l2: loop l1 mov y,ax此程序段完成什么功能此程序段完成什么功能 復(fù)習(xí)復(fù)習(xí)上機(jī)作業(yè):上機(jī)作業(yè):1 把把x單元開始存

27、放的單元開始存放的20個無符號數(shù)個無符號數(shù)中的最大數(shù)送中的最大數(shù)送z單元,并顯示出最大數(shù)。單元,并顯示出最大數(shù)。 要求從鍵盤動態(tài)輸入要求從鍵盤動態(tài)輸入20個數(shù),并且個數(shù),并且都是兩位數(shù)。都是兩位數(shù)。(bj1.asm) bxbx1234例例5.1:把:把 bx bx 中的二進(jìn)制數(shù)以十六進(jìn)制的中的二進(jìn)制數(shù)以十六進(jìn)制的形式顯示在屏幕上形式顯示在屏幕上. mov ch, 4mov ch, 4rotate: mov cl, 4rotate: mov cl, 4 rol bx, clrol bx, cl mov al, bl mov al, bl and al, 0fh and al, 0fh add a

28、l, 30hadd al, 30h ; 09 ascii 30h39h ; 09 ascii 30h39h cmp al, 3ah ; cmp al, 3ah ;是否大于是否大于9 9 jl printitjl printit add al, 7hadd al, 7h ; af ascii 41h46h ; af ascii 41h46hprintit: mov dl, alprintit: mov dl, al mov ah, 2 mov ah, 2 int 21h int 21h dec chdec ch jnz rotate jnz rotate mov bx, 0 mov bx, 0n

29、ewchar: mov ah, 1 newchar: mov ah, 1 ;鍵盤輸入;鍵盤輸入 int 21hint 21h sub al, 30h sub al, 30h jl exit ; jl exit ; 099退出退出 cbwcbw xchg ax, bx xchg ax, bx mov cx, 10 mov cx, 10 mul cx mul cx xchg ax, bx xchg ax, bx add bx, ax add bx, ax jmp newchar jmp newcharexit: exit: 例:從鍵盤接收十進(jìn)制數(shù)并存入例:從鍵盤接收十進(jìn)制數(shù)并存入 bxbx( (

30、010)+1 )10+2 )10+5 1 2 531 32 35bxbx始終放轉(zhuǎn)換始終放轉(zhuǎn)換后用的數(shù)后用的數(shù)x dw 110,120,130,140,150,160,170,180,190,200 y dw ? . .mov ax, x mov bx, offset x mov cx, 9 l1: inc bx inc bx cmp ax , bx jae l2 xchg ax, bx l2: loop l1 mov y,ax此程序段完成什么功能此程序段完成什么功能復(fù)習(xí)復(fù)習(xí)在一首址為在一首址為array1長度為長度為20的字符串查找字符的字符串查找字符“*”,如果找到,則將結(jié)果單元如果找到,則

31、將結(jié)果單元result清清0,否則結(jié)果單,否則結(jié)果單元為全元為全1。請?zhí)羁?。請?zhí)羁?lea di,mov result,0ffh ;先假設(shè)沒找到先假設(shè)沒找到,送全送全1 mov cx, mov al,2ah ;*的的ascii為為42d=2ah cld repne ;退出循環(huán)時退出循環(huán)時cx為為0 或或 沒找到?jīng)]找到 mov result,0 ;找到找到end1: hlt程序段如下:程序段如下: mov ax, 0 mov cx, ndone:add ax,cx loop done mov result,ax該程序段完成什么功能該程序段完成什么功能?x dw ?x dw ?head dw 3,

32、5,15,23,37,49,52,65,78,99head dw 3,5,15,23,37,49,52,65,78,99end1 dw 105end1 dw 105n dw 32 n dw 32 例例5-4(166頁頁):將正數(shù):將正數(shù) n n 插入一個已整序的正數(shù)插入一個已整序的正數(shù)字?jǐn)?shù)組字?jǐn)?shù)組(按遞增按遞增順序)順序) mov ax, n mov ax, n mov head-2, 0ffffh mov head-2, 0ffffh mov si, 0 mov si, 0compare:compare: cmp end1 si, ax;cmp end1 si, ax;相對尋址相對尋址 jl

33、e insertjle insert ;小于;小于n,n,直接插入最直接插入最后后 mov bx, end1 simov bx, end1 si mov end1 si+2, bx mov end1 si+2, bx sub si, 2 sub si, 2 jmp short comparejmp short compareinsert:insert: mov end1 si+2, ax mov end1 si+2, ax 3 35 5151523233737494952526565787899991051053232-1-1headheadend1end1n n x x 例例5.55.5:有

34、數(shù)組:有數(shù)組 x(x1,x2,x10) x(x1,x2,x10) 和和 y(y1,y2,y10)y(y1,y2,y10), 編程計算編程計算 z(z1,z2,z10)z(z1,z2,z10)z1 = x1 + y1z1 = x1 + y1z2 = x2 + y2z2 = x2 + y2z3 = x3 - y3z3 = x3 - y3z4 = x4 - y4z4 = x4 - y4z5 = x5 - y5z5 = x5 - y5z6 = x6 + y6z6 = x6 + y6z7 = x7 - y7z7 = x7 - y7z8 = x8 - y8z8 = x8 - y8z9 = x9 + y9z

35、9 = 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 加法加法把標(biāo)志位放入存儲單元把標(biāo)志位放入存儲單元, ,存存儲單元就稱為邏輯尺儲單元就稱為邏輯尺 x dw x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z dw z dw

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

37、d ax, ybx add ax, ybx jmp jmp short result short result ; ; 向前引用向前引用subtract: subtract: sub ax, ybx sub ax, ybx result: mov zbxresult: mov zbx, ax, ax add bx add bx, 2, 2 loop next loop next x dwx dw ? ?array_head dwarray_head dw 3,5,15,23,37,49,52,65,78,99 3,5,15,23,37,49,52,65,78,99array_end dwarr

38、ay_end dw 105 105n dwn dw 32 32 例例5-4:將正數(shù):將正數(shù) n n 插入一個已整序的正數(shù)字?jǐn)?shù)組插入一個已整序的正數(shù)字?jǐn)?shù)組(按遞增順序)按遞增順序) mov mov ax, n ax, n mov mov array_head-2, 0ffffh array_head-2, 0ffffh mov si mov si, 0, 03 35 5151523233737494952526565787899991051053232-1-1array_headarray_endn n x x compare:compare:cmp array_end sicmp array_end si, ax, ax jlejle inser

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論