微型計算機課程設(shè)計_簡易計算器(李智)_第1頁
微型計算機課程設(shè)計_簡易計算器(李智)_第2頁
微型計算機課程設(shè)計_簡易計算器(李智)_第3頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計設(shè)計名稱:微型計算機技術(shù)及應(yīng)用一一簡易計算器學(xué) 院:信息工程學(xué)院課 程:微型計算機技術(shù)及應(yīng)用姓 名:智學(xué)號: 201407010252班 級:2014級計算機科學(xué)與技術(shù)二班目錄摘要 3一、前言 41.1背景 41.2項目介紹 4二、課程設(shè)計的目的與任務(wù) 52.1設(shè)計目的 522設(shè)計任務(wù) 5三、設(shè)計過程 53.1基礎(chǔ)理論 5簡介 5中斷 8四、設(shè)計 114.1總體方案 114.2原理框圖 124.3程序代碼 13五、系統(tǒng)模塊詳細(xì)設(shè)計與調(diào)試 245.1系統(tǒng)模塊詳細(xì)設(shè)計 24設(shè)置屏幕顯示方式 24顯示主菜單 24從鍵盤接收一個數(shù)字 24接收鍵入用于計算的數(shù) 25顯示結(jié)果 25子程序A2將數(shù)的

2、ASCII碼轉(zhuǎn)為二進(jìn)制數(shù) 25將計算結(jié)果的二進(jìn)制數(shù)轉(zhuǎn)換為對應(yīng)的十進(jìn)制數(shù) ASCII碼并輸出顯示(A3程序段) 275.2程序編譯、運行與調(diào)試 27六、設(shè)計總結(jié) 29七、參考文獻(xiàn) 31摘要本次課程設(shè)計是通過使用 DOSBo匯匚編語言編程軟件實現(xiàn)的利用 匯編語言編寫的較為復(fù)雜的程序設(shè)計。 該課程設(shè)計主要是設(shè)計一個較 為簡單的計算器,界面顯示要求用戶從鍵盤上分別輸入兩個隨機數(shù), 完成四則運算,然后將運算結(jié)果顯示到屏幕上。該設(shè)計智能實現(xiàn)簡單 的正整數(shù)之間的四則運算,無法對小數(shù)進(jìn)行精確地識別。而除法運算 可以精確到3位小數(shù),減法可以顯示出負(fù)數(shù)的結(jié)果。采用DOS調(diào)用(INT 21H)來完成鍵盤的輸入和屏幕

3、的輸出。通過這次的課程設(shè)計能夠進(jìn)一步加深對專業(yè)知識和理論知識學(xué)習(xí)的認(rèn)識和理解。關(guān)鍵詞:DOSBox微機原理;計算器;匯編語言、八 、亠一、 刖言1.1背景計算器是現(xiàn)代人發(fā)明的可以進(jìn)行數(shù)字運算的電子機器。現(xiàn)代的電子計算器能進(jìn)行數(shù)學(xué)運算的手持電子機器,擁有集成電路芯片,但結(jié) 構(gòu)比電腦簡單得多,可以說是第一代的 電子計算機(電腦),且功能 也較弱。隨著微機和手機的普及,計算器逐漸退出了人們的視野,只 能被局限于在課堂之上的計算工具。雖然計算器的使用圍逐漸縮小, 但計算器依舊在不斷發(fā)展。即使科技的發(fā)展帶動著小型計算器成為一 個移動的計算實驗室。但它的核心卻依然沒有逃脫最簡單的四則運算: 加、減、乘和除

4、。1.2項目介紹本次課程設(shè)計就是根據(jù)微機原理與接口的相關(guān)知識,利用BIOS和DOS的中斷來設(shè)計一個簡易計算器,能夠?qū)崿F(xiàn)加減乘除四則運算, 并在屏幕上顯示一個主菜單,提示用戶輸入相應(yīng)的數(shù)字鍵,分別執(zhí)行 加、減、乘、除四種計算功能和結(jié)束程序的功能。同時利用BIOS中斷的10號功能調(diào)用來設(shè)置顯示方式,利用 DOS中斷的01號和02號 子功能來完成鍵盤接收,結(jié)果顯示。二、課程設(shè)計的目的與任務(wù)2.1設(shè)計目的為了使學(xué)生加深對所學(xué)的微機原理知識的理解,培養(yǎng)學(xué)生的專業(yè)素質(zhì),提高其利用微機原理知識處理問題的能力,為今后專業(yè)課程的 學(xué)習(xí)、畢業(yè)設(shè)計和工作打下良好的基礎(chǔ)。 使學(xué)生能比較扎實地掌握微 機原理的基礎(chǔ)知識和

5、基本理論,掌握控制系統(tǒng)及有關(guān)設(shè)備的分析、開 發(fā)等基本技能,受到必要工程訓(xùn)練、初步的科學(xué)研究方法訓(xùn)練和實踐 鍛練,增強分析問題和解決問題的能力,了解微機原理和接口技術(shù)的 新發(fā)展。2.2設(shè)計任務(wù)本課程設(shè)計是制作出一個簡易的計算器,并可以在DOCBO上運行,并且正確地完成加、減、乘、除等四則運算。三、設(shè)計過程3.1基礎(chǔ)理論簡介由于微軟公司對 windos7的64位操作系統(tǒng)取締了為匯編程序開放的 Edit、Masm Link以及Debug 等的功能。所以我選擇了一款比較簡單但同樣適用的Dos環(huán)境仿真器DOSBo。DOSBo是一種創(chuàng)造類DOS環(huán)境的開源x86仿真器,通常用于運 行近代計算機或者非IBMP

6、C兼容機的MS-DOSIBMF兼容程序。不僅如 此,它還是一個完整的中央處理器仿真器,并不是一個兼容層如 dosemu或者依賴386類處理器虛擬化能力的 Windows與OS/2VDM不 需要x86中央處理器或者任何DOS版本以運行,并且能運行真實模式 與保護(hù)模式的程序。雖然DOSBo是Dos的仿真器,但它只是具有搭載環(huán)境的能力, 卻并沒有自帶匯編程序的運行環(huán)境,。我們需要下載相對應(yīng)的運行環(huán) 境masm或tasm。當(dāng)在下載完成后,我們需要對 DOSBoX進(jìn)行相對應(yīng) 的設(shè)置。當(dāng)配置好環(huán)境后,現(xiàn)在我們就可以使用它進(jìn)行Edit,Masm,L in k,Debug 了EDIT:Masn和 Link :

7、>masnliurosof i; (R) Macro Assemb 1 er- Uers iom 5.90Source f ilename廂Hl; tESt Xcsi«dBJJ: MUL.LSTJ: NUL.CRFJ:Opyright (C) Nicrasoft Corp L9B1-1SE5, 19B7. fill rights reserved.3b Jcct f i lenamc Source listing ross-rcrcrcncc51760 + 1&4764sgrArM space free© Warding ErrorsG Seuere Erro

8、rsp:>linkMicrosoft (R) O*jerl«y Linker Uers ion 3 .60Copyright (C) Microsoft Corp 1583-19B7. All rights reserved.Ob ject Modules (.OBJ): testRun File LTEST.EXE1:List File LMUL.MAPJ:Libraries .LIB:LINK : uarming L4CK1: no stack segment完成masn和link兩步以后,我們就得到了可以運行的程序exe文件了:C :>test .exieC:S&g

9、t;test.exeC:>Debug:|C :X>DebugK73F:01007403JZ0106G73F:01GeE957O0J MF013C073F :O1O5BB050GMOVAX, 0005073F:01G050PUSHAX10?3F:01CnFF363C21PUSHZ13C1073F;O1ODFF363AE1PUSHZL3f)JOT3F:9111EB4C14CALL1&0G73F:0114S3C406AIDSP,*06073F:O11?IKGFOHOUrur-ecix673F:911ft895634HOU(BP+34LDXQ73F;911DO0EEEX70BADD

10、0B07LCHBXOGOOCX=09OO DX=GOG0 SP=0OFDBP-eoee31=0000DI 二 9060PS=D?3F ES=GT?3FSS=G73F CS=G?3F IP=01Q0MU UP Elfl mz nnFD MC|673F:&1007400JZ01051- ; _通過這幾個步驟,我們就可以得到我們需要的可以正確執(zhí)行地exe文件了。中斷3.121 何謂中斷所謂中斷,是指CPU在執(zhí)行當(dāng)前程序時,由于外部事件和部事件, 使得CPU中斷正在執(zhí)行的程序,轉(zhuǎn)到為外部與部事件服務(wù)的程序中去 執(zhí)行。當(dāng)服務(wù)程序執(zhí)行完畢,再返回帶剛才被中斷的程序的斷點處, 繼續(xù)執(zhí)行。8086有一

11、個強有力的中斷系統(tǒng),可以處理 256種不同的中斷, 每個中斷對應(yīng)一個類型號,所以, 256種中斷對應(yīng)的中斷類型號為 0255.這256種中斷可以分成兩大類:一類叫硬件中斷;一類叫軟件中 斷。硬件中斷是通過外部的硬件產(chǎn)生的,所以,也常常把硬件中斷。硬件中斷又分為兩類:一類叫非屏蔽中斷;另一類叫可屏蔽中斷。非 屏蔽中斷是通過CPU的NMI引腳進(jìn)入,它不受中斷允許標(biāo)志IF的屏 蔽,并且整個系統(tǒng)中只有一個非屏蔽中斷。 可屏蔽中斷是通過CPU的 INTR引腳進(jìn)入的,并且只有當(dāng)中斷允許標(biāo)志IF為1時,可屏蔽中斷 才能進(jìn)入,如果中斷允許標(biāo)志IF為0,則可屏蔽中斷受到禁止。軟 件中斷是CPU根據(jù)某條指令或者軟

12、件對標(biāo)志寄存器的設(shè)置而產(chǎn)生的, 從軟件中斷的產(chǎn)生過程來說,完全和硬件電路無關(guān)。典型的軟件中斷 是除數(shù)為0引起的中斷和中斷指令引起的中斷。3.122中斷向量和中斷向量表8086的中斷系統(tǒng)以位于存0段的03FFH區(qū)域的中斷向量表為基 礎(chǔ),中斷向量表中最多可容納256個中斷向量。所謂中斷向量,實際 上就是中斷處理子程序的入口地址,每個中斷類型對應(yīng)一個中斷向量。中斷向量并不是任意存放的。一個中斷向量占4個存儲單元,其 中,前兩個單元存放中斷處理子程序入口地址的偏移量(IP),低位 在前,高位在后,后兩個單元存放中斷處理子程序入口地址的段地址(CS ,同樣也是低位在前,高位在后。256個中斷的前5個是

13、專用中斷。類型0的中斷稱 作除數(shù)為0中斷;類型1的 中斷稱為單步中斷;非屏蔽 中斷對應(yīng)類型2;類型3的 中斷為斷點中斷;而類型4 的中斷為溢出中斷。除了非 屏蔽中斷外,其他幾個中斷 都是軟件中斷。3.123 中斷方式為了提高CPU的效率 和使系統(tǒng)有實時性能,可采 用中斷傳送方式。在中斷方 式下,外設(shè)具有申請CPU服務(wù)的主動權(quán),當(dāng)輸入設(shè)備將數(shù)據(jù)準(zhǔn)備好或 輸出設(shè)備可接收數(shù)據(jù)時,便可向CPU發(fā)中斷請求,使CPU暫時停下來 目前的工作而和外設(shè)進(jìn)行一次數(shù)據(jù)傳輸。 等輸入操作或輸出操作完成 后,CPU®續(xù)進(jìn)行原來的工作。(如左圖:)四、設(shè)計4.1總體方案利用BIOS中斷的10號功能調(diào)用來設(shè)置顯示

14、方式。利用DOS斷的01號、02號子功能來完成鍵盤接受、結(jié)果顯示。 設(shè)置屏幕顯示方式。MOV AH ,00HMOV AL , NUMINT 10H接著從鍵盤上接受鍵值,并判別后轉(zhuǎn)到相應(yīng)的子模塊進(jìn)行運算, 并顯示結(jié)果。MOV AH ,01HINT 21H; AL=g入字符的 ASCII 碼從鍵盤上接收一串字符串命令:MOV AH ,0AHMOV DX ,OFFSET BUF ; BUF為數(shù)據(jù)段中定義的數(shù)據(jù)緩沖區(qū)INT 21H顯示單個字符命令:MOV AH,02HINT 21H顯示一串字符串的命令:MOV AH , 09HMOV DX , OFFSET BUF ; BUF為被顯示字符串的首地址 I

15、NT 21H十進(jìn)制數(shù)顯示過程:將十進(jìn)制數(shù)送到 BX中,BX除以1000,余數(shù) 送BX中,商在AL中,圍為09,顯示AL中的容。BX除以100,余 數(shù)送BX中,商在AL中,顯示AL中的容,依次類推,直到分出個位 數(shù)字。如最高位為0,則不應(yīng)顯示,而非最高位的0則顯示。可利用設(shè) 標(biāo)志位并結(jié)合商的方法來決定是否顯示 0。4.2原理框圖主程序子程序4.3程序代碼DATA SEGMENTN=15TOP DB 5 DUP(OAH)DB N DUP(' '),' Please in put a number to choose thearithmetic operatio n'

16、, 0DH,0AHDB N DUP(' '),'DB N DUP(' '),'1DB N DUP(' '),'2DB N DUP(' '),'3DB N DUP(' '),'4DB N DUP(' '),'5DB N DUP(' '),'',0DH,0AHadd', 0DH,0AHsubtract', 0DH,0AHmultiply ', 0DH,0AHdivide', 0DH,0AHre

17、turn to DOS ', 0DH,0AH',0DH,0AHDB N DUP(' '),'CHOICE (12345):$'MESG2 DB 0DH,0AH,'PLEASE INPUT THE FIRST NUMBER :$'MESG3 DB 0DH,0AH,'PLEASE INPUT THE SECOND NUMBER :$'MESG4 DB 0DH,0AH,'PLAY ADD :$'MESG5 DB 0DH,0AH,'PLAY SUBTRACT :$'MESG6 DB 0DH,

18、0AH,'PLAY MULTIPL Y :$'MESG7 DB 0DH,0AH,'PLAY DIVIDE :$'MESG8 DB 0DH,0AH,'THE RESULT :$'MESG9 DB 0DH,0AH,'PRESS Q RETURN DOS,AN Y PRESS RETURNSTART!$'BUF1 DB 6DB ?;十進(jìn)制數(shù)的緩沖區(qū),可接收 6個字符 ;保留,用于10號調(diào)用時DOS填入實際輸入字符數(shù)DB 6 DUP;一個符號位,四位數(shù)字ASCII碼,加上一個回車符BUF2 DW ?;將第一個數(shù)轉(zhuǎn)換為二進(jìn)制后,放于這里BU

19、F3 DB 6 DUP,'$'將結(jié)果轉(zhuǎn)換為ASCII碼后,放在這DATA ENDSSTACK SEGMENT STACK'STACK'STACK ENDSCODE SEGMENTASSUME CS:CODE , DS:DATASTART: MOV AX,DATAMOV DS,AX;設(shè)置屏幕顯示方式MOV AH,00HMOV AL,0INT 10HMOV AH,09HMOV DX,OFFSET TOPINT 21HAA:MOV AH,01HINT 21HCMP AL,'1';顯示菜單;從鍵盤接收一個數(shù)字;與1比較JNENEXT1;不等于1就轉(zhuǎn)到NE

20、XT1JMP JIANEXT1: CMP AL,'2'JNE NEXT2JMP JIANNEXT2: CMP AL,3JNE NEXT3JMP CHENGNEXT3: CMP AL,'4'JNE NEXT4JMP CHUNEXT4: CMP AL,'5'JNE NEXT5MOV AH,4CHINT 21HNEXT5: MOV AH,09HMOV DX,OFFSET MESG1INT 21HJMP AAA1 PROC NEARMOV AH,09HMOV DX,OFFSET MESG2;等于1就轉(zhuǎn)到加法程序;與2比較; 不等于2就轉(zhuǎn)到NEXT2;等于

21、2就轉(zhuǎn)到減法程序;與3比較; 不等于3就轉(zhuǎn)到NEXT3;等于3就轉(zhuǎn)到乘法程序;與4比較; 不等于4就轉(zhuǎn)到NEXT4;等于4就轉(zhuǎn)到除法程序;與5比較; 不等于5就轉(zhuǎn)到NEXT5; 返回DOS; 顯示MESG1; 跳到AA;提示輸入第一個數(shù)INT 21HMOV AH,0AHMOV DX,OFFSET BUF1INT 21H;接收第一個數(shù)CALL A2;調(diào)用A2進(jìn)行ASCII-二進(jìn)制的轉(zhuǎn)換MOV BUF2,AX;把第一個數(shù)轉(zhuǎn)換的二進(jìn)制放在 BUF2MOV AH,09H;提示輸入第二個數(shù)MOV DX,OFFSET MESG3INT 21HMOV AH,0AHMOV DX,OFFSET BUF1INT

22、21H接收第二個數(shù)CALL A2二進(jìn)制轉(zhuǎn)換;調(diào)用A2把第二個數(shù)進(jìn)行ASCII-RETA1 ENDPA2 PROC NEARMOV CL,BUF1 + 1; 把BUF1 + 1中的實際鍵入的字符數(shù)放入CLMOV CH,0; CH 清零MOV BX,OFFSET BUF1+2; 把第一個數(shù)字的地址放在BX保護(hù)BXPUSH BXPUSH CX;保護(hù)CXL1:MOV AL,BXAND AL,0FH;把ASCII碼轉(zhuǎn)換為十進(jìn)制MOV BX,AL;存放十進(jìn)制INC BX;下一個數(shù)字的地址LOOP L1POP CX;恢復(fù)CXPOP BX;恢復(fù)BXMOV AX,0;將累加和賦零MOV SI,10L2:MUL

23、SIADD AL,BXADC AH,0INC BXLOOP L2;累加乘10L3:RETA2ENDPJIA:MOV AH,09H; 加法程序MOV DX,OFFSET MESG4INT 21HCALL A1;調(diào)用A1ADD AX,BUF2;把轉(zhuǎn)換后的放在BUF2;減法程序;把轉(zhuǎn)換后的放在;把轉(zhuǎn)換后放在;兩數(shù)相減; 乘法程序;把轉(zhuǎn)換后的放在;把轉(zhuǎn)換后的放在;兩數(shù)相乘中的第一個數(shù)和放在AX的第二個數(shù)相加JMP A3JIAN: MOV AH,09HMOV DX,OFFSET MESG5INT 21HCALL A1MOV BX,AXAX的第二個數(shù)放到BXMOV AX,BUF2BUF2中的第一個數(shù)放到A

24、XSBB AX,BXJMP A3CHENG: MOV AH,09HMOV DX,OFFSET MESG6INT 21HCALL A1MOV BX,AXAX的第二個數(shù)放到BXMOV AX,BUF2BUF2中第一個數(shù)放到AXMUL BXJMP A3CHU: MOV AH,09HMOV DX,OFFSET MESG7INT 21HCALL A1MOV DX,AXAX的第二個數(shù)放到DXMOV AX,BUF2BUF2中第一個數(shù)放到AXDIV DLAL里MOV AH,0HJMP A3A3:MOV BUF3,'+'CMP AX,0JGE L4NEG AXMOV BUF3,'-'

25、;L4:CWDMOV BX,10000DIV BX在AL,余數(shù)放在DX;除法程序;把轉(zhuǎn)換后的放在;把轉(zhuǎn)換后的放在;兩數(shù)相除,商在; 使AH清零;把 BUF3放'+';把結(jié)果于0比較;AX>0 轉(zhuǎn)至 U L4;AX<0將AX取反;把 BUF3放'-'商為第一位數(shù)字放CALL BBMOV BUF3+1,ALBUF3+1單元中MOV AX,DX數(shù)放到AXCWDMOV BX,1000DIV BX在AL,余數(shù)放在DXCALL BBMOV BUF3+2,ALBUF3+2單元中MOV AX,DX數(shù)放到AXMOV BL,1OODIV BL在AL,余數(shù)放在AHCALL

26、 BBMOV BUF3+3,ALBUF3+3單元中MOV AL,AH數(shù)放到AL;把第一個數(shù)放在把放在DX中的余;商為第二位數(shù)字放;把第二個數(shù)放在把放在DX中的余;商為第三位數(shù)字放;把第三個數(shù)放在把放在AH中的余CBW;商為第四位數(shù)字放;把第四個數(shù)放在;把個位轉(zhuǎn)為ASSCII;把第五個數(shù)放在;提示結(jié)果; 把放在BUF3緩沖;提示是返回DOS;接收鍵盤數(shù)字MOV BL,1ODIV BL在AL,余數(shù)放在ACALL BBMOV BUF3+4,ALBUF3+4單元中ADD AH,30H碼MOV BUF3+5,AHBUF3+5單元中MOV AH,09HMOV DX,OFFSET MESG8INT 21HM

27、OV AH,09HMOVDX,OFFSEBUF3區(qū)中的結(jié)果顯示出來INT 21HMOV AH,09H還是重新計算MOV DX,OFFSET MESG9INT 21HMOV AH,01HINT 21HCMP AL,QJE A4JMP NEXT5算BB PROC NEARCMP AL,0HJE L5JMP L6L5:MOV AL,20H格JMP L7L6: ADD AL,30H;其他數(shù)字重新計; 與零比較;等于零,賦AL空;不等于零,把數(shù)轉(zhuǎn)為ASSCII碼L7:RETBBENDPA4:MOV AH,4CH;AL等于'Q'就返回DOSINT 21HCODE ENDSEND START

28、五、系統(tǒng)模塊詳細(xì)設(shè)計與調(diào)試5.1系統(tǒng)模塊詳細(xì)設(shè)計設(shè)置屏幕顯示方式MOV AH,00HMOV AL,0INT 10H通過調(diào)用BOIS的00!號功能來設(shè)置屏幕顯示方式。此處AL=O, 即設(shè)置屏幕顯示方式為40*25黑白文本。顯示主菜單MOV AH,09HMOV DX,OFFSET TOPINT 21H先在數(shù)據(jù)段中定義主菜單中要顯示的字符串,再通過調(diào)用DOS系統(tǒng)的09H號功能一一顯示字符串(串尾字符為$,但不顯示)來 完成。從鍵盤接收一個數(shù)字MOV AH,01HINT 21H通過調(diào)用DOSg統(tǒng)的01H號功能一一鍵入字符并回車來實現(xiàn),其出口參數(shù)為鍵入字符的 ASCII碼,存在AL中接收鍵入用于計算的數(shù)

29、MOV AH,0AHMOV DX,OFFSET BUF1通過調(diào)用DOSg統(tǒng)的0AH號功能一一鍵入字符串至存緩 沖區(qū)來實現(xiàn),其入口參數(shù)如下:DS DX=放鍵入字符串的緩沖區(qū) 的首地址;(DS D»二用戶規(guī)定的緩沖區(qū);(DS DX+1二實際鍵入 的字符數(shù);從(DS DX+2開始放鍵入的字符串。因此,在下面的 程序中運用所鍵入的數(shù)字時要注意字符串的首地址。顯示結(jié)果MOV AH,09HMOV DX,OFFSET BUF3INT 21H將結(jié)果存入數(shù)據(jù)段中定義的緩沖區(qū) BUF3中,再通過調(diào)用DOS 系統(tǒng)的09H號功能一一顯示字符串(串尾字符為$,但不顯示)來 完成。子程序A2將數(shù)的ASCII碼轉(zhuǎn)

30、為二進(jìn)制數(shù)A2 PROC NEARMOV CL,BUF1 + 1; 把 BUF1 + 1中的實際鍵入的字符數(shù)放入CLMOV CH,0MOV BX,OFFSET BUF1+2字的地址放在BXPUSH BXPUSH CXL1:MOV AL,BXAND AL,0FH轉(zhuǎn)換為十進(jìn)制MOV BX,ALINC BX的地址LOOP L1POP CXPOP BXMOV AX,0J | A零MOV SI,10L2:MUL SIADD AL,BXADC AH,0INC BX;CH清零;把第一個數(shù);保護(hù)BX;保護(hù)CX; 把ASCII碼;存放十進(jìn)制;下一個數(shù)字;恢復(fù)CX;恢復(fù)BX;將累加和賦累加乘10LOOP L2L3

31、:RETA2 ENDP入口:十進(jìn)制數(shù)的ASCII在BUF1出口:轉(zhuǎn)換后的二進(jìn)制數(shù)在AX。算法:先將其轉(zhuǎn)換為十進(jìn)制,再用累加和乘10加X的方法變?yōu)槎M(jìn)制,如將163轉(zhuǎn)換為二進(jìn)制數(shù),可先將累加和賦 0,再計算(0*10+1)*10+6) *10+3)結(jié)果為二進(jìn)制數(shù)。將計算結(jié)果的二進(jìn)制數(shù)轉(zhuǎn)換為對應(yīng)的十進(jìn)制數(shù)ASCII碼并輸出顯示(A3程序段)入口 :二進(jìn)制數(shù)在 AX出口:轉(zhuǎn)換后的 ASCII碼在BUF算法:AX的數(shù)圍在+32767到-32768之間,先檢查AX符號位, 決定輸出 +'還是-'若為負(fù),先求補碼得到原碼后可與正數(shù) 統(tǒng)一處理。方法:把將被轉(zhuǎn)換的二進(jìn)制數(shù)先除以10000,商為

32、萬位數(shù),再將余數(shù)除以1000,商為千位數(shù),以此類推,求出百十位數(shù), 剩下的為個位數(shù)。最后各個數(shù)加上 30H即為對應(yīng)字符。5.2程序編譯、運行與調(diào)試在DOS環(huán)境下,鍵入EDIT。啟動全屏幕編輯軟件 EDIT,輸入 源程序。輸入完畢,按 Alt+F選擇SAVE保存程序(規(guī)定擴(kuò)展名為*ASM),按 Alt+X 退出 EDIT狀態(tài)。退出EDIT環(huán)境后,輸入ASM或 MASM文件名/ (省略擴(kuò)展名, 系統(tǒng)默認(rèn)為.ASM),對源程序進(jìn)行匯編。源程序經(jīng)匯編后產(chǎn)生三個 輸出文件:第一個是OBJ文件,即二進(jìn)制目標(biāo)文件,這是匯編的主 要目的;第二個是LST文件,即列表文件;第三個是 CRF文件,對 于一般的程序可

33、以不建立后兩個文件。匯編時,計算機會詢問匯編后生成的 OBJ文件名、LST文件 名和CRF文件名,問句的右側(cè)是示回答,如果不想生成LST文件和 CRF文件,則按回車鍵回答。匯編過程中,如果源程序中有語法錯 誤,貝y匯編過程結(jié)束后,匯編程序會指出源程序中的錯誤,這時, 可以再用編輯程序來修改源程序中的錯誤,最后,得到?jīng)]有語法錯誤的OBJ文件。匯編程序產(chǎn)生的二進(jìn)制目標(biāo)文件不是可執(zhí)行文件,還必須用連接程序(LINK)把OBJ文件轉(zhuǎn)換成可執(zhí)行的EXE文件。LINK程序 有兩個輸入文件OBJ和LIB,兩個輸出文件EXE和MAP連接時, 輸入LINK文件名/,對匯編生成的*.OBJ文件進(jìn)行連接,計算時 會詢問生成的EXE文件名、MAP文件名以及參與連接的庫文件名, 如果不想生成MAP文件,沒有庫文件參與連接,則按回車鍵作答。 最后,生成相應(yīng)的*.EXE文件。從LINK過程的提示信息中,可看 到最后給出了一個“無堆棧段”的警告性錯誤,這并不影響程序的 執(zhí)行。至此,產(chǎn)生了一個EXE文件,在DOS境下可以直接運行該 文件。在程序得到正確的結(jié)果之前,會產(chǎn)生一些

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論