字符及字符串輸入輸出與順序程序設(shè)計(jì)實(shí)驗(yàn)(Word版_第1頁
字符及字符串輸入輸出與順序程序設(shè)計(jì)實(shí)驗(yàn)(Word版_第2頁
字符及字符串輸入輸出與順序程序設(shè)計(jì)實(shí)驗(yàn)(Word版_第3頁
字符及字符串輸入輸出與順序程序設(shè)計(jì)實(shí)驗(yàn)(Word版_第4頁
字符及字符串輸入輸出與順序程序設(shè)計(jì)實(shí)驗(yàn)(Word版_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理第二次試驗(yàn) 字符及字符串輸入輸出與順序程序設(shè)計(jì)實(shí)驗(yàn)班級:姓名:學(xué)號: 日期:2.2 字符及字符串輸入輸出與順序程序設(shè)計(jì)實(shí)驗(yàn)2.2.1 實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)和掌握字符及字符串的輸入輸出方法。2、掌握順序程序的設(shè)計(jì)方法。3、進(jìn)一步掌握調(diào)試工具的使用方法。2.2.2 實(shí)驗(yàn)預(yù)習(xí)要求1、 復(fù)習(xí)DOS功能調(diào)用中用于字符輸入(功能號01H)、字符輸出(功能號02H)、字符串輸入(功能號為0AH)以及字符串輸出(功能號09H)的調(diào)用方法(詳見教材5.5.6)。2、 復(fù)習(xí)BCD碼運(yùn)算調(diào)整指令。3、 根據(jù)“2.2.3 實(shí)驗(yàn)內(nèi)容”中給出的源程序框架編寫完整的源程序,以便實(shí)驗(yàn)時(shí)調(diào)試。4、 從“2.2.4 實(shí)驗(yàn)習(xí)題

2、”中任選一道題目,編寫源程序,以便上機(jī)調(diào)試。2.2.3 實(shí)驗(yàn)內(nèi)容 從鍵盤輸入兩個(gè)一位十進(jìn)制數(shù),計(jì)算這兩個(gè)數(shù)之和,并將結(jié)果在屏幕上顯示出來。1、 問題分析 比如使用功能號為01H的用于實(shí)現(xiàn)單個(gè)字符輸入的DOS功能調(diào)用接收從鍵盤輸入的兩個(gè)十進(jìn)制數(shù)8和6,這時(shí)計(jì)算機(jī)內(nèi)部得到的是這兩個(gè)數(shù)的ASCII碼值38H和36H。由于數(shù)字09的ASCII碼值與其代表的數(shù)值之間相差30H,因此將其減去30H即可得到以非壓縮型BCD數(shù)形式表示的十進(jìn)制數(shù)08H和06H,使用ADD指令對它們進(jìn)行相加后結(jié)果為0EH(00001110B),顯然需要用非壓縮型BCD數(shù)加法調(diào)整指令對ADD的運(yùn)算結(jié)果進(jìn)行調(diào)整,調(diào)整后得到兩個(gè)非壓縮

3、型BCD數(shù)01H和04H,將它們分別加上30H后變?yōu)槠鋵?yīng)的ASCII碼31H(1的ASCII碼)和34H(4的ASCII碼),然后調(diào)用功能號為02H用于單個(gè)字符輸出的DOS功能調(diào)用將它們顯示出來。綜上所述,需要考慮以下問題。(1)從鍵盤輸入一個(gè)一位十進(jìn)制數(shù)的方法 通過功能號為1的DOS功能調(diào)用實(shí)現(xiàn)從鍵盤輸入一個(gè)字符,格式如下:MOVAH, 01HINT21H;此時(shí)程序等待用戶鍵入,鍵入字符的ASCII碼值存在AL中SUBAL, 30H;減去30H后得到鍵入數(shù)字所代表的數(shù)值(2) 提示信息字符串的顯示通過功能號為9的DOS功能調(diào)用實(shí)現(xiàn)字符串顯示,注意字符串的最后一個(gè)字符必需為$。指令格式如下:

4、MOV DX, OFFSET INFOR1;INFOR1為在數(shù)據(jù)段中定義的要顯示的字符串 MOV AH, 09H INT 21H(2)非壓縮型BCD數(shù)加法調(diào)整指令的使用設(shè)從鍵盤輸入的數(shù)值已存放在寄存器AL, BL中,可用下列程序完成數(shù)據(jù)相加和調(diào)整操作:XORAH,AHADD AL, BLAAA;執(zhí)行該指令后,AH中為和的十位上的數(shù)字,AL中為個(gè)位上的數(shù)字請讀者考慮,為什么要使用指令“XOR AH,AH”,不用行否?(3)計(jì)算結(jié)果的顯示執(zhí)行完AAA指令后,只需分別將AH(十位上的數(shù)值)和AL(個(gè)位上的數(shù)值)加上30H,并依次調(diào)用功能號為2的DOS功能調(diào)用來顯示字符。具體指令代碼如下:PUSH A

5、XMOV DL, AHADD DL, 30HMOV AH, 02HINT 21HPOP AXMOV DL, ALADD DL, 30H MOV AH, 02H INT 21H2、 源程序框架DATASEGMENT INFOR1 DB "Please Input the First Data(<10):$" INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$" INFOR3 DB 0AH,0DH,"The Result is:$";0DH和0AH分別為非顯示字符回;車

6、和換行的ASCII碼值,美圓符號“$”為字符串結(jié)束標(biāo)志,不能省略。DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATASTART:MOVAX, DATA MOV DS, AX顯示提示信息INFOR1并從鍵盤接收一個(gè)字符的指令序列 SUB AL, 30HMOV BL, AL求和并調(diào)整指令序列顯示提示信息INFOR2并從鍵盤接收一個(gè)字符的指令序列SUB AL, 30H顯示提示信息INFOR3的指令序列PUSH AXPOP AXPUSH AX顯示十位及個(gè)位上數(shù)字的指令序列MOV AH, 4CH INT 21HCODE ENDS END START3、 程序調(diào)

7、試 源程序編寫完成后,先靜態(tài)檢查,無誤后,對源程序進(jìn)行匯編和連接,生成可執(zhí)行文件。在DOS命令提示符下運(yùn)行該程序,分析運(yùn)行結(jié)果是否正確。若結(jié)果不正確,使用DEBUG對其進(jìn)行調(diào)試。2.2.4 實(shí)驗(yàn)習(xí)題1、 設(shè)a,b,c,d為四個(gè)壓縮型BCD數(shù),它們被存放在內(nèi)存dbcd開始的4個(gè)存儲單元中,計(jì)算a+b+c+d,并將結(jié)果在屏幕上顯示出來(注意壓縮型BCD數(shù)的表示方法:十進(jìn)制數(shù)38表示成壓縮型BCD數(shù)時(shí)應(yīng)寫成38H)。程序編寫完成并運(yùn)行正確后,打開源程序,改變a,b,c,d的內(nèi)容,然后重新進(jìn)行匯編、連接并運(yùn)行程序,檢查程序運(yùn)行結(jié)果與手工計(jì)算結(jié)果是否相符。下面給出幾組實(shí)驗(yàn)用數(shù)據(jù):(1) a=11, b=

8、23, c=25, d=31(2) a=10, b=20, c=30, d=40(3) a=45, b=45, c=45, c=45(4) a=88, b=99, c=77, d=66(注意壓縮型BCD數(shù)的表示方法:十進(jìn)制數(shù)38表示成壓縮型BCD數(shù)時(shí)應(yīng)寫成38H)2、 從鍵盤輸入兩個(gè)一位十進(jìn)制數(shù),計(jì)算這兩個(gè)數(shù)之積,并將結(jié)果在屏幕上顯示出來。3、 從鍵盤輸入09中任意一個(gè)數(shù)自然數(shù),將其平方值在屏幕上顯示(使用查表法實(shí)現(xiàn))。2.2.5 實(shí)驗(yàn)報(bào)告要求1、 補(bǔ)全“2.2.3 實(shí)驗(yàn)內(nèi)容”中源程序框架內(nèi)未寫出的程序代碼,并說明你在調(diào)試該程序過程中遇到了哪些問題,是如何處理的。補(bǔ)全后的代碼如下:STACK

9、SEGMENT STL DB 100H DUP(?)STACK ENDSDATASEGMENT INFOR1 DB "Please Input the First Data(<10):$" INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$" INFOR3 DB 0AH,0DH,"The Result is:$"DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA,SS:STACKSTART:MOVAX, DATA MOV

10、DS, AXMOVAX, STACK MOV SS, AX MOV SP, LENGTH STL ;表達(dá)式“LENGTH STL”的功能為計(jì)算STL中定義的變量的個(gè)數(shù), ;匯編后其值為100H ,詳見教材5.2.2MOV DX, OFFSET INFOR1;INFOR1為在數(shù)據(jù)段中定義的要顯示的字符串 MOV AH, 09H INT 21HMOVAH, 01HINT21H;此時(shí)程序等待用戶鍵入,鍵入字符的ASCII碼值存在AL中SUBAL, 30H ;減去30H后得到鍵入數(shù)字所代表的數(shù)值MOV BL, ALMOV DX, OFFSET INFOR2;INFOR2為在數(shù)據(jù)段中定義的要顯示的字符串

11、 MOV AH, 09H INT 21HMOVAH, 01HINT21H;此時(shí)程序等待用戶鍵入,鍵入字符的ASCII碼值存在AL中SUBAL, 30H;減去30H后得到鍵入數(shù)字所代表的數(shù)值XORAH,AHMUL BLAAA;執(zhí)行該指令后,AH中為和的十位上的數(shù)字,AL中為個(gè)位上的數(shù)字PUSH AXMOV DX, OFFSET INFOR3;INFOR3為在數(shù)據(jù)段中定義的要顯示的字符串 MOV AH, 09H INT 21HPOP AXPUSH AXMOV DL, AHADD DL, 30HMOV AH, 02HINT 21HPOP AXMOV DL, ALADD DL, 30H MOV AH,

12、 02H INT 21HMOV AH, 4CH INT 21HCODE ENDS END START2、 從“2.2.4 實(shí)驗(yàn)習(xí)題”中任選一道題目,畫出流程圖,編寫源程序,并說明在調(diào)試過程中遇到了哪些問題,是如何處理的。2. 從鍵盤輸入兩個(gè)一位十進(jìn)制數(shù),計(jì)算這兩個(gè)數(shù)之積,并將結(jié)果在屏幕上顯示出來。調(diào)試中遇到的問題:開始沒有用的AAM指令,即非壓縮型BCD乘法調(diào)整指令,而是沿用了上例中的AAA指令,結(jié)果中有些可以正常顯示,如1*2,3*2,3*4,而像5*6,5*5,4*4就不能正常顯示。后查書找到了乘法調(diào)整指令,修正后正常運(yùn)行。流程圖: 開始定義數(shù)據(jù)段,堆棧段裝填數(shù)據(jù)段顯示提示信息,鍵入一個(gè)字

13、符,并存至AL中,顯示其ASCII碼值將鍵入字符的數(shù)值保存到BL中,即將字符減掉30H重復(fù)第4步MUL BL調(diào)整結(jié)果,使其為非壓縮型BCD碼顯示結(jié)果結(jié)束源代碼:STACK SEGMENT STL DB 100H DUP(?)STACK ENDSDATASEGMENT INFOR1 DB "Please Input the First Data(<10):$" INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$" INFOR3 DB 0AH,0DH,"The Result is

14、:$"DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA,SS:STACKSTART:MOVAX, DATA MOV DS, AXMOV DX, OFFSET INFOR1;INFOR1為在數(shù)據(jù)段中定義的要顯示的字符串 MOV AH, 09H INT 21HMOVAH, 01HINT21H;此時(shí)程序等待用戶鍵入,鍵入字符的ASCII碼值存在AL中SUBAL, 30H;減去30H后得到鍵入數(shù)字所代表的數(shù)值MOV BL, ALMOV DX, OFFSET INFOR2;INFOR2為在數(shù)據(jù)段中定義的要顯示的字符串 MOV AH, 09H INT

15、 21HMOVAH, 01HINT21H;此時(shí)程序等待用戶鍵入,鍵入字符的ASCII碼值存在AL中SUBAL, 30H;減去30H后得到鍵入數(shù)字所代表的數(shù)值MULBL;AL BL相乘AAM;非壓縮型BCD碼乘法調(diào)整指令PUSHAXMOV DX, OFFSET INFOR3;INFOR3為在數(shù)據(jù)段中定義的要顯示的字符串 MOV AH, 09H INT 21HPOP AXPUSH AXMOV DL, AH;執(zhí)行完AAM指令后,只需分別將AH(十位上的數(shù)值)和AL(個(gè)位上的數(shù)值)加上30H,ADD DL, 30H;并依次調(diào)用功能號為2的DOS功能調(diào)用來顯示字符。MOV AH, 02HINT 21HPOP AXMOV DL, ALADD DL, 30H MOV AH, 02H INT 21HMOV AH, 4CH INT 21HCODE ENDS END START3、寫出實(shí)驗(yàn)小結(jié),內(nèi)容包括實(shí)驗(yà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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論