版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告(年度第一學(xué)期)名 稱:微機(jī)原理及應(yīng)用題 目:純軟件六位簡(jiǎn)單計(jì)算器匯編語(yǔ)言程序設(shè)計(jì)成 績(jī):日期日一、課程設(shè)計(jì)的目的與要求純軟件六位簡(jiǎn)單計(jì)算器匯編語(yǔ)言程序設(shè)計(jì)能完成十位十進(jìn)制數(shù)的加、減、乘、除運(yùn)算以及平方運(yùn)算,操作過程與普通計(jì)算器相同,即先輸入一 個(gè)操作數(shù),然后按下+、-、X、+鍵,再輸入下一個(gè)操作數(shù),按等號(hào)鍵開始運(yùn)算并顯示結(jié)果。若結(jié)果超 過十位,則顯示“ E”。在位計(jì)算機(jī)上實(shí)現(xiàn),要求盡量與真實(shí)計(jì)算器相似。分工:一人負(fù)責(zé)界面、主程序框架,另一人負(fù)責(zé)算法,具體分配二人可協(xié)調(diào)。二、設(shè)計(jì)正文1 .設(shè)計(jì)思想闡述本設(shè)計(jì)為純軟件計(jì)算器,基本需要完成加、減、乘、除運(yùn)算以及平方運(yùn)算。從加法出發(fā),通
2、過對(duì)原有字節(jié)加法與加法的十進(jìn)制調(diào)整,擴(kuò)展為多字節(jié)相加;同理,將減法擴(kuò)展為多字節(jié)相減。 乘法,可以在加法實(shí)現(xiàn)的基礎(chǔ)上,將乘法實(shí)現(xiàn)為多次相加;除法,可以在減法的基礎(chǔ)上,與乘法 不同的是,需要考慮商和余數(shù)兩個(gè)問題,即對(duì)被除數(shù)不斷的減去除數(shù),直至其比被除數(shù)小,則此 時(shí)余下的數(shù)為余數(shù),減掉的次數(shù)為商。設(shè)計(jì)開始時(shí),我們討論了兩種存儲(chǔ)數(shù)據(jù)的方法,一種是將數(shù)據(jù)存為十六進(jìn)制數(shù),一種是按每 一位的字符形式存儲(chǔ)。前者在運(yùn)算上有優(yōu)勢(shì),乘法和除法可轉(zhuǎn)化為移位操作,但是不便于顯示; 后者在運(yùn)算上稍微復(fù)雜,但由于有十進(jìn)制調(diào)整命令,而且顯示與讀入都很方便。所以程序中采用 了按每一位的字符存儲(chǔ)的方法。2 .系統(tǒng)工作原理介紹(系
3、統(tǒng)框圖、接線原理圖)由于本設(shè)計(jì)為純軟件,無實(shí)物連接與硬件搭建。3 .系統(tǒng)軟件介紹(程序框圖、源程序)(1) 主要函數(shù)介紹1) madd多字節(jié)相加函數(shù),能夠完成兩個(gè)已字符形式按十進(jìn)制位存儲(chǔ)的十進(jìn)制數(shù)的加法運(yùn)算。實(shí)現(xiàn)過程是,對(duì)應(yīng)數(shù)位相加,十進(jìn)制調(diào)整后,結(jié)果存放于AL ,進(jìn)位存放于 AH。然后將AL存到結(jié)果變量中,AH賦值到AL , AL清零。2) msub多字節(jié)相減函數(shù),能夠完成兩個(gè)已字符形式按十進(jìn)制位存儲(chǔ)的十進(jìn)制數(shù)的減法運(yùn)算。實(shí)現(xiàn)過程是,對(duì)應(yīng)數(shù)位相減,同時(shí)減去 AH (借位),十進(jìn)制調(diào)整后,結(jié)果存放于AL ,若有結(jié)尾,則AH置1。然后將AL存到結(jié)果變量中,AH賦值到AL , AL清零。3) mm
4、ul多字節(jié)乘法函數(shù),能夠完成兩個(gè)已字符形式按十進(jìn)制位存儲(chǔ)的十進(jìn)制數(shù)的乘法運(yùn)算。利用乘法和加法的聯(lián)系性,由于加法功能已經(jīng)實(shí)現(xiàn),所以采用多次相加的方法來實(shí)現(xiàn)乘法。4) mdiv多字節(jié)除法函數(shù),能夠完成兩個(gè)已字符形式按十進(jìn)制位存儲(chǔ)的十進(jìn)制數(shù)的除法運(yùn)算。利 用除法和吉安法的聯(lián)系性,由于減法功能已經(jīng)實(shí)現(xiàn),所以采用多次相減的方法來實(shí)現(xiàn)除 法,相減的次數(shù)即為商,余下的數(shù)則為余數(shù)。三、課程設(shè)計(jì)總結(jié)本次設(shè)計(jì)為純軟件設(shè)計(jì),主要涉及算法與程序框架搭建的問題。通過這次課程設(shè)計(jì),我對(duì)從顯存操作層面來顯示內(nèi)容有了更多的認(rèn)識(shí)。更重要的是,在算法構(gòu)建過程中,我對(duì)DAA , AAA , AAS, DAS的調(diào)整原理有了更深層次的
5、理解。綜合運(yùn)用了課程的理論,在實(shí)際設(shè)計(jì)過程中提高了我的獨(dú)立工作能力,對(duì)相關(guān)的課程同時(shí)進(jìn)行了全面 的復(fù)習(xí),提高了獨(dú)立思考的能力。在這次設(shè)計(jì)過程中,體會(huì)了學(xué)以致用的重要性,從中發(fā)現(xiàn)自己平時(shí)學(xué)習(xí) 的不足和薄弱環(huán)節(jié),從而加以彌補(bǔ)。由于本題目無硬件內(nèi)容,今后我要自行練習(xí)硬件方面的內(nèi)容,積累經(jīng) 驗(yàn),軟硬結(jié)合。四、參考文獻(xiàn)1李繼燦,新編16/32位微型計(jì)算機(jī)原理及應(yīng)用.清華大學(xué)出版社,第五版.20151王爽,匯編語(yǔ)言.清華大學(xué)出版社,第三版.附錄(設(shè)計(jì)流程圖、程序、表格、數(shù)據(jù)等)設(shè)計(jì)流程圖3程序assume ds:data,cs:code,ss:stackdata segmentwelc DB*Welcom
6、e to The Calculator *,welclen DW $-welcDBwelstari*iwelstarlen DW $-welstarwarn DB 'Error! Press any key to continue.'34warnlen DW $-warnone DB '1000000000'ooo DB '0000000000'val1 DB '0000000000'val2 DB '0000000000'rst DB '0000000000'rat DB '0000000
7、000'res DB '0000000000'aux1 DB '0000000000'aux2 DB '0000000000'len1 DB 0;00fblen2 DB 0;00fcopr DB 0;00fdsuc DB 10 dup(0);00fe00data endsstack segment stackstack endscode segmentstart:mov ax,datamov ds,ax;ds中存放data段的段地址mov ax,stackmov ss,ax;ss中存放stack段的段地址mov ax,0b80ahmov
8、es,ax;算出屏幕顯存的段起始位置放入axcall clscall prtcall initcall scncall srtmov ax,4c00hint 21hcls proc near;清屏函數(shù)pushfpush cxpush dxpush axmov cx,0mov dh,24mov dl,89mov ax,0600hint 10hpop axpop dxpop cxpopfretcls endpinit proc near;初始化函數(shù)mov bx,offset val1mov cx,50inits1:mov ds:bx,byte ptr 30hinc bxloop inits15mo
9、v ax,0002hmov cx,10inits2:mov ds:bx,byte ptr 0inc bxloop inits2mov bx,offset lenlmov ds:bx,byte ptr 0mov bx,offset len2mov ds:bx,byte ptr 0mov bx,offset oprmov ds:bx,byte ptr 0retinit endpini proc near;部分還原函數(shù)mov bx,offset val1mov cx,30inis1:mov ds:bx,byte ptr 30hinc bxloop inis1mov bx,offset sucmov
10、cx,10inis2:mov ds:bx,byte ptr 0inc bxloop inis2ini endpprt proc near;顯示主界面函數(shù)int 10hmov si,offset welcmov di,0mov cx,welclenmov ax,0b80ahmov es,axmov bx,0;存偏移地址,用來取每個(gè)字符prtsl:mov al,ds:bx+simov es:bx+di,alinc dimov al,02hmov es:bx+di,alinc diinc siloop prtslmov si,offset welstarmov di,2*160mov cx,wels
11、tarlenmov bx,0;存偏移地址,用來取每個(gè)字符prts2:mov al,ds:bx+simov es:bx+di,alinc diinc bpmov al,02hmov es:bx+di,alinc diinc bpinc si7loop prts2mov si,offset welstarmov di,23*160mov cx,welstarlenmov ax,0b80ah;算出屏幕顯存的段起始位置放入axmov es,axmov bx,0;存偏移地址,用來取每個(gè)字符prts3:mov al,ds:bx+simov es:bx+di,alinc diinc bpmov al,02h
12、mov es:bx+di,alinc diinc bpinc siloop prts3mov bh,0mov ah,02hmov dx,0A10h;設(shè)定光標(biāo)到第 10行16列int 10hretprt endpscn proc near;鍵盤讀取函數(shù);mov ax,0c00h;清除緩沖區(qū);int 21hmov cx,0scnsl:mov ah,01h;回顯輸入int 21hcmp al,32;空格完成輸入je scns3inc cxcmp cx,0ahja outlmov ds:bx,alinc bxjmp scnslscns3:mov bp,offset vallscns5:dec bxmo
13、v al,ds:bxmov ds:bp,alinc bploop scns5mov cx,0mov ah,01h ;回顯輸入int 21hmov bx,offset oprmov ds:bx,almov bx,offset aux2cmp al,2dh;-:45je scns2cmp al,2bh;+:43je scns2 cmp al,2ah;*:42je scns2cmp al,2fh;/:47je scns2out1:call errscns2:mov ah,01h;回顯輸入int 21hcmp al,61;等于完成輸入je scns4inc cxcmp cx,0ahja outlmov
14、 ds:bx,alinc bxjmp scns2scns4:mov bp,offset val2scns6:dec bxmov al,ds:bxmov ds:bp,alinc bploop scns6mov bx,offset oprmov al,ds:bxmov si,offset val1mov di,offset val2mov bx,offset rst9cmp al,2dh;-:45je msubcmp al,2bh;+:43je maddcmp al,2ah;*:42je mmulcmp al,2fh;/:47;je out2retscn endpmadd proc near;多字
15、節(jié)力口法 di+si=bxmov cx,10;mov si,offset vall;mov di,offset val2;mov bx,offset rstxor ax,axmadds1:sub ds:si,byte ptr 30hsub ds:di,byte ptr 30hadd al,ds:siaaaadd al,ds:diaaa;cmp ah,0;je madds2;mov ah,1;madds2:mov ds:bx,aladd ds:bx,byte ptr 30hinc si11mov al,ahinc di inc bxmov al,ahmov ah,0loop maddslretm
16、add endpmsub proc near;多字節(jié)減法 si-di=bxmov cx,10;mov si,offset vall;mov di,offset val2;mov bx,offset rstxor ax,axmsubsl:sub ds:si,byte ptr 30hsub ds:di,byte ptr 30hsub ds:si,almov al,ds:siaassub al,ds:diaascmp ah,0je msubs2mov ah,1msubs2:mov ds:bx,aladd ds:bx,byte ptr 30hinc siinc di inc bx13mov ah,0l
17、oop msubslretmsub endpmmul proc near ;多字節(jié)乘法call trmmuls2:mov bp,offset aux2call zeojnc mmulslmov di,offset auxlmov si,offset ratmov bx,offset rstcall maddmov bp,offset rstmov bx,offset ratcall cpycall inimov si,offset aux2mov di,offset onemov bx,offset rstcall msubmov bp,offset rstmov bx,offset aux2
18、call cpyjmp mmuls2mmulsl:mov bp,offset ratmov bx,offset rstcall cpyretmmul endpmdiv proc near;多字節(jié)除法call trmdivs2:mov bp,offset auxlmov bx,offset aux2call comjc mdivslcall inimov si,offset vallmov di,offset val2mov bx,offset rstcall msubmov bp,offset rstmov bx,offset vallcall cpycall inimov bx,offset
19、 rstmov di,offset onemov si,offset ratcall maddjmp mdivs2mdivsl:mov bx,offset resmov bp,offset vallcall cpyretmdiv endptr proc nearmov bp,offset vallmov bx,offset auxlcall cpymov bp,offset val2mov bx,offset aux2call cpyrettr endpcpy proc near;將bp開頭的字符串,復(fù)制到 bx開頭的字符串push cxpush axpush bppush bxmov cx,
20、10cpys1:mov al,ds:bpmov ds:bx,alinc bpinc bxloop cpys1pop bxpop bp15pop axpop cxretcpy endpcom proc near;比較 bp,bx 開頭的反字符串大小mov cx,10add bp,9add bx,9comsl:mov al,ds:bpmov ah,ds:bxdec bpdec bxcmp al,ahja coms2jb coms3loop comslcoms2:clc;bp 大于 bxretcoms3:;bp 小于 bxstcretcom endpzeo proc near ;判斷bp開頭字符串是
21、否為0push cxpush axpush bpzeosl:mov al,ds:bpcmp al,0jne zeos2inc bploop zeoslclc,,為 0pop bppop axpop cx retzeos2:stc;不為0pop bppop axpop cx retzeo endperr proc near;顯示錯(cuò)誤信息call clsmov si,0mov di,12*160+40mov cx,warnlenmov ax,0b80ah;算出屏幕顯存的段起始位置放入 axmov es,axmov bx,offset warn;存偏移地址,用來取每個(gè)字符errs1:mov al,ds:bx+simov es:di,alinc di17mov al,84h19mov es:di,alinc diinc siloop errslmov si,offset welstarmov di,2*160mov cx,welstarlenmov ax,0b80ahmov es,axmov bx,0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州鐵路職業(yè)技術(shù)學(xué)院《采礦工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年浙江省安全員B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2025黑龍江省安全員考試題庫(kù)附答案
- 2025年-河北省安全員《B證》考試題庫(kù)
- 《電影天堂》課件
- 植物的逆境生理-課件
- 上海市初中勞技試題解析2014
- 【大學(xué)課件】國(guó)際投資的企業(yè)形式
- 《植物病原病毒》課件
- 《探析權(quán)健腫瘤醫(yī)院》課件
- 礦山隱蔽致災(zāi)普查治理報(bào)告
- 零星維修工程 投標(biāo)方案(技術(shù)方案)
- 護(hù)理基礎(chǔ)測(cè)試題+參考答案
- 副總經(jīng)理招聘面試題與參考回答(某大型國(guó)企)2024年
- 2024年SATACT家教培訓(xùn)合同
- 《ESPEN重癥病人營(yíng)養(yǎng)指南(2023版)》解讀課件
- 智慧茶園監(jiān)控系統(tǒng)的設(shè)計(jì)
- 2024年宜賓發(fā)展產(chǎn)城投資限公司第三批員工公開招聘高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 2024年省宿州市“宿事速辦”12345政務(wù)服務(wù)便民熱線服務(wù)中心招考15名工作人員高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 2024年安徽省行政執(zhí)法人員資格認(rèn)證考試試題含答案
- 中國(guó)2型糖尿病運(yùn)動(dòng)治療指南 (2024版)
評(píng)論
0/150
提交評(píng)論