北郵微原軟件實(shí)驗(yàn)報(bào)告 程序設(shè)計(jì)_第1頁(yè)
北郵微原軟件實(shí)驗(yàn)報(bào)告 程序設(shè)計(jì)_第2頁(yè)
北郵微原軟件實(shí)驗(yàn)報(bào)告 程序設(shè)計(jì)_第3頁(yè)
北郵微原軟件實(shí)驗(yàn)報(bào)告 程序設(shè)計(jì)_第4頁(yè)
北郵微原軟件實(shí)驗(yàn)報(bào)告 程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

北京郵電大學(xué)微機(jī)原理與接口技術(shù)軟件實(shí)驗(yàn)實(shí)驗(yàn)二:匯編語(yǔ)言程序設(shè)計(jì)院系:信通院信息工程班級(jí):姓名:學(xué)號(hào):指導(dǎo)老師:二零一三年十一月實(shí)驗(yàn)?zāi)康倪M(jìn)行獨(dú)立編寫(xiě)匯編程序,掌握編寫(xiě)過(guò)程逐步掌握程序設(shè)計(jì)基本方法:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)掌握基本dos命令實(shí)驗(yàn)任務(wù)1、編一程序,在顯示器上顯示256個(gè)ASCII代碼,要求顯示格式為每行顯示16個(gè)字符,兩個(gè)ASCII字符間空一格。2、試編一個(gè)程序,把地址偏移量為100H單元開(kāi)始的256個(gè)單元分別寫(xiě)入00H,01H,02H,03H,。。。,F(xiàn)FH數(shù)據(jù)。統(tǒng)計(jì)寫(xiě)入的數(shù)據(jù)塊中0元素,正元素,負(fù)元素的個(gè)數(shù),并分別把統(tǒng)計(jì)結(jié)果送入上述數(shù)據(jù)塊之后的三個(gè)單元內(nèi)。用DOS功能調(diào)用顯示數(shù)據(jù)塊各單元的內(nèi)容。3、編一個(gè)程序,把鍵入的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)并在屏幕上顯示出來(lái)。鍵入的最大數(shù)為FFFFH,若鍵入的不是十六進(jìn)數(shù)字,則顯示出錯(cuò)提示。三、實(shí)驗(yàn)內(nèi)容1、1)源程序及注釋datasegment;數(shù)據(jù)段定義org100h;偏移量100hbufdb256dup(?);定義256個(gè)字節(jié)變量countequ$-buf;將buf的長(zhǎng)度賦值給count變量dataendscodesegment;代碼段assumecs:code,ds:datastart:movax,datamovds,axmovsi,offsetbuf;設(shè)數(shù)據(jù)塊首地址movcx,count;設(shè)數(shù)據(jù)塊長(zhǎng)度,為循環(huán)次數(shù)xoral,al;數(shù)據(jù)塊第一個(gè)數(shù)據(jù)為0nexta:mov[si],alincsi;指針加1incal;數(shù)據(jù)加1loopnexta;循環(huán),循環(huán)256次后結(jié)束,完成數(shù)據(jù)輸入movsi,offsetbuf;設(shè)數(shù)據(jù)塊首地址,這里開(kāi)始顯示結(jié)果movcx,count;設(shè)數(shù)據(jù)塊長(zhǎng)度,為循環(huán)次數(shù)tab:movbh,16;每行顯示16個(gè)數(shù)據(jù)nextc:movdl,[si];將當(dāng)前要顯示的數(shù)據(jù)賦給dlmovah,02h;調(diào)用dos顯示輸出命令int21hmovdl,20h;顯示空格,這里實(shí)現(xiàn)每輸出一個(gè)字符空一個(gè)movah,02hint21hincsi;指針加1loopnextd;未處理完,繼續(xù)循環(huán)jmpstopnextd:decbhjnznextc;未滿16個(gè),繼續(xù)顯示movdl,0dh;每行滿16個(gè),送回車、換行movah,02hint21hmovdl,0ahmovah,02hint21hjmptab;繼續(xù)處理下一行stop:movah,4chint21hcodeendsendstart2)流程圖2、(1)源程序及注釋datasegment;數(shù)據(jù)段org100h;偏移量為100hbufdb256dup(?);定義256個(gè)字節(jié)變量countequ$-buf;buf長(zhǎng)度dataendsstacksegmentstack'stack'sapdb256dup(?)topequlengthsapstackendscodesegment;代碼段assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovax,stackmovss,axmovsp,topmovsi,offsetbuf;設(shè)數(shù)據(jù)塊首地址movcx,count;設(shè)數(shù)據(jù)塊長(zhǎng)度,為循環(huán)次數(shù)xoral,al;第一個(gè)數(shù)據(jù)為0nexta:mov[si],alincsi;指針加1incal;數(shù)據(jù)加1loopnexta;循環(huán),循環(huán)256次后結(jié)束,完成數(shù)據(jù)輸入movsi,offsetbuf;設(shè)數(shù)據(jù)塊首地址,這里開(kāi)始統(tǒng)計(jì)零、正數(shù)和負(fù)數(shù)個(gè)數(shù)xorbx,bx;bx清零,bx放置正負(fù)數(shù)個(gè)數(shù),bh放置正數(shù),hl放置負(fù)數(shù)xordl,dl;dl清零,dl放置零的個(gè)數(shù)movcx,count;設(shè)數(shù)據(jù)塊長(zhǎng)度,為循環(huán)次數(shù)nextb:moval,[si];將數(shù)據(jù)塊內(nèi)容逐個(gè)賦給alandal,al;建立標(biāo)志jzzero;若為0,轉(zhuǎn)zerojnspos;若為正數(shù),轉(zhuǎn)posincbl;若為負(fù)數(shù),則bl加1jmpdonezero:incdl;為0,dl加1jmpdonepos:incbh;為正數(shù),bh加1jmpdonedone:incsi;指針加1loopnextb;循環(huán)256次mov[si],dl;存放結(jié)果,0的個(gè)數(shù)放置在buf結(jié)束后的第一存儲(chǔ)單元incsi;指針加1mov[si],bx;正數(shù)、負(fù)數(shù)個(gè)數(shù)依次存放movsi,offsetbuf;設(shè)數(shù)據(jù)塊首地址,這里開(kāi)始顯示結(jié)果movcx,count+3;設(shè)循環(huán)長(zhǎng)度,顯示包括統(tǒng)計(jì)結(jié)果在內(nèi)的259個(gè)單元內(nèi)容tab:movbh,16;每行顯示16個(gè)數(shù)據(jù)nextc:moval,[si];將要顯示的內(nèi)容賦給almovbl,al;內(nèi)容暫存于blpushcx;將cx內(nèi)容壓棧,保存cx的值movcl,4;設(shè)置移位次數(shù)shral,cl;把數(shù)字右移4位,高4位移到低4位popcx;彈棧到cx,cx內(nèi)容仍未循環(huán)次數(shù),未改變calldisp;調(diào)用顯示子程序,將高4位變?yōu)锳SCH碼顯示moval,bl;將暫存的數(shù)送回al中andal,0fh;屏蔽掉高4位calldisp;調(diào)用顯示子程序,將低4位變成ASCH碼顯示movdl,20h;顯示空格movah,02hint21hincsi;指針加1loopnextd;未處理完,繼續(xù)循環(huán)jmpstop;循環(huán)結(jié)束,轉(zhuǎn)stopnextd:decbh;每輸出一個(gè)數(shù),bh減1jnznextc;未滿16個(gè),繼續(xù)顯示movdl,0dh;每行滿16個(gè),送回車、換行movah,02hint21hmovdl,0ahmovah,02hint21hjmptab;繼續(xù)處理下一行stop:movah,4ch;調(diào)用dos命令,退出程序int21hdispproc;顯示子程序cmpal,0ah;與0ah比較jsgone;小于,轉(zhuǎn)gone,加30h,輸出addal,07h;大于0ah,為十六進(jìn)制數(shù)A-F,加37hgone:addal,30hmovdl,almovah,02hint21hretdispendpcodeendsendstart2)流程圖其中,顯示子程序流程圖如下3、1)源程序及注釋datasegment;數(shù)據(jù)段bufdb'ERROR!','$';定義出錯(cuò)時(shí)顯示錯(cuò)誤字符串buf1db'Pleaseenterahexadecimalnumber','$';顯示請(qǐng)輸入字符串buf2db'Ifyouwanttoquit,pleaseenterthebutton"Esc"','$';dataendscodesegment;代碼段assumecs:code,ds:datastart:movax,datamovds,axrepeat:movdx,offsetbuf1movah,09hint21hcallcrlfmovdx,offsetbuf2movah,09hint21hcallcrlfcallhex2bin;主程序,十六進(jìn)制轉(zhuǎn)二進(jìn)制callcrlf;調(diào)用回車換行callbin2dex;二進(jìn)制轉(zhuǎn)十進(jìn)制callcrlf;回車換行jmprepeathex2binprocnear;十六進(jìn)制轉(zhuǎn)二進(jìn)制xorbx,bx;bx放置鍵入字符newchar1:movah,01h;調(diào)用dos命令,得到輸入字符int21hcmpal,0dh;檢測(cè)是否輸入完成jzrettcmpal,1bh;檢測(cè)輸入是否為Escjzgone;是則退出subal,30h;減30h,設(shè)置標(biāo)志jlexit;非有效字符,顯示ERROR!cmpal,09h;與9比較jgnewchar2;比9大,則判斷是否為字母jleyiwei;為數(shù)字,則移位newchar2:subal,07h;減07h,判斷是否為字母cmpal,0ah;與A比較jlexit;比A小,則非有效字符,顯示ERROR!cmpal,0fh;與F比較jgnewchar3;比F大,則判斷是否為小寫(xiě)字母jleyiwei;大寫(xiě)有效字符,移位newchar3:subal,20h;減20h,判斷是否為大寫(xiě)字母cmpal,0ah;與a比較jlexit;比a小,為非有效字符,顯示ERROR!cmpal,0fh;與f比較jleyiwei;小寫(xiě)有效字符,移位jgexit;比f(wàn)大,非有效字符,顯示ERROR!yiwei:movcl,4;移位次數(shù)shlbx,cl;bx左移4位,低位到高位movah,0addbx,ax;已鍵入字符和新鍵入字符相加jmpnewchar1;再次接受字符exit:callcrlfmovdx,offsetbuf;顯示ERROR!字符串movah,09int21hcallcrlfjmpnewchar1gone:movah,4chint21hrett:rethex2binendpbin2dexprocnear;二進(jìn)制轉(zhuǎn)十進(jìn)制movcx,10000;最大數(shù)為65535,最高位為萬(wàn)calldiv1;得到萬(wàn)位的數(shù)字movcx,1000calldiv1;得千位數(shù)字movcx,100calldiv1;得百位數(shù)字movcx,10calldiv1;得十位數(shù)字movcx,1calldiv1;得個(gè)位數(shù)字retbin2dexendpdiv1procnearmovax,bx;被除數(shù)放入ax中movdx,0;被除數(shù)高16位置0divcx;采用32位除16位除法movbx,dx;余數(shù)放入bx,下次除法所用addal,30h;商轉(zhuǎn)換為ASCH碼顯示movdl,almovah,02hint21hretdiv1endpcrlfprocnearmovdl,0dh;送回車、換行movah,02hint21hmovdl,0ah

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論