匯編語言程序例題_第1頁
匯編語言程序例題_第2頁
匯編語言程序例題_第3頁
匯編語言程序例題_第4頁
匯編語言程序例題_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...【例5.1】試編寫一程序計(jì)算以下表達(dá)式的值。 w=〔v-〔x*y+z-540〕〕/x式中x、y、z、v均為有符號(hào)字?jǐn)?shù)據(jù)。設(shè)x、y、z、v的值存放在字變量X、Y、Z、V中,結(jié)果存放在雙字變量W之中,程序的流程圖如圖5.1所示。DATA SEGMENT X DW 200 Y DW 100 Z DW 3000 V DW 10000 W DW 2DUP〔〕DATA ENDSSTACKSEGMENTSTACK DB200DUP〔0〕STACKENDSCODE SEGMENT ASSUMEDS:DATA,CS:CODE,SS:STACKSTART: MOV AX,DATA MOV DS,AX ;DATA→AX MOV AX,X IMULY ;〔X〕*〔Y〕→DX:AX MOV CX,AX MOV BX,DX ;〔DX:AX〕→〔BX:CX〕 MOV AX,Z CWD ;〔Z〕符號(hào)擴(kuò)展 ADD CX,AX ADC BX,DX ;〔BX:CX〕+〔DX:AX〕→〔BX:CX〕 SUB CX,540 SBB BX,0 ;〔BX:CX〕-540→〔BX:CX〕 MOV AX,VCWD ;〔V〕符號(hào)擴(kuò)展 SUBAX,CX SBBDX,BX ;〔DX:AX〕-〔BX:CX〕→〔DX:AX〕 IDIVX ;〔DX:AX〕/X MOVW,AX ;商→W MOVW+2,DX ;余數(shù)DX→W+2 MOVAH,4CH INT21HCODE ENDS ;退出DOS狀態(tài) ENDSTART【例5.2】某班學(xué)生的英語成績按學(xué)號(hào)〔從1開場(chǎng)〕從小到大的順序排列在TAB表中,要查的學(xué)生的學(xué)號(hào)放在變量NO中,查表結(jié)果放在變量ENGLISH中。編寫程序如下:STACKSEGMENTSTACK DB 200DUP〔0〕STACKENDSDATASEGMENT TAB DB80,85,86,71,79,96 DB83,56,32,66,78,84 NO DB10 ENGLIST DBDATAENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODEBEGIN:MOV AX,DATA MOV DS,AX LEA BX,TAB MOV AL,NO DEL AL XLAT TAB MOV ENGLISH,AL MOV AH,4CH INT 21HCODE ENDS END BEGIN【例5.3】在內(nèi)存中有一個(gè)字節(jié)單元NUM,存有帶符號(hào)數(shù)據(jù),要求計(jì)算出它的絕對(duì)值后,放入RESULT單元中。題目分析:根據(jù)數(shù)學(xué)中絕對(duì)值的概念知道,一個(gè)正數(shù)的絕對(duì)值是它本身,而一個(gè)負(fù)數(shù)的絕對(duì)值是它的相反數(shù);要計(jì)算一個(gè)數(shù)的相反數(shù),需要完成減法運(yùn)算,即用0減去這個(gè)數(shù)。8086/8088指令系統(tǒng)中有專門的求相反數(shù)的指令NEG。DATA SEGMENT X DB-25 RESULT DB?DATA ENDSCODE SEGMENT ASSUMEDS:DATA,CS:CODESTART: MOV AX,DATA MOV DS,AX ;初始化 MOV AL,X ;X取到AL中TESTAL,80H ;測(cè)試AL正負(fù) JZNEXT ;為正,轉(zhuǎn)NEXT NEGAL ;否則AL求補(bǔ)NEXT: MOV RESULT,AL ;送結(jié)果 MOV AH,4CH INT 21H ;返回DOSCODE ENDSEND START 【例5.4】編寫計(jì)算下面函數(shù)值的程序: 1 X>0Y= 0 X=0 -1 X<0設(shè)輸入數(shù)據(jù)為X、輸出數(shù)據(jù)Y,且皆為字節(jié)變量。程序流程圖如以下列圖所示。 DATASEGMENTXDB-25YDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX ;初始化MOVAL,X ;X取到AL中CMP AL,0 ;Al中內(nèi)容和0比擬 JGE BIG ;大于等于0,轉(zhuǎn)BIG MOV BL,-1 ;否則為負(fù)數(shù),-1送BL JMP EXIT ;轉(zhuǎn)到完畢位置BIG:JE EE ;Al中內(nèi)容是否為0,為0轉(zhuǎn)EE MOV BL,1 ;否則為大于0,1送BL JMP EXIT ;轉(zhuǎn)到完畢位置EE:MOV BL,0 ;0送BLEXIT:MOVY,BL ;BL中內(nèi)容送Y單元MOVAH,4CHINT21H ;程序完畢CODEENDSENDSTART ;匯編完畢【例5.5】試編一程序,求三個(gè)帶符號(hào)字?jǐn)?shù)據(jù)中的最大值,并將最大值存入MAX字單元中。 設(shè)三個(gè)帶符號(hào)數(shù)分別在三個(gè)字變量X、Y、Z中存儲(chǔ)。程序流程圖如以下列圖所示 STACK SEGMENTSTACK DB200DUP〔0〕STACK ENDSDATA SEGMENTX DW00ABHY DW–5Z DW200MAX DWDATA ENDSCODE SEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART: MOV AX,DATA MOV DS,AX MOV AX,X CMP AX,Y ;X>Y JG L1 MOV AX,Y ;Y>Z CMP AX,Z JG EXITL2: MOV AX,Z JMP EXITL1: CMP AX,Z ;X>Z JLE L2EXIT: MOV MAX,AX MOV AH,4CH INT 21HCODE ENDS END START【例5.6】設(shè)某程序有8路分支,試根據(jù)給定的N值〔1~8〕,將程序的執(zhí)行轉(zhuǎn)移到其中的一路分支。程序流程如圖下所示。DATA SEGMENTTAB DWP1,P2,P3,P4,P5,P6,P7,P8N DB5DATA ENDSSTACK SEGMENT DB200DUP〔0〕STACK ENDSCODE SEGMENT ASSUMEDS:DATA,SS:STACK,CS:CODESTART: MOV AX,DATA MOV DS,AX ┆ MOV AL,N DEL AL ADD AL,AL MOV BL,AL MOV BH,0 JMP TAB[BX]P1: …… ┆ JMP EXITP2: …… ┆ JMP EXITP2: …… ┆ JMP EXITP3: …… ┆JMP EXIT ┆P8: …… ┆EXIT: MOV AH,4CH INT 21HCODE ENDS END START【例5.7】有幾個(gè)元素存放在以BUF為首址的字節(jié)存貯區(qū)中,試統(tǒng)計(jì)其中正元素的個(gè)數(shù)。 顯然,每個(gè)元素為一個(gè)8位有符號(hào)二進(jìn)制數(shù),統(tǒng)計(jì)其中正元素的個(gè)數(shù)可用循環(huán)程序?qū)崿F(xiàn)。其程序流程圖如以下列圖所示。例5.8】編寫程序完成求1+2+3+……N的累加和,直到累加和超過1000為止。統(tǒng)計(jì)被累加的自然數(shù)的個(gè)數(shù)送CN單元,累加和送SUM。流程圖如以下列圖所示。 DATA SEGMENT SUMDW? CNDW?DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX ;初始化 MOVAX,0 ;0送AXMOVBX,0 ;0送BXLP: INCBX ;BX加1 ADDAX,BX ;求累加和 CMPAX,1000 ;比擬 JBELP ;≤1000轉(zhuǎn) MOVSUM,AX MOVCN,BX ;送結(jié)果 MOVAH,4CH INT21H ;返回DOSCODE ENDS ENDSTART ;匯編完畢【例5.9】在以BUF為首址的字存儲(chǔ)區(qū)中存放有N個(gè)有符號(hào)數(shù),現(xiàn)需將它們按大到小的順序排列在BUF存儲(chǔ)區(qū)中,試編寫其程序。我們采用冒泡排序算法從第一個(gè)數(shù)開場(chǎng)依次對(duì)相鄰兩個(gè)數(shù)進(jìn)展比擬,如次序?qū)?,則不交換兩數(shù)位置;如次序不對(duì)則使這兩個(gè)數(shù)交換位置??梢钥闯?,第一遍需比擬〔N-1〕次,此時(shí),最小的數(shù)已經(jīng)放到了最后;第二遍比擬只需考慮剩下的〔N-1〕個(gè)數(shù),即只需比擬〔N-2〕次;第三遍只需比擬〔N-3〕次,……整個(gè)排序過程最多需〔N-1〕遍。如下面的4個(gè)數(shù)即是采用冒泡排序比擬的例子。數(shù) 10 8 16 90 32第一遍 10 16 90 32 8第二遍 16 90 32 10 8第三遍 90 32 16 10 8程序流程圖如圖5.9所示。DATA SEGMENTBUF DW3,-4,6,7,9,2,0,-8,-9,-10,20 N=〔$-BUF〕/2DATA ENDSSTACK SEGNMENTSTACK DB200DUP〔0〕STACK ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV CX,N DEC CXLOOP1: MOV DX,CX MOV BX,0LOOP2: MOV AX,BUF[BX] CMP AX,BUF[BX+2] JGE L XCHG AX,BUF[BX+2] MOV BUF[BX],AXL: ADD BX,2 DEC CX JNE LOOP2 MOV CX,DX LOOP LOOP1 MOV AH,4CH INT 21HCODE ENDS END START程序運(yùn)行后,BUF區(qū)中的內(nèi)容如下:20,9,7,6,3,2,0,-4,-8,-9,-10假設(shè)要對(duì)N個(gè)無符號(hào)數(shù)按由大到小的順序排列,只需將指令“JGEL〞改為“JAEL〞即可。【例5.10】將一個(gè)給定的二進(jìn)制數(shù)按位轉(zhuǎn)換成相應(yīng)的ASCII碼字符串,送到指定的存儲(chǔ)單元并顯示。如二進(jìn)制數(shù)10010011轉(zhuǎn)換成字符串為‘10010011’。要求將轉(zhuǎn)換過程寫成子程序,且子程序應(yīng)具有較好的通用性,而必須能實(shí)現(xiàn)對(duì)8倍和16倍二進(jìn)制數(shù)的轉(zhuǎn)換。入口參數(shù): DX存放待轉(zhuǎn)換的二進(jìn)制數(shù) CX存放待轉(zhuǎn)換數(shù)的位數(shù)〔8位或16位〕 DI存放ASCII碼首地址出口參數(shù): 轉(zhuǎn)換后的字符串存放在以DI作指針的字節(jié)存貯區(qū)中程序清單:DATA SEGMENT NUM8 DB 93H NUM16 DW 0ABCDH ASCBUF DB 20 DUP〔0〕DATA ENDSCODE SEGMENT ASSUMEDS:DATA,CS:CODE,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV DX,0 MOV DL,NUM8 ;轉(zhuǎn)換二進(jìn)制數(shù)送DX MOV CX,8 ;置位數(shù)8 LEA DI,ASCBUF ;字符串首址→DI CALL BTASC ;調(diào)用子程序BTASC MOV [DI],BYTEPTR0DH MOV [DI+1],BYTEPTR0AHMOV [DI+2],BYTEPTR‘$’ LEA DX,ASCBUF MOV AH,9 INT 21H MOV DX,NUM16 MOV CX,16 ;置位數(shù)16 LEA DI,ASCBUF CALL BTASCMOV [DL],BYTEPTR0DH MOV [DL+1],BYTEPTR0AH MOV [DL+2],BYTEPTR‘$

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論