匯編語言實驗報告qxf_第1頁
匯編語言實驗報告qxf_第2頁
匯編語言實驗報告qxf_第3頁
匯編語言實驗報告qxf_第4頁
匯編語言實驗報告qxf_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第1頁共 25 頁匯編語言程序設(shè)計實驗報告學(xué)號:班級:指導(dǎo)老師: 姓名: 實驗時間 學(xué)院:目錄實驗一認(rèn)識 Tddebug 集成環(huán)境 實驗日志.3第2頁共 25 頁實驗二 I/O 程序設(shè)計實驗日志.4實驗三 代碼轉(zhuǎn)換程序設(shè)計 實驗日志.7實驗四 分支程序設(shè)計實驗報告 .12附錄:源代碼.15實驗一:.15實驗二第 1 題.16實驗二第 2 題.17實驗二第 3 題.18實驗二第 4 題.19實驗三第 1 題.20實驗三第 2 題.22實驗三第 3 題.23實驗四.24第3頁共 25 頁實驗一認(rèn)識Tddebug集成環(huán)境實驗日志實驗?zāi)康模?.熟悉匯編程序的開發(fā)過程。2.認(rèn)識 Tddebug 集成操作

2、軟件。3.掌握在 Tddebug 集成環(huán)境中編輯、編譯、連接匯編語言程序方法。4.掌握 INT 21H 軟件中斷來調(diào)用 DOS 內(nèi)部子程序的方法實驗內(nèi)容:1.打開 D 盤的 Tangdutddebugbintddebug.exe2.編輯源程序 hallo world,ALT+F 并生成一個擴(kuò)展名為 ASM 的文本文件存盤3.編譯原程序,ALT+C 選擇編譯,生成擴(kuò)展名為 OBJ 的目標(biāo)文件,出現(xiàn)錯誤則返回 到編輯窗口修改錯誤信息。4.鏈接目標(biāo)程序。ALT+C 選擇 link,生成 exe 文件5.運行可執(zhí)行文件。ALT+R,彈出了程序運行的結(jié)果。6.使用 Rmun 菜單中的 Debug 調(diào)試程

3、序,查看各段內(nèi)存分配情況,和單步執(zhí)行數(shù)據(jù) 傳送指令后各寄存器和數(shù)據(jù)段的內(nèi)容。運行結(jié)果:心得體會:在這次試驗中,認(rèn)識tddebug集成開發(fā)環(huán)境,掌握匯編語言基本程序設(shè)計。由于是第一次實驗,和課堂上理論知識的講解還在初步階段,沒有涉及完整的匯編語言編程,因此不管是對于語言的運用和理解還是對集成開發(fā)環(huán)境的熟悉程度都很微薄。因此在實驗過程遇到了許多小問題和困惑,不過在老師和同學(xué)幫助下都明白了不懂得地方。(1) 第一個問題是編程界面太小,因為不能用鼠標(biāo)定位不方便查看。通過仔細(xì)查看實驗指導(dǎo)書,找到快捷鍵 F5 可以放大/縮小窗口。同時了解了軟件的其它快捷鍵方式。(2) 第二個問題是第一次使用 tddebu

4、g 集成環(huán)境編輯匯編代碼,發(fā)現(xiàn)不能直接使用復(fù)制粘 貼功能,就一行一行的敲代碼。 后來發(fā)現(xiàn),可以使用記事本拷貝源代碼,然后通過改變后綴 名為 ASM 就能直接使用了。(3) 第一次看見完整的匯編程序,但是由于基礎(chǔ)知識的匱乏,如此簡單功能的程序也看不懂。最后在老師講解后才稍微明白。不過這是基本功,需要在課堂上后課堂下的認(rèn)真努力。第4頁共 25 頁實驗二I/O程序設(shè)計實驗日志實驗?zāi)康模?.理解軟中斷的調(diào)用方法及中斷過程。2.掌握 INT 21H 軟件中斷來調(diào)用 DOS 系統(tǒng) I/O 子程序的方法。3.掌握將存儲在內(nèi)存單元中的數(shù)據(jù)在屏幕上顯示的方法。4.掌握從鍵盤輸入信息到內(nèi)存的方法。實驗內(nèi)容:1.

5、【示例】:將指定數(shù)據(jù)區(qū)中一個字節(jié)的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上。設(shè)計思路:首先將該數(shù)以十六進(jìn)制數(shù)形式分解,然后將每一位分別轉(zhuǎn)換為ASCII 碼送屏幕顯示。其中 0H9H 之間的數(shù)加 30H,即可得 0H9H 的 ASCII 碼,而AHFH 的 ASCII 碼,則需再加 7H。2.編程由鍵盤輸入任意一個字符,將該字符的ASCII 碼值顯示在屏幕上。設(shè)計思路:在第一題 MOV SI,OFFSET SD 之后增加如下代碼段MOVAH, 01H ;鍵盤輸入并回顯INT 21HMOVDS:SI,AL ;將 AL 中鍵入的 ASCII 碼存入數(shù)據(jù)段MOVAH, 02H ;輸出回車換行符MOVDL, 0

6、AHINT 21H3從鍵盤輸入兩個 1 位十進(jìn)制數(shù),計算二者之和,并將結(jié)果顯示在屏幕上。設(shè)計思路:用 01H 輸入字符,減去 30H 再相加;結(jié)果大于 10,先輸出“ 1”再減去 10 后輸出結(jié)果(+30H ),小于 10 直接輸出結(jié)果DATASEGMENTMOVDS:SI+1,AL;存入數(shù)據(jù)段NUM1DB 0NUM2DB 0MOVAH,02H ;顯示字符=NUM3DB 0MOVDL,3DHDATAENDSINT21HCODESEGMENTMOVAL,DS:SI+1ASSUME CS:CODE,DS:DATAADDDS:SI+2,ALSTART:MOV AX,DA TACMPDS:SI+2,9

7、MOVDS,AXJSNEXT;小于 9 跳轉(zhuǎn)MOVSI,OFFSET NUM1SUBDS:SI+2,10MOVAH, 01H;鍵盤輸入并回顯MOVAH,02H;顯示字符“ 1 ”INT21HMOVDL,31HSUBAL,30HINT21HMOVDS:SI,AL;值存入數(shù)據(jù)段NEXT:MOVDS:SI+2,ALADDDS:SI+2,30HMOVAH,02H;顯示結(jié)果MOVAH, 02H;顯示字符+MOVDL,DS:SI+2MOVDL, 2BHINT21H第5頁共 25 頁INT21HMOVAH,4CH;返回 DOSMOVAH, 01H;鍵盤輸入并回顯INT21HINT21HCODEENDSSUB

8、AL,30HEND START第6頁共 25 頁4.編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進(jìn)制數(shù)形式顯示在屏幕上,例:5=00000101B設(shè)計思路:輸入數(shù)存放入數(shù)據(jù)段(詳細(xì)見第-判斷 CF 是否為 1,選擇輸出 0,1一題),CX 付初值,循環(huán)左移 1 位,JC 獲 jnc核心代碼段:MOVCX,16A:RCLDS:SI,1JNCEQU0MOVDL, 31HJMPBEQUO: MOVDL, 30HB:MOVAH, 02HINT21HLOOP A運行結(jié)果:圖 2.1 指定數(shù)據(jù)區(qū)以十六進(jìn)制數(shù)形式顯示在屏幕上在屏幕上的方法。第 7 頁共 25 頁圖 2.2 鍵盤輸入任意一個字符,顯示將該字符的ASC

9、II圖 2.3 鍵盤輸入兩個 1 位十進(jìn)制數(shù),計算和,顯示結(jié)果圖 2.4 由鍵盤輸入任意一位數(shù),以二進(jìn)制數(shù)形式顯示遇到的問題及解決方案:(1) 在做第四題,編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進(jìn)制數(shù)形式顯示在屏幕上。我初步的設(shè)計思想是,利用 RCL 后直接用輸出用 MOV DL,CF,然后調(diào)用中斷輸 出答案。但是調(diào)試一直通不過。最后通過翻書上網(wǎng)查資料才知道,CF 寄存器不能直接使用 MOV 和 CMP 等指令,只能通過 JNC 獲 JC 進(jìn)行判斷。(2) 同樣是第四題,編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進(jìn)制數(shù)形式顯示在屏幕上。最開始我給 CX 賦初值 8 用于循環(huán)控制,但是當(dāng)使用左移指令結(jié)果

10、始終是“00000000”,使用右移指令得到正確的反向結(jié)果(如 x=5,得到 10100000)。想了 很久才知道 CX=8 只判斷了高 8 位,正確的應(yīng)該是 CX=16(3)第三題和第四題沒有考慮合法輸入問題。比如第三題鍵盤輸入兩個1 位十進(jìn)制數(shù),第8頁共 25 頁計算和,顯示結(jié)果。如果用戶輸入的不是兩個數(shù)字而是字母等,程序仍然會運行。第四題要求輸出 1 個數(shù)的二進(jìn)制,如果用戶輸入一個字母,程序則輸出對應(yīng)ASCII碼減去 30H 后的二進(jìn)制。心得體會:在實驗課上,對于后面三道題,需要自己編程,由于基礎(chǔ)知識薄弱和畏懼 心理沒能在課堂上全部完成。在課后自己終于把所有的習(xí)題都練習(xí)了, 感覺收獲 很

11、多,不僅知識掌握了,更重要的是建立了學(xué)好匯編的信心。我在做這個實驗的同時加強(qiáng)了對課本知識的鞏固和加強(qiáng), 由于課本上的知識 太多,平時課間的學(xué)習(xí)并不能很好的理解和運用各個中斷語句和調(diào)整語句,所以在這次實驗過程中,我們更深入的鞏固了這些基本語法, 并且對于其在用匯編語 言更多的認(rèn)識。在實驗過程中,經(jīng)常會遇到這樣那樣的情況,就是心里想老著C語言的方法該怎么做,但實際匯編解決的比如數(shù)制轉(zhuǎn)換在C語言里根本不用實現(xiàn),這也讓我深刻的理解到為什么說匯編是與硬件聯(lián)系很緊密的語言。實驗三 代碼轉(zhuǎn)換程序設(shè)計實驗日志實驗?zāi)康模?.了解微機(jī)中所使用的各類數(shù)制及編碼方法。2.掌握不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計方法,加

12、深對數(shù)碼轉(zhuǎn)換的理解。3.掌握將存儲在內(nèi)存單元中的數(shù)據(jù)以十六進(jìn)制數(shù)形式、十進(jìn)制數(shù)形式和二進(jìn)制數(shù)形式顯示在屏幕上的方法。第 7 頁共 25 頁實驗內(nèi)容:1.【示例】將 5 位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為一個字的二進(jìn)制數(shù)設(shè)計田相.Di10(Dn10Dni)10Dn2)10可歸納出十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法:從十進(jìn)制數(shù)的最高位Dn開始做乘10 加次位的操作,依次類推,則可求出二進(jìn)制數(shù)結(jié)果。2 編寫程序?qū)?nèi)存中一個字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串顯示4321NDD410 D310 D210 D110 Do因此,將十六位二進(jìn)制數(shù)轉(zhuǎn)換為5 位 ASCII 碼表示的十進(jìn)制數(shù)數(shù)字串,即采用除 10 取余方法,分別求D0

13、 D4,并將它們轉(zhuǎn)換為 ASCII 碼。以字符串方式顯示在屏幕上DDATA SEGMENT次運算MES DB The decimal code of binary code are:$CMPAL,0BUF DW 03FEH ;十進(jìn)制 1022 及 DW 03FEHLOOPNZADB 5 dup (0)DDATA ENDSMOVDX,OFFSET MES ;顯示提示信息CODE SEGMENTMOVAH,09HASSUME CS:CODE,DS:DDA TAINT21HSTART:MOVAX,DDA TAMOVCX,5MOVDS,AXMOVSI,OFFSET BUFMOVSI,OFFSET BU

14、FADDSI,2MOVAX,DS:SIB: MOVDL,DS:SI;顯示十進(jìn)制字符串MOVBL,0AH;送被除數(shù)MOVAH,02HADDSI,7 ;SI 指向存儲位置末尾INT21HMOVCX,5INCSIA: DEC SI;SI=SI-1LOOP BDIV BL;被除數(shù)在 AX 中,除數(shù)在 BL 中,結(jié)果的商在 AL中,余數(shù)在 AH 中MOVAH,4CH ;返回 DOSADDAH,30HINT21HMOVDS:SI,AHCODEENDSMOVAH,0;清零余數(shù),是 AX 參與下ENDSTART3.編程將十進(jìn)制的數(shù)字串轉(zhuǎn)換為BCD 碼設(shè)計要求:5 位十進(jìn)制數(shù)的數(shù)字串 “54321”的 ASCI

15、I 碼存放在數(shù)據(jù)區(qū)中, 轉(zhuǎn)換為 BCD 碼后, 將轉(zhuǎn)換結(jié)果分別顯示在屏幕上,即顯示:01, 02, 03, 04, 05。若輸入的不是十進(jìn)制數(shù)的ASCII 碼,則輸出“ FF”。提示:一個字節(jié)取其低DDATA SEGMENTMES DB The BCD code of decimal code are:$BUF DB a,7,8,3,4 ;5 位十進(jìn)制數(shù)的數(shù)字串a(chǎn)7834 DB 5dup (0)DDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DDA TAAX,DDA TADS,AXSI,OFFSET BUFCX,5BL,46HAL,DS:SI;判斷是否是數(shù)字JC

16、 NONUMCMP AL,9JNCNONUMSUB AL,30HMOVBL,ALNONUM:MOV DS:SI+5,BLINC SILOOP AMOVDX,OFFSETMES;顯示提示信息MOVAH,09HINT21HMOVCX,5MOVSI,OFFSET BUFADDSI,5B:Di)10Do由上式設(shè)計思想:五4 位即變?yōu)?BCD 碼。START:MOVMOVMOVMOVA:MOVMOVCMP AL,0第10頁共 25 頁MOVAL,DS:SICMPAL,46HJZFF1 ;若不是數(shù)字,跳轉(zhuǎn)到MOVDL,30HMOVAH,02HINT21HMOVAL,DS:SIANDAL,0FH ;取低四位

17、FF1 輸出ADDAL,30HINT21HMOVDL,ALMOVAH,02HBF: MOVDL,2CHINT21HMOVAH,02HJMPBF ;數(shù)字情況輸岀完成INT21HFF1:INCSIMOVDL,46HLOOP BMOVAH,02HMOVAH,4CH ;返回 DOSINT21HINT21HMOVDL,46HCODEENDS4 .編程將設(shè)計思想:BCD 碼轉(zhuǎn)換為二進(jìn)制數(shù)十進(jìn)制轉(zhuǎn)換為 BCD 存入存儲區(qū):高四位,第四位分別放置BCD 碼轉(zhuǎn)換為二進(jìn)制:十位每(1)(2)(3)二進(jìn)制轉(zhuǎn)換 16 進(jìn)制輸出:*10+個位4 位輸出一次,注意 A-F 的情況MES DB The binary cod

18、e of BCD code are:$MOVAX,0BUF DB 17,34,51,68;4 位十進(jìn)制數(shù)MOVAL,DS:SI+5DB 8 dup (0h)MOVBL,0AHDDATA ENDSMULBL;乘法 al*blCODE SEGMENTADDAL,DS:SI+4ASSUME CS:CODE,DS:DDA TAADCAH,0main proc farSTART:MOVAX,DDA TAMOVBX,AXMOVDS,AXcallbitohe;調(diào)用子程序MOVDX,OFFSETMOVDL,2CHMES;顯示提示信息MOVAH,02HMOVAH,09HINT21HINT21HADDSI,2MO

19、VSI,OFFSET BUFINCDHMOVDI,OFFSET BUFCMPDH,4MOVCX,4JCB;A 段將 BCD 碼存入數(shù)據(jù)段A:MOVAL,DS:DIMOVAH,0HMOVAH,4CHMOVBL,0AHINT21HDIVBLRETMOVDS:SI+4,AH;個位main endp;返回 DOSMOVADDADDdecjnzDI,1SI,2cxA;子函數(shù)將 bx 中二進(jìn)制轉(zhuǎn) 16 進(jìn)制輸岀bitohe PROCmov ch, 4rotate: movrolNEARcl.4bx, clMOVDH,0MOVSI,OFFSET BUFmoval,blandal, 0fhaddal, 30h

20、cmpal, 39hjcprintitaddal, 07hprintit: movdl, almovah, 2圖 3.1 將 5 位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為一個字的二進(jìn)制數(shù);十進(jìn)制及DU B3FEH運行結(jié)果:Tlie decnaJ. cade o bincode are :7十進(jìn)命ij工吊馬Piess anp ke to con-txrB:;將 BCD 碼轉(zhuǎn)換為二進(jìn)制十位*10+個位SEGMENTDDATA,結(jié)果送到 axDS:SI+5,AL;十位MOVAH,02HENDSTARTq圖 3.2 內(nèi)存中一個字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串;弓位+進(jìn)制數(shù)的數(shù)字串-弘code of declma1 cod

21、e are =B502Piess anv監(jiān)住y t o cont inue第 9 頁共 2第13頁共 25 頁圖 3.3.1 將十進(jìn)制的數(shù)字串轉(zhuǎn)換為BCD 碼;5位十進(jìn)制數(shù)的數(shù)字串57胸創(chuàng)BUF仙17,311,51,66;謚十進(jìn)制數(shù)9 C:-. WINDU WSX ty stem32cnid -ew ehe binary code of BCD cod乜ape:0011.0022,0033,0044,Press已n屮ke ta ctrntlnuue圖 3.4 BCD 碼轉(zhuǎn)換為二進(jìn)制數(shù),并以 16 進(jìn)制輸岀RETbitoheint dec jnzENDP21h ch rotateCODEENDS

22、ENDSTART第14頁共 25 頁遇到的問題及解決方案:(1)第2題中,需要用到除法指令DIV;實驗指導(dǎo)書上標(biāo)記除法的商存放在AX, 余數(shù)存放在被除數(shù)在AX中,除數(shù)在DX中,由于自己的一知半解,造成 大量的調(diào)試時間浪費。最后才知道div當(dāng)除數(shù)為字節(jié)是,有兩種情況,第 一種是被除數(shù)在AX中,此時AL中是商,AH中是余數(shù);另一種情況是, 被除數(shù)在DX中,AX是商,DX是余數(shù)。(2)第3題中,當(dāng)輸入不合法是輸出FF,由于初步設(shè)計想用直接在數(shù)字基礎(chǔ) 上+07h實現(xiàn),不過由于水平有限沒有能夠使用這種辦法完成。采用比較 冗長的另外分支專門負(fù)責(zé)FF的輸出。(3)第4題比較復(fù)雜,涉及到三種不同的代碼轉(zhuǎn)換方式

23、。 但在實驗過程中,我 遇到的困難不是算法上的,而是由于粗心浪費了很長時間才完成程序。 在 存放BCD碼進(jìn)入存儲區(qū)時,習(xí)慣性的用DEC SI來控制指針位置,實際 上由于每個BCD碼分高低字節(jié)存放,應(yīng)該每次自加2心得體會:通過這一次的代碼轉(zhuǎn)換程序設(shè)計實驗,由于老師細(xì)心的講解和自己踏踏實 實做了每一道習(xí)題,感覺匯編編程能力得到極大提高。熟練掌握了了解微機(jī)中所 使用的各類數(shù)制及編碼方法。充分了解不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計方 法, 加深對數(shù)碼轉(zhuǎn)換的理解。 掌握將存儲在內(nèi)存單元中的數(shù)據(jù)以十六進(jìn)制數(shù)形式、十進(jìn)制數(shù)形式和二進(jìn)制數(shù)形式顯示在屏幕上的方法。除此之外,通過用debug工具通過單步運行調(diào)試程

24、序,找出錯誤的的反復(fù)練 習(xí),自己的調(diào)試程序水平在這一次實驗中有了質(zhì)的飛躍。 在實際編程中,也遇到 很多問題,由于以前練習(xí)不夠,就連乘除基本指令也用得不熟悉, 增加了編程時 間。不過通過實踐來掌握理論的方法,更能學(xué)以致用更能掌握透徹。第15頁共 25 頁實驗四 分支程序設(shè)計 實驗日志實驗?zāi)康模?.掌握比較指令、條件轉(zhuǎn)移指令的用法2.掌握分支結(jié)構(gòu)程序的組成3.掌握分支程序的設(shè)計、調(diào)試方法實驗內(nèi)容:隨堂測試,規(guī)定時間了獨立編寫程序。(1) 從鍵盤盤輸入一個字符(2) 判斷該字符是小寫字母、大寫字母、數(shù)字或其他字符,并給出相應(yīng)的提示。(3) 用 16 進(jìn)制顯示其 ASCII 碼(4) 要求使用子函數(shù)調(diào)

25、用流程圖:詳細(xì)設(shè)計:DATA SEGMENT USE16MESG1 DB It is a number! $圖 4.2 子程序輸出 ascii 碼第16頁共 25 頁MESG2DBIt is a BIG word! $ MESG3DBIt is a small word! $NUMBERDBAN1EQUON2EQU9S1EQUZa2 EQU aDATAENDSCODESEGMENT USE16ASSUMECS:CODE,DS:DATAmain proc farBEG:MOVAX,DATAMOVDS, AXMOVDX,OFFSETMESG3MOVAH, 01HINT21HMOVNUMBER, A

26、LCMPNUMBER, N2JAEBIGMOVDX, OFFSETMESG1JMPDISPBIG:CMPNUMBER, S1JAESMLLMOVDX, OFFSETMESG2SMLL:CMPNUMBER, a2JBEDISPMOVDX,OFFSET MESG3DISP:MOVAH, 9INT21HCALLSUBR1MOVAH,4CHINT21HRETmain endpCODE ENDSEND BEGMOVAL,NUMBERANDAL,0F0HMOVCL,4SHRAL,CLCMPAL,0AHJBC2ADDAL,07HADD AL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,N

27、UMBERANDAL,0FHCMPAL,0AHJBC3ADDAL,07HADD AL,30HMOVDL,ALMOVAH,02HINT21HSUBR1 PROC NEARC2:C3:RETSUBR1 ENDP第17頁共 25 頁運行結(jié)果:第18頁共 25 頁圖 4.1 輸入數(shù)字圖 4.2 輸入大寫字母第19頁共 25 頁圖 4.3 輸入小寫字母遇到的問題及解決方案:(1) 對題目了解得不完整,剛開始沒有做 ASCII 碼的輸出部分(2) 不完全熟悉子程序調(diào)用,通過重新看書,才現(xiàn)場學(xué)好使用子程序調(diào)用(3) 只判斷了大小寫字母和數(shù)字,忽略了其它情況下字母的判斷。心得體會:這是本學(xué)期最后一次匯編語言實

28、驗課,實驗課結(jié)束,從中領(lǐng)悟到不少東西 了.首先,學(xué)習(xí)匯編要有一定的基礎(chǔ):電子技術(shù)方面要有數(shù)字電路和模擬電路等接口電路方面的理論基礎(chǔ),特別是數(shù)字電路;編程語言要求匯編語言或C語言。 這些前面的知識都對學(xué)習(xí)好匯編語言至關(guān)重要。 然后,是開發(fā)工具和開發(fā)環(huán)境的。 這是我在實驗過程中收獲最大, 熟悉最快的一部分, 也是比不可少的工具。 最后, 就是要靠自己多練習(xí)了。僅僅四次匯編實驗是遠(yuǎn)遠(yuǎn)不夠的,在老師的指導(dǎo)和指引 下相信我們一定能對匯編編程有更大的興趣, 并能通過自己的努力更好的學(xué)好這 門計算機(jī)的基礎(chǔ)語言。附錄:源代碼實驗一:DDATA SEGMENTMSR DB HELLO,WORLD!$LEN EQ

29、U $- MSRDDATA ENDSEXDA SEGMENTMSD DB LEN DUPEXDA ENDSMYSTACK SEGMENT STACKDW 20 DUP(?)MYSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DDA TA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX第20頁共 25 頁MOVAX,EXDAMOVES,AXMOVSI,OFFSET MSRMOVDI,OFFSET MSDMOVCX, LENMOVBX,0NEXT:MOVAL,MSRBXMOVES:MSDBX,ALINCBXLOOPNEXTPUSHESPOPD

30、SMOVDX,OFFSET MSDMOVAH,9INT21HMOVAH,4CHINT21HCODEENDSEND START實驗二第1題DATA SEGMENTMES DB Show a as hex:,0AH,0DH,$;換行,回車SD DB aDATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DA TAMOVDS,AXMOVDX,OFFSET MES ;顯示提示信息MOVAH,09HINT21HMOVSI,OFFSET SDMOVAL,DS:SI;間址尋址ANDAL,0F0H;取高 4 位MOVCL,4SHRAL,CL;邏輯右移

31、CMPAL,0AH ;是否是 A 以上的數(shù)第21頁共 25 頁JBC2ADDAL,07HC2: ADDAL,30HMOVDL,AL;顯示字符MOVAH,02HINT21H;顯示高位MOVAL,DS:SIANDAL,0FH;取低 4 位CMPAL,0AHJBC3ADDAL,07HC3: ADDAL,30HMOVDL,AL;顯示字符MOVAH,02HINT21HMOVAH,4CH;返回 DOSINT21HCODE ENDSENDSTART實驗二第2題DATA SEGMENTMES DB Show ? as hex:,0AH,0DH,$;換行,回車SD DB aDATA ENDSCODE SEGME

32、NTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOVDS,AXMOVDX,OFFSET MES ;顯示提示信息MOVAH,09HINT21HMOVSI,OFFSET SDMOVAH,01HINT21HMOVDS:SI,ALMOVAH, 02HMOVDL, 0AHINT21H第22頁共 25 頁MOVAL,DS:SI;間址尋址ANDAL,0F0H;取咼 4 位MOVCL,4SHRAL,CL;邏輯右移CMPAL,0AH ;是否是 A 以上的數(shù)JBC2ADDAL,07HC2: ADDAL,30HMOVDL,AL;顯示字符MOVAH,02HINT21H;顯示高位

33、MOVAL,DS:SIANDAL,0FH;取低 4 位CMPAL,0AHJBC3ADDAL,07HC3: ADDAL,30HMOVDL,AL;顯示字符MOVAH,02HINT21HMOVAH,4CH;返回 DOSINT21HCODE ENDSENDSTART實驗二第3題;實驗 2-3 從鍵盤輸入兩個 1 位十進(jìn)制數(shù),計算二者之和,并將結(jié)果顯示在屏幕上。DATA SEGMENTNUM1 DB 0NUM2 DB 0NUM3 DB 0DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DA TAMOVDS,AXMOVSI,OFFSET NU

34、M1MOV AH, 01H;鍵盤輸入并回顯INT 21H第23頁共 25 頁SUBMOVMOVAL,30HDS:SI,ALDS:SI+2,AL;將鍵入值存入數(shù)據(jù)段MOVAH, 02H;顯示字符+MOVDL, 2BHINT21HMOVAH, 01H;鍵盤輸入并回顯INT21HSUBAL,30HMOVDS:SI+1,AL;將鍵入值存入數(shù)據(jù)段MOVAH,02H;顯示字符=MOVDL,3DHINT21HMOVAL,DS:SI+1ADDDS:SI+2,ALCMPDS:SI+2,9JSNEXT;小于 9 跳轉(zhuǎn)SUBDS:SI+2,10MOVAH,02H;顯示字符“ 1”MOVDL,31HINT21HNEX

35、T:ADDDS:SI+2,30HMOVAH,02H;顯示結(jié)果MOVDL,DS:SI+2INT21HMOVAH,4CH;返回 DOSINT21HCODE ENDSENDSTART實驗二第4題;編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進(jìn)制數(shù)形式顯示在屏幕上,例:DATA SEGMENTMES DB Show ? as binary:,0AH,0DH,$;換行,回車SD DB 05=00000101B第24頁共 25 頁DATA ENDS第25頁共 25 頁CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOVDS,AXMOVDX,OFFSET

36、MES ;顯示提示信息MOVAH,09HINT21HMOVSI,OFFSET SDMOVAH, 01HINT21HMOVDS:SI,ALMOVAH, 02HMOVDL, 0AHSUBDS:SI,30HINT21HMOVCX,16A:rcl DS:SI,1JNCEQU0MOVDL,31HjmpBEQU0:MOVDL,30HB:MOVAH,02HINT21HLOOP AMOVAH,02HMOVDL,42HINT21HMOVAH,4CH;返回 DOSINT 21HCODE ENDSEND START實驗三第1題DDATA SEGMENTMES DB The ascii code of decimal

37、 code are:$第26頁共 25 頁CODE SEGMENTASSUME CS:CODE,DS:DDA TASTART:MOVAX,DDA TADS,AXSI,OFFSET BUFBL,0AHCX,0004HAH,00HAL,SIAL,30H;送被乘數(shù);送轉(zhuǎn)換位數(shù);取第一位 ASCII 碼MOVMOVMOVMOVMOVMOVSUBA1:INCSIIMULBL;乘 10ADDAL,SISUBAL,30HLOOPA1MOVBX,AXMOVDX,OFFSET MES;顯示提示信息MOVAH,09HINT21HMOVAX,BX;顯示結(jié)果MOVCX,4A3:PUSHCXMOVCL,4ROLAX,C

38、LPOPCXMOVBX,AXANDAL,0FHCMPAL,0AHJBA2ADDAL,07HA2:ADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAX,BXLOOPA3MOVAH,4CHINT21HCODE ENDSENDSTARTBUF DB 30H,30H,30H,31H,32HDB 10H DUP(0)DDATA ENDS;十進(jìn)制 00012 的 ASCII 碼第27頁共 25 頁實驗三第2題DDATA SEGMENTMES DB The decimal code of bin ary code are:$BUF DW 03FEH;十進(jìn)制 1022 及 DW 03FE

39、HDB 5 dup (0)DDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DDA TASTART:MOVAX,DDA TAMOVDS,AXMOVSI,OFFSET BUFMOVAX,DS:SIMOVBL,0AH;送被除數(shù)ADDSI,7;SI 指向存儲位置末尾MOVCX,5A: DECSI;SI=SI-1DIVBL;被除數(shù)在 AX 中,除數(shù)在 BL 中,結(jié)果的商在 AL 中,余數(shù)在 AH中ADDAH,30HMOVDS:SI,AHMOVAH,0;清零余數(shù),是 AX 參與下次運算CMPAL,0LOOPNZAMOVDX,OFFSET MES;顯示提示信息MOVAH,09HINT21HMOVCX,5MOVSI,OFFSET BUFADDSI,2B: MOVDL,DS:SI;顯示十進(jìn)制字符串MOVAH,02HINT21HINCSILOOP BMOVAH,4CH;返回 DOSINT21HCODEENDSENDSTART第28頁共 25 頁實驗三

溫馨提示

  • 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

提交評論