微型計(jì)算機(jī)原理與接口技術(shù)_第1頁
微型計(jì)算機(jī)原理與接口技術(shù)_第2頁
微型計(jì)算機(jī)原理與接口技術(shù)_第3頁
微型計(jì)算機(jī)原理與接口技術(shù)_第4頁
微型計(jì)算機(jī)原理與接口技術(shù)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

4.9練習(xí)題10、寫一個(gè)宏定義,要求能把任意一個(gè)寄存器的最低位移至另一個(gè)存儲(chǔ)器的最高位中。DATASEGMENTXTYMACRO :VARIDB 4,6MOVAX,XVAR2DD 200DUP(?)ANDAX,1DATAENDSRORAX,1MOVYAXSTACKSSEGMENTENDMMOVDX,1STACKSENDSMOVAX,0XTYDX,AX,CODESSEGMENTMOVAH,4CHASSUME CS:CODES,DS:DATA,SS:STACKSINT21HSTART:CODESENDSMOVAX,DATAENDSTARTMOVDS,AX11、利用DOS功能調(diào)用從鍵盤輸入60個(gè)字符到緩沖區(qū)BUF中.在按下ENTER鍵后在屏幕上顯示這些字符。請(qǐng)寫出程序段。DATASEGMENTMOV[SI],ALSTIDB'Pleaseinput60charactersfromCMPAL,0DHkeyboard.',0DH,0AH,寫JZEXITBUFDB61DUP(?)INCSIDATAENDSLOOPLPCODSEGMENTEXIT:ASSUMECS:COD,DS:DATAMOVBX,60START:SUBBX,CXMOVAX,DATAMOVCX,BXMOVDS,AXLEASI,BUFMOVDLz07HLP2:MOVAH,2MOVDLJSI]INT21HMOVAH,6MOVDX,OFFSETSTIINT21HMOVAH,9INCSIINT21HLOOPLP2LEASI,BUFMOVAH,4CHMOVCX,60INT21HLP:CODENDSMOVAH,7ENDSTARTINT21H

12、試寫一段程序,要求先給出一聲鈴響提示,屏幕上顯示:^Pleaseinputaalphabets,然后從鍵盤輸入一個(gè)字母送BLODATASSEGMENTINT21HSTIDB'PleaseInputaMOVDX,OFFSETSTIalphabet:RDH,OAH「$‘MOVAH,9ST2DB ?INT21HDATASENDSMOVAH,1CODESSEGMENTINT21HASSUMECS:CODES,DS:DATASMOVBL,ALSTART:MOVAH,4CHMOV AX,DATASINT21HMOV DS,AXCODESENDSMOV DLZ7MOV AH,2ENDSTART第五章匯編語言程序設(shè)計(jì)例5.1:試用8086CPU的指令實(shí)現(xiàn)Y=(XI+X2J/2的程序設(shè)計(jì)。DATASSEGMENTMOVDS,AXXIDB34HMOVAX,0X2DB89HMOVAL,X1YDW.MOVBL,X2DATASENDSADDAL,BLADCAH,0STACKSSEGMENTSARAX,1STACKSENDSMOV[Y],AXCODESSEGMENTMOVAH,4CHASSUMECS:CODES,DS:DATAS,SS:STACKSINT21HSTART:CODESENDSMOVAX,DATASENDSTART例5.1(老書):編制實(shí)現(xiàn)兩個(gè)三十二位數(shù)相乘的程序。DATASEGMENTDW4DUP(?)MULNUMDW1234HDATAENDSDW0B8FDHDW0DFE6HCODSEGMENTDW78FFHASSUMECS:COD,DS:DATA

START:MULSI ;A*DMOVAX,DATAADDAX,[BX+OAH]MOVDS,AXADCDXJBX+OCH]XORAX,AXPUSHFLEABX,MULNUMMOVAXJBX+OAH]MUL32:MOVDXJBX+OCH]MOVAX,[BX]XORAX,AXMOVSIJBX+4]XORDX,DXMOVDIJBX+6]MOVAXJBX+2]MULSI ;B*dMULDI ;A*CMOV[BX+8],AXPOPFMOV[BX+OAH],DXADCAXJBX+OCH]MULDI ;B*CADCDX,0ADDAX,[BX+OAH]MOV[BX+OCH],AXADCDX,0MOV[BX+OEH],DXMOV[BX+OAH],AXXORAX,AXMOV[BX+OCH],DXMOVAH,4CHXORAX,AXINT21HXORDX,DXCODENDSMOVAXJBX+2]ENDSTART例5.2:將一位十六進(jìn)制數(shù)轉(zhuǎn)換成與它相對(duì)應(yīng)的ASCII碼。DATASSEGMENTSTART:TABMOVAX,DATASDBMOVDS,AX30H31H,32H,33H,34H,35H,36H,37HMOVBX,OFFSETTABDBMOVAL,HEX38H,39H,41H,42H,43H,44H,45H,46HXLATHEXDB 8MOVASC,ALASCDB ?MOVAX,4C00HDATASENDSINT21HCODESENDSCODESSEGMENTENDSTARTASSUMECS:CODES,DS:DATAS統(tǒng)計(jì)出優(yōu)秀、及格和不及格的人數(shù)。例5.3:要求對(duì)不足250個(gè)的學(xué)生成績進(jìn)行統(tǒng)計(jì)分析,統(tǒng)計(jì)出優(yōu)秀、及格和不及格的人數(shù)。DATASSEGMENTBUFDB 15CODESSEGMENTDBASSUMECS:CODES,DS:DATAS,SS:STACKS64,78,89,55,69,98,45,67,96,99,92,89,85,91,45START:NUMDB 3DUP(?)MOVAX,DATASDATASENDSMOVDS,AX

MOVSLOFFSETBUFMOV[SI+1],BLMOVCH,[SI]MOV[SI+2],CLMOVCL,0MOVAH,4CHMOVBX,0INT21HINCSIBLOW90:LP:CMPAH,60MOVAH,[SI]JBBLOW60CMPAH,90JMPABOV60JBBLOW90ABOV60:INCBHINCBLNEXT:JMPNEXTINCSIBLOW60:DECCHINCCLJNZLPJMPNEXTMOVSLOFFSETNUMCODES1ENDSMOV[SI],BHENDSTART例5-5利用表內(nèi)地址跳轉(zhuǎn)法來實(shí)現(xiàn)使鍵盤上A、之分別對(duì)應(yīng)4個(gè)具有不同算法的控制子程序。B、C、D4個(gè)字母鍵成為4DATASSEGMENTMOVAH,1BASEDB ,paI;pb,;pc,;pd,INT21HKEYDB ?CMPAL,41HDATASENDSJBCMPLOPAL,44HSTACKSSEGMENTJALOPSTACKSENDSSUBMOVAL,41HBX,OFFSETKEYCODESSEGMENTMOVAH,0ASSUME CS:CODES,DS:DATAS,SS:STACKSADDBX,AXSTART:JMPWORDPTR[BX]MOVAX,DATASMOVAH,4CHMOVDS,AXINT21HLOP:CODES1ENDSXORAX,AXENDSTART例5-6:試編寫一程序,統(tǒng)計(jì)出某一字?jǐn)?shù)據(jù)中“1"的個(gè)數(shù)。DATSEGMENTASSUMECS:COD,DS:DATXDADW 3AD8HSTART:CONTDB ?MOVAX,DATDATENDSMOVMOVDS,AXCL,0COD!SEGMENTMOVAX,XDA條輸入命令,使

LOP:JMPLOPCMPAX,0EXIT:JZEXITMOVCONT,CLSHLAX,1INT20HJNCNEXTCODENDSINCCLENDSTARTNEXT:例5-7:編寫程序?qū)蓚€(gè)n字節(jié)的無符號(hào)數(shù)相加,結(jié)果存入SUM開始的n+l字節(jié)存儲(chǔ)區(qū)中。DATSEGMENTLEADI,SUMDAT1DBMOVCX,712H,34H,56H,71H,23H,45H,67HCLCDAT2DBLP:76H,54H,32H,17H,65H,43H,21HMOVAL,[SI]SUMDB8DUP(?)ADCALJBX]DATENDSMOV[DI],ALINCBXCODSEGMENTINCSIASSUMECS:COD,DS:DATINCDISTART:LOOPLPMOVAX,DATADCBYTEPTR[DI],0MOVDS,AXMOVAH,4CHXORAX,AXINT21HMOVBX,OFFSETDAT1CODENDSMOVSI,OFFSETDAT2ENDSTART例5-8:編制程序用單字符輸出的DOS功能調(diào)用向屏幕輸出以〃%〃結(jié)束的字符串。DATSEGMENTCMPDL;%1STIDB'Howareyou?%'JZENDOUTDATENDSMOVAH,2INT21HCODSEGMENTINCSIASSUMECS:COD,DS:DATJMPAGAINSTART:ENDOUT:MOVAX,DATMOVAH,4CHMOVDS,AXINT21HLEASI,STICODENDSAGAIN:ENDSTARTMOVDL[SI]例5.9:設(shè)有16個(gè)內(nèi)存單元需要修改,修改規(guī)律是第1、3、6、9、12號(hào)單元均加5,其余單元均加10,試用循環(huán)結(jié)構(gòu)變成實(shí)現(xiàn)。

DATASSEGMENTMOVAX,BX[SI]XDADB 16DUP(?)SHLDX,1LRULERDW 0A490HJCADD5DATASENDSADDAX,10JMPSHORTRESULTCODESSEGMENTADD5:ASSUMECS:CODES,DS:DATASADDAX,5START:RESULT:MOVAX,DATASMOVBX[SI],AXMOVDS,AXINCSIMOVSI,0LOOPAGAINMOVCX,16MOVAH,4CHMOVBX,OFFSETXDAINT21HMOVDX,LRULERCODESENDSAGAIN:ENDSTART例5-10::設(shè)某一數(shù)組的長度為N,各元素均為字?jǐn)?shù)據(jù),試編制一個(gè)程序使該數(shù)組中的數(shù)據(jù)按照從小到大的次序排列。DATASSEGMENTMOVALDATIBX]DATDBCMPAL,DAT[BX+1]25,68,86,98,34,67,12,4,49,27JBECONTIDATASENDSXCHGAL,DAT[BX+1]MOVDAT[BX],ALCODESSEGMENTCONTI:ASSUMECS:CODES,DS:DATASADDBX,1START:LOOPL0P2MOVAX,DATASMOVCX,DXMOVDS,AXMOVBX,0MOVBX,0LOOPL0P1MOVCX,10MOVAH,4CHDECCXINT21HL0P1:CODESENDSMOVDX,CXENDSTARTL0P2:例5-11:定義一個(gè)顯小的個(gè)十六進(jìn)制數(shù)的子程序:DATASSEGMENTSTART:BUFDB 12HMOVAX,DATASDATASENDSMOVDS,AXCODESSEGMENTLEASI,BUFASSUMECS:CODES,DS:DATASMOVBL,[SI]

CALLDISPPRETMOVAH,4CHDISPPENDPINT21HDISP1PROC NEARDISPPPROC NEARORDL,30HPUSHDXCMPDL3AHPUSHCXJBDDDMOVDL,BLADDDL,07HMOVCL,4DDD:ROLDL,CLMOVAH,2ANDDLOFHINT21HCALLDISP1RETMOVDL,BLDISP1ENDPANDCALLDLOFHDISP1CODESENDSPOPCXENDSTARTPOP例5-12DATASDX:編制顯示四位十六進(jìn)制數(shù)的子程序。SEGMENTPOPBXBUFDW 1234HRETDATASENDSDISP4ENDPCODESSEGMENTDISP2MOVPROC NEARBL,ALASSUME CS:CODES,DS:DATAS,SS:STACKSMOVDL,ALSTART:MOVCL,4MOVAX,DATASROLDL,CLMOVDS,AXANDDL,OFHLEASI,BUFCALLDISP1MOVAX,[SI]MOVDL,BLCALLDISP4ANDDL,OFHMOVAH,4CHCALLDISP1INT21HRETDISP4PROC NEARDISP2ENDPPUSHBXDISP1PROCPUSHCXORDL,30HPUSHDXCMPDL3AHPUSHAXJBDDDMOVAL,AHADDDL,07HCALLDISP2DDD:POPAXMOVAH,2CALLDISP2INT21HPOPDXRETPOPCXDISP1ENDP

CODESENDSENDSTARTCODESENDS例5-13:已知數(shù)組由100個(gè)字?jǐn)?shù)據(jù)組成,試變成求出這個(gè)數(shù)組元素之和。DATASSEGMENTXORAX,AXARYDW 25MOVDX,AXDUP(12H,5DH,3CH,7AH)CL1:SUMDW ?ADDAX,[BX]DATASENDSJNCCL2INCDXCODESSEGMENTCL2:ASSUME CS:CODES,DS:DATAS,SS:STACKSADDBX,2START:LOOPCL1MOVAX,DATASMOVSUM,AXMOVDS,AXMOVSUM+ZDXCALLRADDPOPDXMOVAH,4CHPOPCXINT21HPOPBXRADDPROC NEARPOPAXPUSHAXRETPUSHBXRADDENDPPUSHCXCODESENDSPUSHDXENDSTARTLEABX,ARYMOVCX,100例5-14:已知數(shù)組A由100個(gè)字?jǐn)?shù)據(jù)組成,數(shù)組B由50個(gè)字?jǐn)?shù)據(jù)組成,試編程分別求出這兩個(gè)數(shù)組元素之和。DATASSEGMENTMOVDS,AXCADW 100MOVAX,OFFSETCAARADW20DUP(34H,5FH,8DH,4AH,9BH)MOVTAB,AXSADD ?MOVAX,OFFSETARACBDW 50MOVTAB[2],AXARBDW 10MOVAX,OFFSETSADUP(3DH,4CH,2EH,88H,1CH)MOVTAB[4],AXSBDD ?MOVSI,OFFSETTABTABDW 3DUP(?)CALLRADDDATASENDSMOVMOVAX,OFFSETCBTAB,AXCODESSEGMENTMOVAX,OFFSETARBASSUME CS:CODES,DS:DATAS,SS:STACKSMOVTAB[2],AXSTART:MOVAX,OFFSETSBMOV AX,DATASMOVTAB[4],AX

MOVSI,OFFSETTABADDAX,[BX]CALLRADDJNCCL2MOVAH,4CHINCDXINT21HCL2:RADDPROCNEARADDBX,2MOVBX,[SI]LOOPCL1MOVCX,[BX]MOV[DI],AXMOVBXJSI+2]MOV[DI+2],DXMOVDI,[SIM]RETXORAX,AXRADDENDPMOVDX,AXCODESENDSCL1:ENDSTART5.8練習(xí)題(新書)3、編程題試編寫一程序,把數(shù)組STRING中存放的20個(gè)8位二進(jìn)制數(shù)分成正整數(shù)組和負(fù)數(shù)數(shù)組,并統(tǒng)計(jì)正數(shù)、負(fù)數(shù)和零的個(gè)數(shù),結(jié)果分別存放到P、M、Z三個(gè)單元。DATSEGMENTMOVAX,[BX]STRINGDW2PUSHAXDUP(3045H,0FD34H,0D3DH,9899H,0,3DF2H,ADDAX,AX0,0FFDEH,93FDH,0DE6CH)JZLIPDW20DUP(?)POPAXMDW20DUP(?)PUSHAXZDW20DUP(?)SALAX,1DATENDSJCL2POPAXCODSEGMENTMOV[SI],AXASSUMECS:COD,DS:DATADDSI,2START:JMPLAMOVAX,DATLA:MOVDS,AXADDBXZ2XORBP,BPLOOPLLLEASI,P ;正數(shù)XORex,exLEADI,M ,?負(fù)數(shù)MOVCX,2LEABP,Z ;零POPAXPUSHSIMOVDX,BPPUSHDISUBDX,AXPUSHBPSHRDX,CLLEABX,STRINGMOV[BP],DXMOVCX,20POPAXLL:MOVDX,DI

SUBDX,AXPOPAXSHRDX,CLMOV[BP],/MOV[DI],DXADDBP,2POPAXJMPLAMOVDX,SIL2:SUBDX,AXPOPAXSHRDX,CLMOV[DI]MOV[SI],DXADDDl,2MOVAH,4CHJMPLAINT21HCODENDSLI:ENDSTART累加結(jié)果以分離式BCD碼形式存放(2)試編寫一個(gè)程序,完成10個(gè)一位十進(jìn)制數(shù)累加,累加結(jié)果以分離式BCD碼形式存放于AH(高位),AL(低位)寄存器。DATSEGMENTXORAX,AXDIDB 2,3,4,5,6,7,83,4,5MOVCX,10D2DB ?LI:DATENDSADDAL,[SI]AAACODSEGMENTINCSIASSUMECS:COD,DS:DATLOOPLISTART:MOVAH,4CHMOVAX,DATINT21HMOVDS,AXCODENDSLEASI,DIENDSTART(3)試編寫一程序.將2個(gè)字節(jié)的二進(jìn)制數(shù).變換成用ASCII碼表示的四位十六進(jìn)制書(用四字節(jié)表示)。DATASSEGMENTLEADI,BUFTABDBMOVCX,441H,42H,43H,44H,45H,46HLP1:BINDB,1101101110011110,MOVAXJSI+2]BUFDB4DUP(?)PUSHexDATAS1ENDSXORex,exMOVCL,8CODESSEGMENTRORAX,CLASSUMECS:CODES,DS:DATASSUBAX3030HSTART:MOVDX,[SI]MOVAX,DATASRORDX,CLMOVDS,AXSUBDX3030HLEABXJABSHLAH,1LEASI,BINADDAH,AL

MOVCL,2ADDDllSHLDL,CLADDSI,4MOVCL,3POPexSHLDH,CLLOOPLP1ADCDH,DLMOVAH,4CHADCAH,DHINT21HCMPAH,0AHLP2:JBLP2ADDAH30HSUBAH,0AHMOVAL,AHMOVAL,AHJMPLP3XLATCODESENDSLP3:ENDSTARTMOV[DI],AL(6)編寫一個(gè)程序,計(jì)算100個(gè)16位正整數(shù)之和,如果和不超過16位字的范圍(0-65535),則保存其和到SUM,如果超過則顯示"OVERFLOW!!七DATSEGMENTLI:DAT1DW25DUPADDAX,[SI](2D4EH,5611H,1234H,7891H)JCDISPBUFDW?LOOPLISTR1DB'overflow!!',0DH,0AH,'$'MOV[BX],AXDATENDSMOVAH,4CHINT21HCODSEGMENTDISPPROC NEARASSUMECS:COD,DS:DATMOVDX,OFFSETSTR1START:MOVAH,9MOVAX,DATINT21HMOVDS,AXMOVAH,4CHMOVSLOFFSETDAT1INT21HMOVBX,OFFSETBUFDISPENDPMOVcx,iooCODENDSXORAX,AXENDSTART5.8練習(xí)題(老書)試編寫一個(gè)匯編程序,要求實(shí)現(xiàn)將ASCII碼表示的兩位十進(jìn)制數(shù)轉(zhuǎn)換為一字節(jié)二進(jìn)制數(shù)。DATASEGMENTCODESEGMENTASCDB32H,38HASSUMECS:CODE,DS:DATAASCENDDB.MAINPROC FARDATAENDSSTART:MOV AX,DATA

MOVDS,AXCMPDL,39HXORBX,BXJGEXITMOVBX,OFFSETASCSUBDL30HMOVAX,0MOVCL,4MOVAL,[BX]SHLDL,CLCMPAL,30HADDAL,DLJLEXITMOVASCEND,ALCMPAL,39HEXIT:JGEXITMOVAH,4CHSUBAL30HINT21HMOVDLJBX+1]MAINENDPCMPDL30HCODEENDSJLEXITENDSTART某存儲(chǔ)區(qū)中存有20個(gè)單字節(jié)數(shù),試編寫一匯編程序分別求出其絕對(duì)值并且將結(jié)果保存到CL中。DAT1SEGMENTMOVSLOFFSETMUMMUMDBLP1:L23?907,5,?4,?7,?1L34,?67,?44,?5LL3,6,8,MOVAL,[SI]9,3ANDAL,ALDAT1ENDSJNSDONENEGALCODSEGMENTDONE:ASSUMECS:COD,DS:DAT1MOV[SI],ALSTARTPROC FARINCSIPUSHDSLOOPLP1XORAX,AXMOVAH,4CHPUSHAXINT21HMOVAX,DAT1STARTENDPMOVDS,AXCODENDSMOVCX,20ENDSTART試編寫一匯編程序,將AX中各位取反,然后統(tǒng)計(jì)出AX中的個(gè)數(shù),將結(jié)果保存到CL中。DATASEGMENTMOVCL,16DATAENDSNOTAXCODESEGMENTRETEST:MAINPROC FARANDAX,AXASSUMECS:CODE,DS:DATAJSSKIPSTART:INCDLMOVAX,0E001HSKIP:MOVDL,0SHLAX,1

LOOPRETESTINT21HMOVCL,DLMAINENDPEXIT:CODEENDSMOVAH,4CHENDSTART(12)已知al~a20依次存放在以BUF為首地址的數(shù)據(jù)區(qū).每個(gè)數(shù)據(jù)占兩個(gè)字節(jié),SUM也是兩個(gè)字節(jié)。試編程計(jì)算SUM=魚+也+……+也。。DATASEGMENTMOVCX,20DATDWCLC1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,1LP1:9,20ADCAXJSI]SUMDW ?INCSIDATAENDSINCSICODESEGMENTLOOPLP1MAINPROC FARMOVSUM,AXASSUMECS:CODE,DS:DATAMOVAH,4CHSTART:INT21HMOVAX,DATAMAINENDPMOVDS,AXCODEENDSMOVAX,0ENDSTARTMOVSLOFFSETDAT(14)編一個(gè)子程序,計(jì)算f(t)=at3+bt1+ct+do設(shè)a,b,c,d,t均為一位十進(jìn)制數(shù),結(jié)果存入RESULT單元。DATASEGMENTMOVAX,BXADB1MULBXBDB2

溫馨提示

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