![微型計(jì)算機(jī)課程設(shè)計(jì)-簡(jiǎn)易計(jì)算器(李智)_第1頁(yè)](http://file4.renrendoc.com/view10/M01/0E/27/wKhkGWW5o4KAfiCMAADWFj1wjWc748.jpg)
![微型計(jì)算機(jī)課程設(shè)計(jì)-簡(jiǎn)易計(jì)算器(李智)_第2頁(yè)](http://file4.renrendoc.com/view10/M01/0E/27/wKhkGWW5o4KAfiCMAADWFj1wjWc7482.jpg)
![微型計(jì)算機(jī)課程設(shè)計(jì)-簡(jiǎn)易計(jì)算器(李智)_第3頁(yè)](http://file4.renrendoc.com/view10/M01/0E/27/wKhkGWW5o4KAfiCMAADWFj1wjWc7483.jpg)
![微型計(jì)算機(jī)課程設(shè)計(jì)-簡(jiǎn)易計(jì)算器(李智)_第4頁(yè)](http://file4.renrendoc.com/view10/M01/0E/27/wKhkGWW5o4KAfiCMAADWFj1wjWc7484.jpg)
![微型計(jì)算機(jī)課程設(shè)計(jì)-簡(jiǎn)易計(jì)算器(李智)_第5頁(yè)](http://file4.renrendoc.com/view10/M01/0E/27/wKhkGWW5o4KAfiCMAADWFj1wjWc7485.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)設(shè)計(jì)名稱(chēng):微型計(jì)算機(jī)技術(shù)及應(yīng)用——簡(jiǎn)易計(jì)算器學(xué)院:信息工程學(xué)院課程:微型計(jì)算機(jī)技術(shù)及應(yīng)用姓名:李智學(xué)號(hào):202307010252班級(jí):2023級(jí)計(jì)算機(jī)科學(xué)與技術(shù)二班目錄摘要 3一、 前言 41.1背景 41.2工程介紹 4二、 課程設(shè)計(jì)的目的與任務(wù) 52.1設(shè)計(jì)目的 52.2設(shè)計(jì)任務(wù) 5三、 設(shè)計(jì)過(guò)程 53.1根底理論 5簡(jiǎn)介 5中斷 8四、 設(shè)計(jì) 114.1總體方案 114.2原理框圖 124.3程序代碼 13五、 系統(tǒng)模塊詳細(xì)設(shè)計(jì)與調(diào)試 245.1系統(tǒng)模塊詳細(xì)設(shè)計(jì) 24設(shè)置屏幕顯示方式 24顯示主菜單 24從鍵盤(pán)接收一個(gè)數(shù)字 24接收鍵入用于計(jì)算的數(shù) 25顯示結(jié)果 25子程序A2——將數(shù)的ASCII碼轉(zhuǎn)為二進(jìn)制數(shù) 25將計(jì)算結(jié)果的二進(jìn)制數(shù)轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)ASCII碼并輸出顯示〔A3程序段〕 275.2程序編譯、運(yùn)行與調(diào)試 27六、 設(shè)計(jì)總結(jié) 29七、 參考文獻(xiàn) 31摘要本次課程設(shè)計(jì)是通過(guò)使用DOSBox匯編語(yǔ)言編程軟件實(shí)現(xiàn)的利用匯編語(yǔ)言編寫(xiě)的較為復(fù)雜的程序設(shè)計(jì)。該課程設(shè)計(jì)主要是設(shè)計(jì)一個(gè)較為簡(jiǎn)單的計(jì)算器,界面顯示要求用戶(hù)從鍵盤(pán)上分別輸入兩個(gè)隨機(jī)數(shù),完成四那么運(yùn)算,然后將運(yùn)算結(jié)果顯示到屏幕上。該設(shè)計(jì)智能實(shí)現(xiàn)簡(jiǎn)單的正整數(shù)之間的四那么運(yùn)算,無(wú)法對(duì)小數(shù)進(jìn)行精確地識(shí)別。而除法運(yùn)算可以精確到3位小數(shù),減法可以顯示出負(fù)數(shù)的結(jié)果。采用DOS調(diào)用〔INT21H〕來(lái)完成鍵盤(pán)的輸入和屏幕的輸出。通過(guò)這次的課程設(shè)計(jì)能夠進(jìn)一步加深對(duì)專(zhuān)業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解。關(guān)鍵詞:DOSBox;微機(jī)原理;計(jì)算器;匯編語(yǔ)言前言1.1背景計(jì)算器是現(xiàn)代人創(chuàng)造的可以進(jìn)行數(shù)字運(yùn)算的電子機(jī)器。現(xiàn)代的電子計(jì)算器能進(jìn)行數(shù)學(xué)運(yùn)算的手持電子機(jī)器,擁有集成電路芯片,但結(jié)構(gòu)比電腦簡(jiǎn)單得多,可以說(shuō)是第一代的電子計(jì)算機(jī)〔電腦〕,且功能也較弱。隨著微機(jī)和的普及,計(jì)算器逐漸退出了人們的視野,只能被局限于在課堂之上的計(jì)算工具。雖然計(jì)算器的使用范圍逐漸縮小,但計(jì)算器依舊在不斷開(kāi)展。即使科技的開(kāi)展帶動(dòng)著小型計(jì)算器成為一個(gè)移動(dòng)的計(jì)算實(shí)驗(yàn)室。但它的核心卻依然沒(méi)有逃脫最簡(jiǎn)單的四那么運(yùn)算:加、減、乘和除。1.2工程介紹本次課程設(shè)計(jì)就是根據(jù)微機(jī)原理與接口的相關(guān)知識(shí),利用BIOS和DOS的中斷來(lái)設(shè)計(jì)一個(gè)簡(jiǎn)易計(jì)算器,能夠?qū)崿F(xiàn)加減乘除四那么運(yùn)算,并在屏幕上顯示一個(gè)主菜單,提示用戶(hù)輸入相應(yīng)的數(shù)字鍵,分別執(zhí)行加、減、乘、除四種計(jì)算功能和結(jié)束程序的功能。同時(shí)利用BIOS中斷的10號(hào)功能調(diào)用來(lái)設(shè)置顯示方式,利用DOS中斷的01號(hào)和02號(hào)子功能來(lái)完成鍵盤(pán)接收,結(jié)果顯示。課程設(shè)計(jì)的目的與任務(wù)2.1設(shè)計(jì)目的為了使學(xué)生加深對(duì)所學(xué)的微機(jī)原理知識(shí)的理解,培養(yǎng)學(xué)生的專(zhuān)業(yè)素質(zhì),提高其利用微機(jī)原理知識(shí)處理問(wèn)題的能力,為今后專(zhuān)業(yè)課程的學(xué)習(xí)、畢業(yè)設(shè)計(jì)和工作打下良好的根底。使學(xué)生能比擬扎實(shí)地掌握微機(jī)原理的根底知識(shí)和根本理論,掌握控制系統(tǒng)及有關(guān)設(shè)備的分析、開(kāi)發(fā)等根本技能,受到必要工程訓(xùn)練、初步的科學(xué)研究方法訓(xùn)練和實(shí)踐鍛練,增強(qiáng)分析問(wèn)題和解決問(wèn)題的能力,了解微機(jī)原理和接口技術(shù)的新開(kāi)展。2.2設(shè)計(jì)任務(wù)本課程設(shè)計(jì)是制作出一個(gè)簡(jiǎn)易的計(jì)算器,并可以在DOCBOX上運(yùn)行,并且正確地完成加、減、乘、除等四那么運(yùn)算。設(shè)計(jì)過(guò)程3.1根底理論Box簡(jiǎn)介由于微軟公司對(duì)windos7的64位操作系統(tǒng)取締了為匯編程序開(kāi)放的Edit、Masm、Link以及Debug等的功能。所以我選擇了一款比擬簡(jiǎn)單但同樣適用的Dos環(huán)境仿真器——DOSBox。DOSBox是一種創(chuàng)造類(lèi)DOS環(huán)境的開(kāi)源x86仿真器,通常用于運(yùn)行近代計(jì)算機(jī)或者非IBMPC兼容機(jī)的MS-DOSIBMPC兼容程序。不僅如此,它還是一個(gè)完整的中央處理器仿真器,并不是一個(gè)兼容層如dosemu或者依賴(lài)386類(lèi)處理器虛擬化能力的Windows與OS/2VDM。不需要x86中央處理器或者任何DOS版本以運(yùn)行,并且能運(yùn)行真實(shí)模式與保護(hù)模式的程序。雖然DOSBox是Dos的仿真器,但它只是具有搭載環(huán)境的能力,卻并沒(méi)有自帶匯編程序的運(yùn)行環(huán)境,。我們需要下載相對(duì)應(yīng)的運(yùn)行環(huán)境masm或tasm。當(dāng)在下載完成后,我們需要對(duì)DOSBox進(jìn)行相對(duì)應(yīng)的設(shè)置。當(dāng)配置好環(huán)境后,現(xiàn)在我們就可以使用它進(jìn)行Edit,Masm,Link,Debug了EDIT:Masm和Link:完成masm和link兩步以后,我們就得到了可以運(yùn)行的程序exe文件了:Debug:通過(guò)這幾個(gè)步驟,我們就可以得到我們需要的可以正確執(zhí)行地exe文件了。中斷3.1.2.1何謂中斷所謂中斷,是指CPU在執(zhí)行當(dāng)前程序時(shí),由于外部事件和內(nèi)部事件,使得CPU中斷正在執(zhí)行的程序,轉(zhuǎn)到為外部與內(nèi)部事件效勞的程序中去執(zhí)行。當(dāng)效勞程序執(zhí)行完畢,再返回帶剛剛被中斷的程序的斷點(diǎn)處,繼續(xù)執(zhí)行。8086有一個(gè)強(qiáng)有力的中斷系統(tǒng),可以處理256種不同的中斷,每個(gè)中斷對(duì)應(yīng)一個(gè)類(lèi)型號(hào),所以,256種中斷對(duì)應(yīng)的中斷類(lèi)型號(hào)為0~255.這256種中斷可以分成兩大類(lèi):一類(lèi)叫硬件中斷;一類(lèi)叫軟件中斷。硬件中斷是通過(guò)外部的硬件產(chǎn)生的,所以,也常常把硬件中斷。硬件中斷又分為兩類(lèi):一類(lèi)叫非屏蔽中斷;另一類(lèi)叫可屏蔽中斷。非屏蔽中斷是通過(guò)CPU的NMI引腳進(jìn)入,它不受中斷允許標(biāo)志IF的屏蔽,并且整個(gè)系統(tǒng)中只有一個(gè)非屏蔽中斷??善帘沃袛嗍峭ㄟ^(guò)CPU的INTR引腳進(jìn)入的,并且只有當(dāng)中斷允許標(biāo)志IF為1時(shí),可屏蔽中斷才能進(jìn)入,如果中斷允許標(biāo)志IF為0,那么可屏蔽中斷受到禁止。軟件中斷是CPU根據(jù)某條指令或者軟件對(duì)標(biāo)志存放器的設(shè)置而產(chǎn)生的,從軟件中斷的產(chǎn)生過(guò)程來(lái)說(shuō),完全和硬件電路無(wú)關(guān)。典型的軟件中斷是除數(shù)為0引起的中斷和中斷指令引起的中斷。中斷向量和中斷向量表8086的中斷系統(tǒng)以位于內(nèi)存0段的0~3FFH區(qū)域的中斷向量表為根底,中斷向量表中最多可容納256個(gè)中斷向量。所謂中斷向量,實(shí)際上就是中斷處理子程序的入口地址,每個(gè)中斷類(lèi)型對(duì)應(yīng)一個(gè)中斷向量。中斷向量并不是任意存放的。一個(gè)中斷向量占4個(gè)存儲(chǔ)單元,其中,前兩個(gè)單元存放中斷處理子程序入口地址的偏移量〔IP〕,低位在前,高位在后,后兩個(gè)單元存放中斷處理子程序入口地址的段地址〔CS〕,同樣也是低位在前,高位在后。256個(gè)中斷的前5個(gè)是專(zhuān)用中斷。類(lèi)型0的中斷稱(chēng)作除數(shù)為0中斷;類(lèi)型1的中斷稱(chēng)為單步中斷;非屏蔽中斷對(duì)應(yīng)類(lèi)型2;類(lèi)型3的中斷為斷點(diǎn)中斷;而類(lèi)型4的中斷為溢出中斷。除了非屏蔽中斷外,其他幾個(gè)中斷都是軟件中斷。中斷方式為了提高CPU的效率和使系統(tǒng)有實(shí)時(shí)性能,可采用中斷傳送方式。在中斷方式下,外設(shè)具有申請(qǐng)CPU效勞的主動(dòng)權(quán),當(dāng)輸入設(shè)備將數(shù)據(jù)準(zhǔn)備好或輸出設(shè)備可接收數(shù)據(jù)時(shí),便可向CPU發(fā)中斷請(qǐng)求,使CPU暫時(shí)停下來(lái)目前的工作而和外設(shè)進(jìn)行一次數(shù)據(jù)傳輸。等輸入操作或輸出操作完成后,CPU繼續(xù)進(jìn)行原來(lái)的工作?!踩缱髨D:〕設(shè)計(jì)4.1總體方案利用BIOS中斷的10號(hào)功能調(diào)用來(lái)設(shè)置顯示方式。利用DOS中斷的01號(hào)、02號(hào)子功能來(lái)完成鍵盤(pán)接受、結(jié)果顯示。設(shè)置屏幕顯示方式。MOVAH,00HMOVAL,NUMINT10H接著從鍵盤(pán)上接受鍵值,并判別后轉(zhuǎn)到相應(yīng)的子模塊進(jìn)行運(yùn)算,并顯示結(jié)果。MOVAH,01HINT21H;AL=鍵入字符的ASCII碼從鍵盤(pán)上接收一串字符串命令:MOVAH,0AHMOVDX,OFFSETBUF;BUF為數(shù)據(jù)段中定義的數(shù)據(jù)緩沖區(qū)INT21H顯示單個(gè)字符命令:MOVAH,02HINT21H顯示一串字符串的命令:MOVAH,09HMOVDX,OFFSETBUF;BUF為被顯示字符串的首地址INT21H十進(jìn)制數(shù)顯示過(guò)程:將十進(jìn)制數(shù)送到BX中,BX除以1000,余數(shù)送BX中,商在A(yíng)L中,范圍為0~9,顯示AL中的內(nèi)容。BX除以100,余數(shù)送BX中,商在A(yíng)L中,顯示AL中的內(nèi)容,依次類(lèi)推,直到分出個(gè)位數(shù)字。如最高位為0,那么不應(yīng)顯示,而非最高位的0那么顯示??衫迷O(shè)標(biāo)志位并結(jié)合商的方法來(lái)決定是否顯示0。4.2原理框圖主程序提示輸入第一個(gè)數(shù)提示輸入第一個(gè)數(shù)提示輸入第二個(gè)數(shù)計(jì)算判斷結(jié)果正負(fù),并儲(chǔ)存結(jié)果將結(jié)果轉(zhuǎn)為ASCII碼,并顯示結(jié)果提示返回DOS還是重新計(jì)算將第一個(gè)數(shù)的ASCII碼轉(zhuǎn)為二進(jìn)制并保存將第二個(gè)數(shù)的ASCII碼轉(zhuǎn)為二進(jìn)制并保存結(jié)束子程序4.3程序代碼DATASEGMENTN=15TOPDB5DUP(0AH)DBNDUP(''),'Pleaseinputanumbertochoosethearithmeticoperation',0DH,0AHDBNDUP(''),'',0DH,0AHDBNDUP(''),'1—add',0DH,0AHDBNDUP(''),'2—subtract',0DH,0AHDBNDUP(''),'3—multiply',0DH,0AHDBNDUP(''),'4—divide',0DH,0AHDBNDUP(''),'5—returntoDOS',0DH,0AHDBNDUP(''),'',0DH,0AHDBNDUP(''),'CHOICE(.4.5):$'MESG1DB0DH,0AH,'PLEASEPRESSNUMBER.4.5!$'MESG2DB0DH,0AH,'PLEASEINPUTTHEFIRSTNUMBER:$'MESG3DB0DH,0AH,'PLEASEINPUTTHESECONDNUMBER:$'MESG4DB0DH,0AH,'PLAYADD:$'MESG5DB0DH,0AH,'PLAYSUBTRACT:$'MESG6DB0DH,0AH,'PLAYMULTIPLY:$'MESG7DB0DH,0AH,'PLAYDIVIDE:$'MESG8DB0DH,0AH,'THERESULT:$'MESG9DB0DH,0AH,'PRESSQRETURNDOS,ANYPRESSRETURNSTART!$'BUF1DB6;十進(jìn)制數(shù)的緩沖區(qū),可接收6個(gè)字符DB?;保存,用于10號(hào)調(diào)用時(shí)DOS填入實(shí)際輸入字符數(shù)DB6DUP(?);一個(gè)符號(hào)位,四位數(shù)字ASCII碼,加上一個(gè)回車(chē)符BUF2DW?;將第一個(gè)數(shù)轉(zhuǎn)換為二進(jìn)制后,放于這里BUF3DB6DUP(?),'$';將結(jié)果轉(zhuǎn)換為ASCII碼后,放在這DATAENDSSTACKSEGMENTSTACK'STACK'STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,00H;設(shè)置屏幕顯示方式MOVAL,0INT10HMOVAH,09H;顯示菜單MOVDX,OFFSETTOPINT21HAA:MOVAH,01H;從鍵盤(pán)接收一個(gè)數(shù)字INT21HCMPAL,'1';與1比擬JNENEXT1;不等于1就轉(zhuǎn)到NEXT1JMPJIA;等于1就轉(zhuǎn)到加法程序NEXT1:CMPAL,'2';與2比擬JNENEXT2;不等于2就轉(zhuǎn)到NEXT2JMPJIAN;等于2就轉(zhuǎn)到減法程序NEXT2:CMPAL,'3';與3比擬JNENEXT3;不等于3就轉(zhuǎn)到NEXT3JMPCHENG;等于3就轉(zhuǎn)到乘法程序NEXT3:CMPAL,'4';與4比擬JNENEXT4;不等于4就轉(zhuǎn)到NEXT4JMPCHU;等于4就轉(zhuǎn)到除法程序NEXT4:CMPAL,'5';與5比擬JNENEXT5;不等于5就轉(zhuǎn)到NEXT5MOVAH,4CH;返回DOSINT21HNEXT5:MOVAH,09H;顯示MESG1MOVDX,OFFSETMESG1INT21HJMPAA;跳到AAA1PROCNEARMOVAH,09H;提示輸入第一個(gè)數(shù)MOVDX,OFFSETMESG2INT21HMOVAH,0AH;接收第一個(gè)數(shù)MOVDX,OFFSETBUF1INT21HCALLA2;調(diào)用A2進(jìn)行ASCII-二進(jìn)制的轉(zhuǎn)換MOVBUF2,AX;把第一個(gè)數(shù)轉(zhuǎn)換的二進(jìn)制放在BUF2MOVAH,09H;提示輸入第二個(gè)數(shù)MOVDX,OFFSETMESG3INT21HMOVAH,0AH;接收第二個(gè)數(shù)MOVDX,OFFSETBUF1INT21HCALLA2;調(diào)用A2把第二個(gè)數(shù)進(jìn)行ASCII-二進(jìn)制轉(zhuǎn)換RETA1ENDPA2PROCNEARMOVCL,BUF1+1;把BUF1+1中的實(shí)際鍵入的字符數(shù)放入CLMOVCH,0;CH清零MOVBX,OFFSETBUF1+2;把第一個(gè)數(shù)字的地址放在BXPUSHBX;保護(hù)BXPUSHCX;保護(hù)CXL1:MOVAL,[BX]ANDAL,0FH;把ASCII碼轉(zhuǎn)換為十進(jìn)制MOV[BX],AL;存放十進(jìn)制INCBX;下一個(gè)數(shù)字的地址LOOPL1POPCX;恢復(fù)CXPOPBX;恢復(fù)BXMOVAX,0;將累加和賦零MOVSI,10L2:MULSIADDAL,[BX]ADCAH,0INCBXLOOPL2;累加乘10L3:RETA2ENDPJIA:MOVAH,09H;加法程序MOVDX,OFFSETMESG4INT21HCALLA1;調(diào)用A1ADDAX,BUF2;把轉(zhuǎn)換后的放在BUF2中的第一個(gè)數(shù)和放在A(yíng)X的第二個(gè)數(shù)相加JMPA3JIAN:MOVAH,09H;減法程序MOVDX,OFFSETMESG5INT21HCALLA1MOVBX,AX;把轉(zhuǎn)換后的放在A(yíng)X的第二個(gè)數(shù)放到BXMOVAX,BUF2;把轉(zhuǎn)換后放在BUF2中的第一個(gè)數(shù)放到AXSBBAX,BX;兩數(shù)相減JMPA3CHENG:MOVAH,09H;乘法程序MOVDX,OFFSETMESG6INT21HCALLA1MOVBX,AX;把轉(zhuǎn)換后的放在A(yíng)X的第二個(gè)數(shù)放到BXMOVAX,BUF2;把轉(zhuǎn)換后的放在BUF2中第一個(gè)數(shù)放到AXMULBX;兩數(shù)相乘JMPA3CHU:MOVAH,09H;除法程序MOVDX,OFFSETMESG7INT21HCALLA1MOVDX,AX;把轉(zhuǎn)換后的放在A(yíng)X的第二個(gè)數(shù)放到DXMOVAX,BUF2;把轉(zhuǎn)換后的放在BUF2中第一個(gè)數(shù)放到AXDIVDL;兩數(shù)相除,商在A(yíng)L里MOVAH,0H;使AH清零JMPA3A3:MOVBUF3,'+';把BUF3放'+'CMPAX,0;把結(jié)果于0比擬JGEL4;AX>0轉(zhuǎn)到L4NEGAX;AX<0將AX取反MOVBUF3,'-';把BUF3放'-'L4:CWDMOVBX,10000DIVBX;商為第一位數(shù)字放在A(yíng)L,余數(shù)放在DXCALLBBMOVBUF3+1,AL;把第一個(gè)數(shù)放在BUF3+1單元中MOVAX,DX;把放在DX中的余數(shù)放到AXCWDMOVBX,1000DIVBX;商為第二位數(shù)字放在A(yíng)L,余數(shù)放在DXCALLBBMOVBUF3+2,AL;把第二個(gè)數(shù)放在BUF3+2單元中MOVAX,DX;把放在DX中的余數(shù)放到AXMOVBL,100DIVBL;商為第三位數(shù)字放在A(yíng)L,余數(shù)放在A(yíng)HCALLBBMOVBUF3+3,AL;把第三個(gè)數(shù)放在BUF3+3單元中MOVAL,AH;把放在A(yíng)H中的余數(shù)放到ALCBWMOVBL,10DIVBL;商為第四位數(shù)字放在A(yíng)L,余數(shù)放在A(yíng)CALLBBMOVBUF3+4,AL;把第四個(gè)數(shù)放在BUF3+4單元中ADDAH,30H;把個(gè)位轉(zhuǎn)為ASSCII碼MOVBUF3+5,AH;把第五個(gè)數(shù)放在BUF3+5單元中MOVAH,09H;提示結(jié)果MOVDX,OFFSETMESG8INT21HMOVAH,09HMOVDX,OFFSETBUF3;把放在BUF3緩沖區(qū)中的結(jié)果顯示出來(lái)INT21HMOVAH,09H;提示是返回DOS還是重新計(jì)算MOVDX,OFFSETMESG9INT21HMOVAH,01H;接收鍵盤(pán)數(shù)字INT21HCMPAL,'Q'JEA4JMPNEXT5;其他數(shù)字重新計(jì)算BBPROCNEARCMPAL,0H;與零比擬JEL5JMPL6L5:MOVAL,20H;等于零,賦AL空格JMPL7L6:ADDAL,30H;不等于零,把數(shù)轉(zhuǎn)為ASSCII碼L7:RETBBENDPA4:MOVAH,4CH;AL等于'Q'就返回DOSINT21HCODEENDSENDSTART系統(tǒng)模塊詳細(xì)設(shè)計(jì)與調(diào)試5.1系統(tǒng)模塊詳細(xì)設(shè)計(jì)設(shè)置屏幕顯示方式MOVAH,00HMOVAL,0INT10H通過(guò)調(diào)用BOIS的OOH號(hào)功能來(lái)設(shè)置屏幕顯示方式。此處AL=0,即設(shè)置屏幕顯示方式為40*25黑白文本。顯示主菜單MOVAH,09HMOVDX,OFFSETTOPINT21H先在數(shù)據(jù)段中定義主菜單中要顯示的字符串,再通過(guò)調(diào)用DOS系統(tǒng)的09H號(hào)功能——顯示字符串〔串尾字符為$,但不顯示〕來(lái)完成。從鍵盤(pán)接收一個(gè)數(shù)字MOVAH,01HINT21H通過(guò)調(diào)用DOS系統(tǒng)的01H號(hào)功能——鍵入字符并回車(chē)來(lái)實(shí)現(xiàn),其出口參數(shù)為鍵入字符的ASCII碼,存在A(yíng)L中。接收鍵入用于計(jì)算的數(shù)MOVAH,0AHMOVDX,OFFSETBUF1通過(guò)調(diào)用DOS系統(tǒng)的0AH號(hào)功能——鍵入字符串至內(nèi)存緩沖區(qū)來(lái)實(shí)現(xiàn),其入口參數(shù)如下:DS:DX=存放鍵入字符串的緩沖區(qū)的首地址;〔DS:DX〕=用戶(hù)規(guī)定的緩沖區(qū);〔DS:DX+1〕=實(shí)際鍵入的字符數(shù);從〔DS:DX+2〕開(kāi)始放鍵入的字符串。因此,在下面的程序中運(yùn)用所鍵入的數(shù)字時(shí)要注意字符串的首地址。顯示結(jié)果MOVAH,09HMOVDX,OFFSETBUF3INT21H將結(jié)果存入數(shù)據(jù)段中定義的緩沖區(qū)BUF3中,再通過(guò)調(diào)用DOS系統(tǒng)的09H號(hào)功能——顯示字符串〔串尾字符為$,但不顯示〕來(lái)完成。子程序A2——將數(shù)的ASCII碼轉(zhuǎn)為二進(jìn)制數(shù)A2PROCNEARMOVCL,BUF1+1;把BUF1+1中的實(shí)際鍵入的字符數(shù)放入CLMOVCH,0;CH清零MOVBX,OFFSETBUF1+2;把第一個(gè)數(shù)字的地址放在BXPUSHBX;保護(hù)BXPUSHCX;保護(hù)CXL1:MOVAL,[BX]ANDAL,0FH;把ASCII碼轉(zhuǎn)換為十進(jìn)制MOV[BX],AL;存放十進(jìn)制INCBX;下一個(gè)數(shù)字的地址LOOPL1POPCX;恢復(fù)CXPOPBX;恢復(fù)BXMOVAX,0;將累加和賦零MOVSI,10L2:MULSIADDAL,[BX]ADCAH,0INCBXLOOPL2;累加乘10L3:RETA2ENDP入口:十進(jìn)制數(shù)的ASCII在BUF1內(nèi);出口:轉(zhuǎn)換后的二進(jìn)制數(shù)在A(yíng)X內(nèi)。算法:先將其轉(zhuǎn)換為十進(jìn)制,再用累加和乘10加X(jué)的方法變?yōu)槎M(jìn)制,如將163轉(zhuǎn)換為二進(jìn)制數(shù),可先將累加和賦0,再計(jì)算〔〔〔0*10+1〕*10+6〕*10+3〕結(jié)果為二進(jìn)制數(shù)。將計(jì)算結(jié)果的二進(jìn)制數(shù)轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)ASCII碼并輸出顯示〔A3程序段〕入口:二進(jìn)制數(shù)在A(yíng)X內(nèi);出口:轉(zhuǎn)換后的ASCII碼在BUF內(nèi)。算法:AX內(nèi)的數(shù)范圍在+32767到-32768之間,先檢查AX符號(hào)位,決定輸出‘+’還是‘-’,假設(shè)為負(fù),先求補(bǔ)碼得到原碼后可與正數(shù)統(tǒng)一處理。方法:把將被轉(zhuǎn)換的二進(jìn)制數(shù)先除以10000,商為萬(wàn)位數(shù),再將余數(shù)除以1000,商為千位數(shù),以此類(lèi)推,求出百十位數(shù),剩下的為個(gè)位數(shù)。最后各個(gè)數(shù)加上30H,即為對(duì)應(yīng)字符。5.2程序編譯、運(yùn)行與調(diào)試在DOS環(huán)境下,鍵入EDIT。啟動(dòng)全屏幕編輯軟件EDIT,輸入源程序。輸入完畢,按Alt+F選擇SAVE保存程序〔規(guī)定擴(kuò)展名為*.ASM〕,按Alt+X退出EDIT狀態(tài)。退出EDIT環(huán)境后,輸入ASM或MASM文件名↙〔省略擴(kuò)展名,系統(tǒng)默認(rèn)為.ASM〕,對(duì)源程序進(jìn)行匯編。源程序經(jīng)匯編后產(chǎn)生三個(gè)輸出文件:第一個(gè)是OBJ文件,即二進(jìn)制目標(biāo)文件,這是匯編的主要目的;第二個(gè)是LST文件,即列表文件;第三個(gè)是CRF文件,對(duì)于一般的程序可以不建立后兩個(gè)文件。匯編時(shí),計(jì)算時(shí)機(jī)詢(xún)問(wèn)匯編后生成的OBJ文件名、LST文件名和CRF文件名,問(wèn)句的右側(cè)是示范答復(fù),如果不想生成LST文件和CRF文件,那么按回車(chē)鍵答復(fù)。匯編過(guò)程中,如果源程序中有語(yǔ)法錯(cuò)誤,那么匯編過(guò)程結(jié)束后,匯編程序會(huì)指出源程序中的錯(cuò)誤,這時(shí),可以再用編輯程序來(lái)修改源程序中的錯(cuò)誤,最后,得到?jīng)]有語(yǔ)法錯(cuò)誤的OBJ文件。匯編程序產(chǎn)生的二進(jìn)制目標(biāo)文件不是可
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025伸縮縫安裝工程勞務(wù)分包合同修改
- 9 知法守法依法維權(quán) 第二課時(shí)(說(shuō)課稿)-2023-2024學(xué)年道德與法治六年級(jí)上冊(cè)統(tǒng)編版001
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 六 表內(nèi)乘法和表內(nèi)除法(二)練習(xí)十四說(shuō)課稿 蘇教版001
- 10《爬山虎的腳》第二課時(shí) 說(shuō)課稿-2024-2025學(xué)年語(yǔ)文四年級(jí)上冊(cè)統(tǒng)編版
- Unit 3 My weekend plan Part 6(說(shuō)課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè)
- 生了病怎么辦 (課件)-2024-2025學(xué)年人教版(2024)體育一年級(jí)全一冊(cè)
- Review Module Unit 1(說(shuō)課稿)-2023-2024學(xué)年外研版(三起)英語(yǔ)四年級(jí)下冊(cè)
- 17《松鼠》說(shuō)課稿-2024-2025學(xué)年五年級(jí)語(yǔ)文上冊(cè)統(tǒng)編版001
- 2025農(nóng)村宅基地轉(zhuǎn)讓合同模板
- 8網(wǎng)絡(luò)新世界 第一課時(shí) 說(shuō)課稿-2023-2024學(xué)年道德與法治四年級(jí)上冊(cè)統(tǒng)編版
- 2025年全國(guó)科技活動(dòng)周科普知識(shí)競(jìng)賽試題庫(kù)及答案
- 工廠(chǎng)生產(chǎn)區(qū)清潔流程及安全規(guī)范
- 化學(xué)丨百師聯(lián)盟2025屆高三1月一輪復(fù)習(xí)聯(lián)考(五)化學(xué)試卷及答案
- 2024年全國(guó)職業(yè)院校技能大賽中職(酒店服務(wù)賽項(xiàng))備賽試題庫(kù)(500題)
- 工程建設(shè)項(xiàng)目培訓(xùn)
- 高速公路巡邏車(chē)司機(jī)勞動(dòng)合同
- 2025中國(guó)大唐集團(tuán)內(nèi)蒙古分公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 充血性心力衰竭課件
- 2025年日歷(日程安排-可直接打印)
- 《VAVE價(jià)值工程》課件
- 分享二手房中介公司的薪酬獎(jiǎng)勵(lì)制度
評(píng)論
0/150
提交評(píng)論