川大計(jì)算機(jī)綜合實(shí)踐_第1頁(yè)
川大計(jì)算機(jī)綜合實(shí)踐_第2頁(yè)
川大計(jì)算機(jī)綜合實(shí)踐_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余17頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

實(shí)用標(biāo)準(zhǔn)文案實(shí)用標(biāo)準(zhǔn)文案精彩文檔精彩文檔四川大學(xué)網(wǎng)絡(luò)教育學(xué)院計(jì)算機(jī)綜合實(shí)踐校外學(xué)習(xí)中心:綿陽(yáng)廣播電視大學(xué)生 姓名:張潤(rùn)專(zhuān) 業(yè):電氣工程及其自動(dòng)化層 次:專(zhuān)升本年 級(jí):14秋學(xué) 號(hào):DH114244008實(shí)踐時(shí) 間:2016年3月20日1.了解并逐步熟悉匯編語(yǔ)言的編輯方法及特點(diǎn).實(shí)驗(yàn)1.了解并逐步熟悉匯編語(yǔ)言的編輯方法及特點(diǎn).實(shí)驗(yàn)2.復(fù)習(xí)8088匯編語(yǔ)言的段結(jié)構(gòu)、常用的指令與偽指令、存儲(chǔ)空間的分配等。目的3.掌握匯編語(yǔ)言的編輯、匯編及連接的過(guò)程。4.了解并逐步掌握運(yùn)用DEBUG進(jìn)行調(diào)試匯編語(yǔ)言程序。5.借助DEBUG調(diào)試工具來(lái)發(fā)現(xiàn)匯編語(yǔ)言程序的錯(cuò)誤所在并加以改正。1、進(jìn)入DEBUG方法1:在Windows開(kāi)始菜單中單擊運(yùn)行命令,直接在實(shí)驗(yàn) 運(yùn)行對(duì)話(huà)框中輸"DEBUG""CMDDOS內(nèi)容 方法3:在程序、附件、命令提示符,啟動(dòng)DOS命令口后輸入"DEBUG"2、DEBUG命令格式DEBUG的每個(gè)命令都是一個(gè)字母,后跟一個(gè)或多個(gè)參數(shù)。算法 下面對(duì)DEBUG命令作幾點(diǎn)說(shuō)明。·字母不分大小寫(xiě)。與流 ·只使用16進(jìn)制數(shù),且不能帶后綴?!ひ钥崭窕蚨禾?hào)作為命令各項(xiàng)之間的分隔符。分隔符只在程圖 兩個(gè)數(shù)值之間是必須的?!た梢杂肅trl-C或Ctrl-Break終止命令的執(zhí)行?!と糨斎氲拿钣姓Z(yǔ)法錯(cuò)誤,則提示“Error”,并用“^”指出錯(cuò)誤位置。3、常用的Debug功能用Debug的R命令查看、改變CPU寄存器的內(nèi)容;程序 用Debug的D命令查看內(nèi)存中的內(nèi)容用Debug的E命令改寫(xiě)內(nèi)存中的內(nèi)容;清單 用Debug的U命令將內(nèi)存中的機(jī)器指令翻譯成匯編指令;用Debug的T命令執(zhí)行一條機(jī)器指令用Debug的A機(jī)器指令4、用Debug的R命令查看、改變CPU寄存器的內(nèi)容;R命令用來(lái)顯示和修改寄存器的值,包括以下兩種格式。(1)R運(yùn)行 顯示所有寄存器和8個(gè)標(biāo)志位的值并反匯編CS:IP所的指令。結(jié)果 (2)寄存器>結(jié)束R命令。5、用Debug的D命令查看內(nèi)存中的內(nèi)容;D1M0000:0000H-FFFF:FFFFH調(diào)試 個(gè)單元的內(nèi)存如果想知道內(nèi)存10000H處的內(nèi)容,可以用"d段地址:分析 偏移地址的格式來(lái)查看,如輸入-d1000:0和體 使用d1000:9查看1000:9處的內(nèi)容。使用d1000:091000:0-1000:9會(huì) 一進(jìn)入Debug,可直接使用D命令直接查看,將列出Debug預(yù)設(shè)的地址處的內(nèi)容6、用Debug的E命令改寫(xiě)內(nèi)存中的內(nèi)容;使用"e起始地址數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)..."的格式來(lái)進(jìn)行如將內(nèi)存1000:0-1000:9單元中的內(nèi)容分別寫(xiě)為0、1、2、3、4、5、6、7、8、9-e1000:00123456789也可以采用提問(wèn)方式一個(gè)一個(gè)修改內(nèi)存中的內(nèi)容,如輸入eEnterEntere1000:101'a'2"c++"3"IBM"將1a2c++3IBM向內(nèi)容中寫(xiě)入機(jī)器碼,如b80100(代表movax,0001),b90200(代表movcx,002),01c8(代表addax,cx)e1000:0b80100b9020001c8就將該程序輸入內(nèi)容1000:0處,然后使用uu1000:0首先用rcs1000,ip0,再執(zhí)行tTCS:IPIP1.7、用Debug的A命令以匯編指令的形式在內(nèi)存中寫(xiě)了機(jī)器指令示例:用A命令,輸入下列程序并運(yùn)行-a1000:0movax,1movbx,2movcx,3addax,bxaddax,cxaddax,ax直接按Enter鍵結(jié)果輸入。用r命令將cs修改成1000,ip修改成0,再執(zhí)行t命令,單步執(zhí)行程序。執(zhí)行T命令時(shí),CPU執(zhí)行CS:IP執(zhí)行的指令并將IP加1.實(shí)驗(yàn)二設(shè)計(jì)匯編語(yǔ)言程序一.實(shí)驗(yàn)題目設(shè)計(jì)匯編語(yǔ)言程序二.實(shí)驗(yàn)日期:2010/04/10三.實(shí)驗(yàn)?zāi)康碾p字乘法程序設(shè)計(jì)四.實(shí)驗(yàn)內(nèi)容字符串統(tǒng)計(jì)。VER,從鍵。統(tǒng)BUFFER串的位置。雙字乘法程序。3281632接用指令實(shí)現(xiàn)的。但可以用16位乘法指令,通過(guò)4次想乘然后把部分積想加。對(duì)于帶符號(hào)數(shù),可以先根據(jù)絕對(duì)值求得積。然后判斷積的符號(hào),若積為負(fù)數(shù),應(yīng)將其用補(bǔ)碼表示。五、程序設(shè)計(jì)1、字符串統(tǒng)計(jì)程序設(shè)計(jì)#include<iostream>usingnamespacestd;;intmain();chara;intb=0,c=0,='\n');if(a<0||a>=128);b++;;elseif(a>='a'&&am;c++;;elseif(a=='');d+usingnamespacestd;intmain(){chara;intb=0,c=0,d=0,e=0,f=0;cout<<"請(qǐng)輸入一行任意字符:";a=cin.get();while(a!='\n'){b++;elseif(a>='a'&&a<='z'||a>='A'&&a<='Z')c++;elseif(a=='')d++;elseif(a>='0'&&a<='9')e++;elsef++;a=cin.get();}cout<<"總共有"<<b/2+c+d+e+f<<"個(gè)字符:"<<endl;cout<<"中文"<<"\t"<<"英文"<<"\t"<<"空格"<<"\t"<<"數(shù)字"<<"\t"<<"其他"<<endl;cout<<b/2<<"\t"<<c<<"\t"<<d<<"\t"<<e<<"\t"<<f<<endl;return}分別統(tǒng)計(jì)出英文字母,空格,數(shù)字和其他字符的個(gè)數(shù)。2、雙字乘法程序設(shè)計(jì)datasegmentxdw1,2;被乘數(shù)ydw3,4;乘數(shù)zdw4dup(?);積dataendscodesegmentassumeds:data,cs:codestart:movax,datamovmovax,xmulymovz,axmovmovax,x+2mulymovz+4,axmovmovax,xmuly+2addz+4,axadcz+6,dxmovax,x+2muly+2adcz+8,axadcz+10,dxadcz+12,0movint21hcodeendstart實(shí)驗(yàn)三8253定時(shí)器/計(jì)數(shù)器接口與數(shù)字電子琴一、實(shí)驗(yàn)題目8253定時(shí)器/計(jì)數(shù)器接口與數(shù)字電子琴二、實(shí)驗(yàn)日期:2010/05/15三、實(shí)驗(yàn)?zāi)康?四、實(shí)驗(yàn)內(nèi)容設(shè)計(jì)程序讓微機(jī)演奏一段簡(jiǎn)單樂(lè)曲利用DOS的鍵盤(pán)管理功能。將微機(jī)變?yōu)橐粋€(gè)具有簡(jiǎn)單功能的電子琴(選作)。五、程序設(shè)計(jì)硬件設(shè)計(jì)8253/82558253382558255的A口設(shè)置為輸出,8255的A口的低兩位用來(lái)控制揚(yáng)聲器驅(qū)動(dòng),當(dāng)輸出端口的PA0位為“1”或?yàn)椤?”時(shí),將使控制驅(qū)動(dòng)器的與門(mén)電路接通或關(guān)閉,使8253所發(fā)出的音頻信號(hào)能到達(dá)驅(qū)動(dòng)器或被阻斷。這樣通過(guò)控制PA0的變化,可使揚(yáng)聲器接通和斷開(kāi),控制揚(yáng)聲器是否能發(fā)出聲音。此外,通過(guò)控制PA0的通斷時(shí)間,就能發(fā)出不同的音長(zhǎng)。8255的PA1位為“1”時(shí),控制8253定時(shí)器產(chǎn)生驅(qū)動(dòng)揚(yáng)聲器發(fā)聲的音頻信號(hào),該位為“0”則不發(fā)信號(hào)。8253有三個(gè)定時(shí)器,分為0號(hào)、1號(hào)和2號(hào)0信號(hào)。當(dāng)8255PA0PA11硬件原理圖如圖1所示:圖2揚(yáng)聲器驅(qū)動(dòng)電路軟件設(shè)計(jì)28253然后延時(shí)一段時(shí)間。電子琴程序主要是讀取鍵盤(pán)按鍵,根據(jù)鍵值產(chǎn)生不同的音調(diào)即可。而樂(lè)曲的播放先將樂(lè)曲的音符編碼表和節(jié)拍編碼表建立好的,然后在播放時(shí)讀取數(shù)據(jù)。1確定相應(yīng)的音調(diào)所對(duì)應(yīng)的頻率,在單音調(diào)子程序中實(shí)現(xiàn)發(fā)出一個(gè)音符的聲音,持續(xù)所需;圖31.單音調(diào)子程序SOUND單音調(diào)子程序的調(diào)用前需要進(jìn)行以下幾個(gè)方面工作:1)確定相應(yīng)的音調(diào)所對(duì)應(yīng)的頻率,查表可以得到,再由頻率得到對(duì)應(yīng)的8253計(jì)數(shù)初值。2)確定音長(zhǎng),即一個(gè)音符所持續(xù)的時(shí)間。3圖3單音調(diào)子程序流程圖2.音樂(lè)盒程序4/4(四四拍)中,每小442符持續(xù)一拍,八分音符持續(xù)半拍等。將每個(gè)音符的頻率和持續(xù)的時(shí)間定義成兩組數(shù)據(jù)表,然后編程依次取出表中的頻率值和節(jié)拍值,調(diào)用單音調(diào)子程序就可依次產(chǎn)生各個(gè)音調(diào),播放出樂(lè)曲。在程序中存儲(chǔ)幾個(gè)樂(lè)曲數(shù)據(jù),根據(jù)音樂(lè)盒子菜單選擇相應(yīng)的樂(lè)曲演奏,讀取對(duì)應(yīng)的數(shù)據(jù)輸出。兩只老虎1=C4/41231|1231|345-|345-|565431|56542513-1||251-|對(duì)應(yīng)的頻率數(shù)據(jù)表Freq、節(jié)拍數(shù)據(jù)表Time如下:TWOTIGERS_FREDW2DUP(524,588,660,524,0)樂(lè)曲的頻率表DW2DUP(660,698,784,0)DW2DUP(784,880,784,698,660,524,0)DW2DUP(588,392,524,0),1TWOTIGERS_TIMEDW10DUP(100),200,100,100,200樂(lè)曲的時(shí)間表DW2DUP(50,50,50,50,100,100)DW2DUP(100,100,200)outb_p(0x34,0x43);;;outb_p(LATCH&0xff,0x40);outb_p(LATCH>>8,0x40);outb(inb_p(0x21)&~0x01,0x21);//允許接收定時(shí)器中斷}voiddo_timer(void){這是定時(shí)器主程序,用于每隔一段時(shí)間后進(jìn)行某些操作}[8253.asm]://nasm用匯編timer_interrupt:pushpushfspushespushdspushpushedipushesipushedxpushecxpushebxpusheax;如果你不在操作系統(tǒng)下使用,以下三行必須刪除,否則必須把0x10更改為內(nèi)核段選擇符moveax,0x10movds,axmoves,axmoval,0x20out0xa0,al;發(fā)送EOIout0x20,alcalldo_timerpopebxpopecxpopedxpopesipopedipoppopdspopespopfspopgsxoreax,eaxiretd實(shí)踐體會(huì)步的了解。原來(lái)并不太清楚是什么意思,一直都很模糊,聽(tīng)課本也是很迷茫;而之前的那些單元實(shí)驗(yàn),也沒(méi)有都做好。之前做的實(shí)驗(yàn),由于大部分是驗(yàn)證性的,所以就很被動(dòng)地去做,甚至并沒(méi)有想為什么要那樣連電路,內(nèi)部的代碼更沒(méi)有認(rèn)真看。這次課程設(shè)計(jì),因?yàn)橐约喝ピO(shè)計(jì)整個(gè)過(guò)程,所以就不得不去了解學(xué)習(xí)自己

溫馨提示

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

評(píng)論

0/150

提交評(píng)論