![四川大學(xué)微機(jī)原理實(shí)驗(yàn)報告_第1頁](http://file4.renrendoc.com/view/83dd07a514465c5392218cad644a9ede/83dd07a514465c5392218cad644a9ede1.gif)
![四川大學(xué)微機(jī)原理實(shí)驗(yàn)報告_第2頁](http://file4.renrendoc.com/view/83dd07a514465c5392218cad644a9ede/83dd07a514465c5392218cad644a9ede2.gif)
![四川大學(xué)微機(jī)原理實(shí)驗(yàn)報告_第3頁](http://file4.renrendoc.com/view/83dd07a514465c5392218cad644a9ede/83dd07a514465c5392218cad644a9ede3.gif)
![四川大學(xué)微機(jī)原理實(shí)驗(yàn)報告_第4頁](http://file4.renrendoc.com/view/83dd07a514465c5392218cad644a9ede/83dd07a514465c5392218cad644a9ede4.gif)
![四川大學(xué)微機(jī)原理實(shí)驗(yàn)報告_第5頁](http://file4.renrendoc.com/view/83dd07a514465c5392218cad644a9ede/83dd07a514465c5392218cad644a9ede5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
微機(jī)原理實(shí)驗(yàn)報告學(xué) 院:專業(yè)班級:姓 名學(xué) 號實(shí)驗(yàn)一 匯編語言編程基礎(chǔ)1.3匯編語言程序上機(jī)操作和調(diào)試訓(xùn)練一.功能說明運(yùn)用8086匯編語言,編輯多字節(jié)非壓縮型 BCD數(shù)除法的簡單程序,文件名取為*.ASM。運(yùn)用MASM﹒EXE文件進(jìn)行匯編,修改程序中的各種語法錯誤,直至正確, 形成*.OBJ文件。運(yùn)用LINK.EXE文件進(jìn)行連接,形成*.EXE文件。仔細(xì)閱讀和體會 DEBUG調(diào)試方法,掌握各種命令的使用方法。運(yùn)用DEBUG。EXE文件進(jìn)行調(diào)試,使用單步執(zhí)行命令—T兩次,觀察寄存器中內(nèi)容的變化,使用察看存儲器數(shù)據(jù)段命令—D,觀察存儲器數(shù)據(jù)段內(nèi)數(shù)值。再使用連續(xù)執(zhí)行命令—G,執(zhí)行程序,檢查結(jié)果是否正確,若不正確可使用DEBUG的設(shè)置斷點(diǎn),單步執(zhí)行等功能發(fā)現(xiàn)錯誤所在并加以改正。二.程序流程圖設(shè)置被除數(shù)、商的地址指針設(shè)置單位除法次數(shù)計數(shù)器取被除數(shù)一位作十進(jìn)制調(diào)整作字節(jié)除法、存商N(yùn)
被除數(shù)各位已除完?Y顯示運(yùn)算結(jié)果結(jié)束三.程序代碼修改后的程序代碼如下:DATADATA
SEGMENTADBBDBCDBNEQUENDS
9,6,8,7,555DUP(0)5CODE SEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXCLDLEA SI,ALEA DI,CMOVCX,NMOVAH,0LP1: LODSBAADDIV BSTOSBLOOPLP1MOVCX,NLEADI,CLP2: MOVDL,[DI]ADDDL,30HMOVAH,2INT21HINCDILOOPLP2MOVAH,4CHINT21HCODEENDSEND START四.實(shí)驗(yàn)感想和收獲通過這次試驗(yàn),我對微機(jī)原理上級試驗(yàn)環(huán)境有了初步的認(rèn)識,可以較為熟練地對匯編語言進(jìn)行編譯,匯編及連接,同時也學(xué)會了用DEBUG調(diào)試程序,收獲很大。在這次試驗(yàn)中我也遇到了一些困難。在剛開始我發(fā)現(xiàn)自己無法打開MASM.EXE,計算機(jī)提示是由于版本不兼容。我這才想起來我的操作系統(tǒng)是64位的,和該軟件版本不兼容。不過我并沒有放棄,經(jīng)過我的摸索之后,我發(fā)現(xiàn)用DOSBOX這個程序可以解決我的電腦運(yùn)行不了該程序的問題。在解決了第一個難題后,我開始著手改正試驗(yàn) 1.3中的語法錯誤和邏輯錯誤,但是無論我怎么修改卻始終都無法通過編譯,并且基本上每句話都有編譯錯誤。 根據(jù)我多年編程的經(jīng)驗(yàn)來看,這應(yīng)該是中文輸入法在搞鬼, 之后我耐心地把程序重新輸了一遍, 果然通過了編譯,并且之后的連接也進(jìn)行的很順利。 在用DEBUG調(diào)試時發(fā)現(xiàn)得出的結(jié)果也很正確。盡管這次的實(shí)驗(yàn)內(nèi)容非常簡單,僅僅是教會我們一些基本的操作,但我卻明顯感覺到了匯編語言和C語言等高級語言所不同的地方。越是底層,基礎(chǔ)的東西就越不人性化,用C語言一行代碼就能實(shí)驗(yàn)的功能在匯編語言中可能要花上數(shù)十行??磥韰R編語言的學(xué)習(xí)不是幾周就能速成的,必須要有長年累月的積淀才能掌握。實(shí)驗(yàn)二設(shè)計匯編語言程序一.功能說明練習(xí)1.實(shí)驗(yàn)題目:編程計算下列表達(dá)式:A=90,B=-70,C=5,Y均為有符號數(shù),計算Y=2×(A+B)+(A×C)÷5要編寫一些稍微復(fù)雜的程序,我們會遇到一段程序被反復(fù)執(zhí)行,這樣,我們會用到LOOP指令。使用該指令時,需在CX中裝入循環(huán)次數(shù)。練習(xí)2.碼轉(zhuǎn)換程序設(shè)計編制程序,把十進(jìn)制數(shù)15786轉(zhuǎn)化成二進(jìn)制數(shù)。提示:15786=1×10×10×10×10+5×103+7×102+8×10+6,循環(huán)CX=5練習(xí)3.編制程序,從鍵盤輸入最多5個數(shù),求他們的和,存入SUM。練習(xí)4.用“冒泡“法對一組數(shù)300,250,280,240,260,按從小到大的順序排列。提示:用冒泡的方法對一組數(shù)據(jù)元素排序,它的基本方法是:將相鄰的兩個元素通過比較進(jìn)行排序,通過多次,多遍的鄰元素排序,實(shí)現(xiàn)整個一組數(shù)的排序。對于5(N)個元素,整個排序通過4遍(=N-1)鄰元素排序完成。每一遍的排序由若干次鄰元素的排序組成。4遍排序中,鄰元素的排序依次為4,3,2,1遍。完成第一遍排序后,最大數(shù)沉底,已經(jīng)到達(dá)它應(yīng)占據(jù)的位置,不需要參加下一遍的排序。外循環(huán)的次數(shù)為CX=4次(N-1),內(nèi)循環(huán)的次數(shù)為4,3,2,1(DECCX)排序遍數(shù)本遍排序前第一次排序第二次排序第三次排序第四次排序后后后后1300,250,280,250,300,280,250,280,300,250,280,240,250,280,240,240,260240,260240,260300,260260,3002250,280,240,250,280,240,250,240,280,250,240,260,260,300260,300260,300280,3003250,240,260,250,240,260,240,250,260,280,300280,300280,3004240,250,260,240,250,260,280,300280,300實(shí)驗(yàn)要求:編制程序,從鍵盤輸入300,250,280,240,260這五個數(shù),并思考如何輸入任意五個數(shù),五個數(shù)可以有一位數(shù),二位數(shù),三位數(shù),四位數(shù),五位數(shù),混合輸入比較大小;對這組數(shù)用冒泡法進(jìn)行排序,并輸出原始數(shù)據(jù)及排序后數(shù)據(jù),兩兩數(shù)據(jù)之間用空格分隔;利用DEBUG調(diào)試工具,用D0命令,查看排序前后,內(nèi)存數(shù)據(jù)的變化,以及會用調(diào)試命令查看程序運(yùn)算中寄存器中的值;去掉最大和最小的兩個值,求出其余值的平均值,并輸出最大值,最小值和平均值;5.用壓棧PUSH和出棧POP指令“先進(jìn)后出”的特點(diǎn),設(shè)計算法將平均值按位逐個輸出(即輸出263);6.用移位指令將平均值以二進(jìn)制串的形式輸出。7.設(shè)計程序要有模塊化的思想,用子程序?qū)崿F(xiàn)不同的功能;所有數(shù)據(jù)輸出前要用字符串的輸出指令,進(jìn)行輸出提示(如:zuidazhishi:300等),所有數(shù)據(jù)結(jié)果能清晰地顯示在電腦屏幕上。二.程序流程圖開始輸出 'QINGSHURU5GESHUJU'提示輸入數(shù)據(jù)輸入 5個待排序的數(shù)據(jù)輸出'PAIXUHOUDESHU JUSHUNXUSHI:'CX=4(外循環(huán))CX入棧指針指向第一個數(shù)比較相鄰兩數(shù)大小,前一個數(shù)比后一個?。縔NCX減1,指針指向下一個數(shù)NCX=0?Y外循環(huán) CX出桟并減 1CX=0?Y
N將這兩個數(shù)交換位置輸出排序后的五個數(shù)據(jù)輸出’ZUIDAZHISHI:’輸出第5個數(shù)即最大值輸出’ZUIXIAOZHISHI:’輸出第1個數(shù)即最小值輸出’PINGJUNZHISHI:’HE=0CX=3指針指向第二個數(shù)將其由ASCII碼轉(zhuǎn)換成2進(jìn)制數(shù)指針指向 HE=HE+該下一個數(shù) 二進(jìn)制數(shù)CX減1NCX=0?Y
將平均值按位轉(zhuǎn)換為ASCII碼逐個輸出輸出’PINGJUNZHIDEERJINZHICHUANSHUCHU:’設(shè)置CX=16,SI=0,數(shù)據(jù)段設(shè)置變量STR1DB16DUP(30H)將平均值(二進(jìn)制)帶進(jìn)位左移一位CF=0? N將[STR+SI]加1YN 將[STR+SI]對應(yīng)的字符輸出SI加1CX減1CX=0?YHE除以3得到平均值 結(jié)束三.程序代碼練習(xí)一:DATASEGMENTDB90DB-70DB5DW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBL,AMOVCL,BADDBL,CL;A+BMOVAL,02HIMULBL;2*(A+B)MOVBX,AXMOVAL,AMOVCL,CIMULCL;A*CIDIVCL;A*C/5ADDAX,BXMOVY,AXMOVAH,4CHINT21HCODEENDSENDSTART練習(xí)二:DATASEGMENTA DW15786DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,AMOVCX,16LEFT:TESTBX,8000HJNZL1MOVDL,'0'
;當(dāng)首位為1,執(zhí)行;輸出‘0’
L1MOVAH,02HINT21HSHL: SHLBX,1LOOPLEFTMOVAX,4CHINT21HL1: MOVDL,'1'
;輸出‘
1’MOVAH,02HINT21HJMPSHLCODE ENDSENDSTART運(yùn)行結(jié)果:練習(xí)三:DATASEGMENTSUM DW?HEHEDB?,?,?,?,?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,HEHEMOVBL,0MOVCX,5LOOP1:MOVAH,01HINT21HSUBAL,30HMOV[SI],ALINCSILOOPLOOP1MOVCX,5MOVAX,0SUBSI,5LOOP2:ADDAL,[SI]AAAINCSILOOPLOOP2MOVBX,AXMOVSUM,AXMOVDL,BHADDDL,30HMOVAH,2INT21HMOVDL,BLADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODE ENDSENDSTART運(yùn)行結(jié)果:冒泡排序法程序:DATASSEGMENTSHURUDB'QINGSHURU5GESHUJU',13,10,'$'SHU1DB4,?,3DUP(?)SHU2DB4,?,3DUP(?)SHU3DB4,?,3DUP(?)SHU4DB4,?,3DUP(?)SHU5DB4,?,3DUP(?)AVERDB3DUP(?)SHUCHUDB'PAIXUHOUDESHUJUSHUNXUSHI',':','$'MAXDB'ZUIDAZHISHI',':','$'MINDB'ZUIXIAOZHISHI',':','$'AVERAGEDB'PINGJUNZHISHI',':','$'CHUSHUDB100,10HEDW?STR1DB16DUP(30H)STR2DB'PINGJUNZHIDEERJINZHICHUANSHUCHU',':','$'DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART: MOVAX,DATASMOVDS,AXMOVES,AXLEADX,SHURU; 顯示QINGSHURU5GESHUJU:MOVAH,9INT21HMOVCX,5; 輸入五個數(shù)字MOVSI,0INPUT: LEADX,[SHU1+SI]; 輸入要排序的原始數(shù)據(jù)MOVAH,10INT21HMOVDL,10; 輸入后換行MOVAH,2INT21HADDSI,5; 指針加5,指向下一個變量LOOPINPUTCLDMOVCX,4; 設(shè)定排序外循環(huán)次數(shù)MOVBP,0PUSHCX; 外循環(huán)次數(shù)入棧PX: PUSHCXMOVCX,3LEASI,[SHU1+BP+2]; 逐位比較兩個數(shù)大小LEADI,[SHU1+BP+7]REPZCMPSBJBB;如果小于直接比較下一個數(shù),否則兩個數(shù)對換位置MOVCX,3Jh: MOVAL,SHU1[BP+2]XCHGAL,SHU1[BP+7];將兩個字節(jié)對換位置,循環(huán)3次即完成這兩個數(shù)的交換XCHGAL,SHU1[BP+2]INCBPLOOPJhSUBBP,3ADDBP,5;指向后面兩個數(shù)字POPCXLOOPPXPOPCX;外循環(huán)次數(shù)出棧LOOPALEADX,SHUCHU;輸出字符串'PAIXUHOUDESHUJUSHUNXUSHI:'MOVAH,9INT21HMOVCX,5MOVSI,2OUTPUT:PUSHCX;計數(shù)器入棧實(shí)現(xiàn)循環(huán)嵌套MOVCX,3L: MOVAL,[SHU1+SI]; 輸出排序后的5個數(shù)字MOVDL,ALMOVAH,2INT21HINCSILOOPLMOVDL,2CHMOVAH,2INT21HADDSI,2POPCX; 計數(shù)器出棧LOOPOUTPUTMOVDL,10MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HLEADX,MAX; 輸出字符串'ZUIDAZHISHI:'MOVAH,9INT21HMOVCX,3MOVSI,2D: MOVDL,[SHU5+SI]; 輸出最大值MOVAH,2INT21HINCSILOOPDMOVDL,10; 換行MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HLEADX,MIN; 輸出字符串'ZUIXIAOZHISHI :'MOVAH,9INT21HMOVCX,3MOVSI,2MOVDL,[SHU1+SI];輸出最小值MOVAH,2INT21HINCSILOOPEMOVDL,10MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HLEADX,AVERAGE; 輸出字符串'PINGJUNZHISHI:'MOVAH,9INT21HMOVCX,3MOVBX,10; 除數(shù)10MOVSI,2AD: MOVDX,0MOVAH,0PUSHCXMOVCX,3ZH: MOVAL,[SHU2+SI];將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),為后面求平均值做準(zhǔn)備SUBAL,30HPUSHAXMOVAX,DXMULBXMOVDX,AXPOPAXADDDX,AXINCSILOOPZH; 執(zhí)行3次完成3個十進(jìn)制數(shù)的轉(zhuǎn)換ADDSI,2POPCXADDHE,DX; 將DX的數(shù)放在HE中LOOPAD; 循環(huán)后得到三個十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)之后的相加和MOVDX,HE;MOVAX,DXXORDX,DXMOVBX,3DIVBX; 除3取平均值,結(jié)果將商放在AX中,余數(shù)放在DX中MOVBX,AX; 給BX賦值平均數(shù),然后將 BX中表示的十進(jìn)制數(shù)轉(zhuǎn)換為對應(yīng)的字符串DIVCHUSHU; 除100取最高位ADDAL,30H; 轉(zhuǎn)換為ASCII碼MOVAVER,ALMOVAL,AHXORAH,AHDIV[CHUSHU+1]; 除10取十位ADDAL,30HADDAH,30H; 余數(shù)就是個位MOV[AVER+1],ALMOV[AVER+2],AHMOVCX,3MOVSI,0MOVDL,[AVER+SI];輸出平均值MOVAH,2INT21HINCSILOOPFMOVDL,10MOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HLEADX,STR2;輸出字符串'PINGJUNZHIDEERJINZHICHUANSHUCHU:’MOVAH,9RCLBX,1;將平均數(shù)轉(zhuǎn)換為二進(jìn)制串JNCHADD[STR1+SI],1;如果不為0就將其加1變成1的ASCII碼值MOVDL,[STR1+SI];將二進(jìn)制串逐個輸出MOVAH,2INT21HINCSILOOPGMOVAH,4CHINT21HCODESENDSENDSTART運(yùn)行結(jié)果:四.實(shí)驗(yàn)感想和收獲本次實(shí)驗(yàn)相較于第一次難度增大了很多,本人花了大約12個小時才做完。第一個練習(xí)很簡單,從編譯到連接都是一次通過,在用DEBUG調(diào)試發(fā)現(xiàn)結(jié)果卻實(shí)正確。不過在做第二個練習(xí)時我遇到了困難,完全沒有思路。當(dāng)時不知道怎么對一位一位的數(shù)據(jù)進(jìn)行操作,在看書的過程中無意中發(fā)現(xiàn)了循環(huán)指令,我才意識到用SHL指令可以實(shí)現(xiàn)這個功能。第三個聯(lián)系主要考查我們對中斷指令的了解程度,我實(shí)現(xiàn)地是一位數(shù)的加法,不過后來老師發(fā)給了我們他自己編的版本,我感慨道編程真是一門大學(xué)問,要考慮到各種各樣的功能,人機(jī)互動,可能出錯的地方。這都是需要大量的實(shí)踐積累才行。在編寫冒泡排序法這個程序時我遇到了很多困難。起初在編寫一段循環(huán)指令時,未把寄存器CX入宅,所以影響了其他部分的循環(huán)次數(shù),導(dǎo)致結(jié)果出錯。所以今后編程時一定要把有用的信息入宅,防止被其他指令所改變。在輸出字符時,必須記得把要輸出字符的值轉(zhuǎn)變成ASCI碼,我期初輸出數(shù)字時就忘記了這一步導(dǎo)致出了很多差錯。同時在將二進(jìn)制數(shù)轉(zhuǎn)變成BCD嗎輸出時可以通過除10來實(shí)現(xiàn),將得到的商繼續(xù)除10,而得到的余數(shù)就是個位的值,同理,再次除10得到的余數(shù)就是10位。所以通過適當(dāng)此處的出發(fā)可以將二進(jìn)制數(shù)轉(zhuǎn)變?yōu)锽CD碼。通過親身實(shí)踐這次試驗(yàn),對匯編語言編程有了初步的認(rèn)識, 也體會到了編程的整個過程。從讀題,設(shè)計程序框架到寫代碼,步步承接,同時將課堂上所學(xué)的知識運(yùn)用起來,在加深理解的同時也發(fā)現(xiàn)了自己很多不懂的地方, 于是通過自己查資料,問老師終于將程序一步步地調(diào)試正確得出期望的結(jié)果, 那種自豪和滿足感油然而生。第三次實(shí)驗(yàn)8253定時器/計數(shù)器與接口實(shí)驗(yàn)——樂曲程序一.功能說明計算機(jī)是如何產(chǎn)生音樂和聲響的呢?原來在計算機(jī)中有一個可編程時間間隔定時器8253,它能根據(jù)程序提供的計數(shù)值和工作模式,產(chǎn)生各種形狀和各種頻率的計數(shù)/定時脈沖,提供給系統(tǒng)的各個部件使用。它還可以產(chǎn)生不同頻率的脈沖作為揚(yáng)聲器的聲源。在8253定時器內(nèi)部有 3個獨(dú)立工作的計數(shù)器: Counter0,Counter1,Countre2,每個計數(shù)器都分配有一個端口地址 ,分別是40H,41H,42H。8253內(nèi)部還有一個公用的控制寄存器,端口地址為 43H,端口地址輸入到 8253的CS,A1,A0端,分別對三個計數(shù)器和控制器尋址。對8253編程時,先要設(shè)定控制字,以選擇計數(shù)器,確定工作模式和計數(shù)值的格式,每個計數(shù)器由三個引腳與外部聯(lián)系,CLK為時鐘輸入端,GATA為門控制信號輸入端,OUT為計數(shù)/定時信號輸入端。每個計數(shù)器是以倒計數(shù)的方式計數(shù),也就是說,從計數(shù)初值開始逐次減 1,直到減為0為止。端口地址與計數(shù)器的關(guān)系:40H 選中計數(shù)器0:作為定時器為系統(tǒng)日時鐘提供計時基準(zhǔn)41H 選中計數(shù)器1:作為定時器使用42H 選中計數(shù)器2:用來控制揚(yáng)聲器發(fā)聲43H 公用的控制器:分別對三個寄存器和控制器尋址那么,如何觸動揚(yáng)聲器發(fā)出聲音呢?原來PC機(jī)的主音箱上裝有一只小喇叭,由定時器8253和并行接口芯片8255(可編程外圍接口芯片)控制其發(fā)聲,8255包括三個8位寄存器,兩個用于輸入功能,一個用于輸出功能。輸入寄存器分配的I/O端口地址為60H和62H,輸出寄存器分配的I/O端口地址為61H。8253定時器計數(shù)器2連接到揚(yáng)聲器,其電路如下:8253DRIVER1.9318MHZCLK喇叭OUT28255與門PB0GATE2PB1裝入計數(shù)器2的計數(shù)初值為533H(1.19318MHz/896Hz=1331=533H),這樣,得到的控制字為10110110B=0B6H,即選中計數(shù)器2,讀/寫,工作方式三(方波發(fā)聲器),二進(jìn)制。計數(shù)器2的初始化程序?yàn)椋篗OV AL,0B6HOUT 43H,AL1)計算計數(shù)值程序段:MOV DI, 給定頻率MOV DX,12HMOV AX,34DCHDIV DIAX中即為計數(shù)值。2)打開揚(yáng)聲器發(fā)聲,8255PB0,PBI送出高電平:IN AL ,61HOR AL ,3OUT 61H ,AL關(guān)閉揚(yáng)聲器,停止發(fā)聲:IN AL ,61HANDAL,0FCHOUT 61H,AL兩只老虎的音頻表定義在數(shù)據(jù)段中,如下:STACKSEGMENTDW100DUP(?)STACKENDSDATASEGMENTMUSICDW2DUP(262,294,330,262);頻率表,1231;1231DW2DUP(330,349,392);345;345;DW2DUP(392,440,392,349,330,262);565431;565431dw2dup(294,196,262),0;251;251,0表示結(jié)束TIMEDW10DUP(250*50),500*50,250*50,250*50,500*50;節(jié)拍表DW2DUP(120*50,120*50,120*50,120*50,250*50,250*50)DW2DUP(250*50,250*50,500*50)NEQU32;32個音符DATAENDS二.實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)8253計數(shù)器2輸出方波信號用以驅(qū)動揚(yáng)聲器發(fā)聲的原理,通過程序設(shè)置計數(shù)器2的輸出波形的頻率和延續(xù)時間,控制揚(yáng)聲器的音調(diào)和發(fā)生長短。.實(shí)驗(yàn)內(nèi)容:設(shè)計程序讓微機(jī)演奏一段兩只老虎的樂曲。思考如何讓PC機(jī)演奏一遍,兩遍以及數(shù)遍這段兩只老虎的樂曲,并修改程序?qū)崿F(xiàn)。四.實(shí)驗(yàn)報告:整理出運(yùn)行正確的源程序清單(加以中文注釋) ,并給出詳細(xì)程序流程圖。三.程序代碼DATASSEGMENTBGDB0AH,0DH,”TWOTIGER:”$FREQDW2DUP(262,294,330,262)DW2DUP(330,349,392)DW2DUP(392,440,392,349,330,262)DW2DUP(294,196,262),0 ;頻率表TIMEDW10DUP(250*50),500*50,250*50,250*50,500*50DW2DUP(120*50,120*50,120*50,120*50,250*50,250*50)DW2DUP(250*50,250*50,500*50)NUMDB3DATASENDSSTACKSEGMENTPARASTACK'STACK'DB200 DUP(?) ;堆棧段定義并分配存儲空間STACKENDSASSUMECS:CODE,DS:DATA,SS:STACKSTATPROCFARPUSHDS ;DS中包含的是程序段前綴的起始地址MOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVDX,OFFSETBGMOVAH,09INT21H ; 輸出字符串“TWOTIGER”LP0:MOVSI,OFFSETFREQMOVBP,OFFSETTIMECALLSING ;調(diào)用子程序,開始演奏DECNUMCMPNUM,0JNZLP0RETSTATENDPSINGPROCNEAR
;演奏子程序PUSHDIPUSHSIPUSHBPPUSHBXREPTO:MOVDI,[SI]
;DI
指向頻率表首地址CMPDI,0JEE
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2025年中國減速器行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 2025年中國互聯(lián)網(wǎng)+服裝行業(yè)發(fā)展前景預(yù)測及投資規(guī)劃建議報告
- 提升復(fù)合型人才培養(yǎng)質(zhì)量的策略
- 中國石化購油合同范本
- 2025年加油站安全管理及事故應(yīng)急預(yù)案合同
- epc內(nèi)部合同范例
- 個人網(wǎng)店店鋪轉(zhuǎn)讓合同范本
- 2020-2025年中國無人船行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 勞務(wù)廣告安裝合同范例
- 作品著作版權(quán)合同范例
- 2024年駐寺工作總結(jié)
- 初三政治中考重要知識點(diǎn)歸納
- 派出所績效考核總結(jié)分析報告
- 智能型萬能式斷路器框架開關(guān)RMW1、DW45-2000/3P-抽屜式1000A說明
- 部編版小學(xué)語文二年級下冊第三單元集體備課教材分析
- 2023靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)解讀
- 先天性腎上腺皮質(zhì)增生癥
- 2024年湖南鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析word版
- 新《安全生產(chǎn)法》全面解讀“三管三必須”
- 印刷包裝行業(yè)復(fù)工安全培訓(xùn)課件
- 蜜蜂的社會結(jié)構(gòu)和功能
評論
0/150
提交評論