版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、華北電力大學(xué)實(shí)驗(yàn)報(bào)告|實(shí)驗(yàn)名稱(chēng)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)課程名稱(chēng)IBM-PC匯編語(yǔ)言程序設(shè)計(jì)|專(zhuān)業(yè)班級(jí):計(jì)科1103學(xué)生姓名:李慶賀學(xué)號(hào): 0307成績(jī):指導(dǎo)教師:王保義實(shí)驗(yàn)日期 :1 月1實(shí)驗(yàn)一用表格形式顯示字符一、實(shí)驗(yàn)要求按 15*16 列的表格形式顯示 ASC碼為 10H 100H 的所有字符,即以行為主的順序及 ASC碼遞增的次序依次顯示對(duì)應(yīng)的字符。每 16 個(gè)字符為一行,每行中的相鄰兩個(gè)字符之間用空白符隔開(kāi)。二、設(shè)計(jì)說(shuō)明( 1) 顯示每個(gè)字符可使用功能號(hào)為 02 的顯示輸出功能調(diào)用:Mov ah,02hMovdl,輸出字符的 ASC碼Int21h將 dl 初始化為 10H,然后使用其加 1
2、 以取得下一個(gè)字符的 ASC碼。( 2) 顯示空白符是, 用其 ASC 碼置 0 入 dl 寄存器。每行結(jié)束時(shí),用回車(chē)和換行來(lái)結(jié)束本行并開(kāi)始下一行。( 3) 由于逐個(gè)顯示相繼的 ASC 碼字符是,需要不斷修改 dl 寄存器的內(nèi)容,而顯示空白、回車(chē)、換行也需要使用 dl 寄存器,為此可使用堆棧保存 dx。三、實(shí)驗(yàn)程序及調(diào)試結(jié)果prognam segmentmainprocfarassume cs:prognamstart:mov ah, 02hmov dl, 10h; 設(shè)置初始輸出為 ASCII 的 10hmov bl, 15; 輸出顯示為 15行e:mov cx, 16; 設(shè)置循環(huán)次數(shù),16,
3、表示輸出顯示為16列l(wèi):int21h; 顯示輸出push dx; 推入堆棧mov ah, 02hmov dl, 0int21hmov ah, 02hmov dl, 0int21h; 顯示空白符popdx; 將棧頂元素推出incdl; 設(shè)置下一個(gè)元素loop l; 循環(huán)輸出每行的16個(gè) ASCII 元素push dx; 將下一行的首元素推入堆棧mov ah, 02hmov dl, 0dhint21h2movah, 02hmovdl, 0ahint21h; 輸出換行popdx ; 將棧頂元素推出decblcmpbl, 0; 比較確定是否已經(jīng)輸出15行元素jnee; 若還未完成輸出,則跳轉(zhuǎn)至e,繼續(xù)
4、進(jìn)行下一行元素的輸出jeexit; 否則退出程序exit:movax, 4c00hint21hmainendpprognam endsend; start實(shí)驗(yàn)二查找匹配字符串一、實(shí)驗(yàn)要求程序接受用戶鍵入的一個(gè)關(guān)鍵字以及一個(gè)句子,如果句子中不包含關(guān)鍵字則顯示 “ No match!”;如果句子中包含關(guān)鍵字則顯示“ match!”,且把該字在句子中的位置用十六進(jìn)制數(shù)顯示出來(lái)。要求程序的執(zhí)行過(guò)程如下:Enter keyword:abcEnter sentence:we are studying abcMatch at location:11H of the sentenceEnter sentenc
5、e:xyzNo match!Enter sentence:二、設(shè)計(jì)說(shuō)明程序由三部分組成:( 1) 輸入關(guān)鍵字和一個(gè)句子,分別存入相應(yīng)的緩沖區(qū)中。( 2) 在句子中查找關(guān)鍵字( 3) 輸出信息。用功能調(diào)用 09h 分找到和未找到兩種情況分別顯示不同的信息。在“找到”時(shí),顯示關(guān)鍵字在字符串中位置。三、使用說(shuō)明根據(jù)提示輸入關(guān)鍵字和句子,按回車(chē)鍵結(jié)束輸入。程序?qū)@示字符串中是否含有關(guān)鍵字,有則提示 match并顯示關(guān)鍵字位置,無(wú)則提示 no match。四、實(shí)驗(yàn)程序datareasegment; 輸入數(shù)據(jù)段keyadrlabelbytekeymaxdb 20keyactdb ?3keystringdb
6、20 dup( ?) ; 定義能放入 50個(gè)字符緩存空間的大小,帶輸入數(shù)據(jù)長(zhǎng)度未知senadr labelbytesenmaxdb50senactdb?secstringdb 50 dup( ?)messkeydbEnter keyword:, $messsendb0dh,0ah,Enter Sentence:, $nomatchdb0dh,0ah,No match., $matchdb0dh,0ah,Match at location:, $restdbH of the sentence., $datareaends; 設(shè)置 dos顯示端內(nèi)容prognam segmentmain proc
7、farassume cs:prognam,ds:datarea,es:datareastart:push dsxor ax,ax ;ax 寄存器清 0push axmov ax,datareamov ds,axmov es,axlea dx,messkeymov ah,09hint 21h; 顯示 messkey字符內(nèi)容lea dx,keyadrmov ah,0ahint 21h; 是實(shí)現(xiàn) DOS調(diào)用中的 0a號(hào)功能,就是在屏幕上顯示keyadr 字符串lea dx,messsenmov ah,09hint 21hlea dx,senadrmov ah,0ahint 21hmov al,sen
8、actsub al,keyactjl nmatch; 長(zhǎng)度比較,句子長(zhǎng)度短,沒(méi)有找到跳到nmatch 子語(yǔ)句call searchjmp short e0; 無(wú)條件跳轉(zhuǎn); 以上均為 DOS上讓其顯示這些內(nèi)容nmatch:lea dx,nomatchmov ah,09hint 21he0:4retmain endp; 結(jié)束search proc nearxor cx,cx;cxqinglingmov dx, offsetsenadr ; 句子地址到 dxadd dl,senact; 句子 changduinc dl ; 置長(zhǎng)度加 1得到句子最后一位mov cl,keyact; 關(guān)鍵字長(zhǎng)度到 cl
9、cld; 清除方向標(biāo)志lea di,secstringr0:lea si,keystringrepz cmpsb ; 如果 si 和 di 所指向的兩個(gè)字節(jié)相等,則繼續(xù)比較。所以如果相等的話,就停止循環(huán)。但是這時(shí)候si 和 di 已經(jīng)自動(dòng)加 1了,如果要找不相等的那兩個(gè)數(shù),就要把si 和 di 減 1。mov al,byte ptr si-1cmp al,byte ptr di-1; 把那兩個(gè)不相等的字節(jié)放到ptr 數(shù)組中去jnz next; 為 0?,跳到 next 子語(yǔ)句sub si,offsetkeystring; 獲得操作數(shù) keystring的偏移地址mov ax,sicmp al,
10、keyact; 將關(guān)鍵字與 secstring長(zhǎng)度比較je showpnext:mov cl,keyactcmp di,dxjnz r0shown:lea dx,nomatchmov ah,09hint 21h; 在屏幕上顯示 nomatch字符串jmp short e1showp:lea dx,matchmov ah,09hint 21h; 在屏幕上顯示 match字符串dec di; 句子與關(guān)鍵字匹配最后一位的下一位,所以要見(jiàn)1位mov bx,di ;xor ax,axmov al,keyactsub bx,ax ; 句子長(zhǎng)度減去關(guān)鍵字長(zhǎng)度mov ax, offset senadrsub
11、bx,axcall binihexlea dx,restmov ah,09hint 21h5e1:retsearch endpbinihex proc nearmov ch,4r1:mov cl,4; 左移 4位rol bx,clmov dl,bland dl,0fhadd dl,30hcmp dl,39hjle dispadd dl,07hdisp:mov ah,02hint 21hdec chjnz r1retbinihex endpprognam endsend main五、程序框圖實(shí)驗(yàn)三分類(lèi)統(tǒng)計(jì)字符個(gè)數(shù)一、實(shí)驗(yàn)要求程序接受用戶鍵入一行字符(字符個(gè)數(shù)不超過(guò)80 個(gè),該字符串用回車(chē)符結(jié)束)
12、 ,并按字母、數(shù)字、其它字符分類(lèi)計(jì)數(shù),然后將結(jié)果存入以letter、digit 和 other 為名的存儲(chǔ)單元中。二、設(shè)計(jì)說(shuō)明( 1)程序可采用 01H 功能調(diào)用把鍵入字符先分類(lèi)計(jì)數(shù)再存入緩沖區(qū)中。( 2)程序進(jìn)入 debug 運(yùn)行并查看計(jì)數(shù)結(jié)果。三、實(shí)驗(yàn)程序DATA SEGMENTPARSDB80; 準(zhǔn)備接收 80個(gè)字符 .NNNDB ?; 用于存放實(shí)際輸入的個(gè)數(shù) .IIIDB80 DUP( ?);80 字節(jié)的空間 .D_NDB ?6C_NDB ?O_NDB ?MESG1DB 13, 10,Input STR : $; 用于提示 .MES_CDB 13, 10,Char N is : $;
13、用于提示 .MES_DDB 13, 10,DigitN is : $; 用于提示 .MES_ODB 13, 10,Other N is : $; 用于提示 .MES_TDB 13, 10,AllN is : $; 用于提示 .DATA ENDS;-CODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVD_N, 0MOVC_N, 0MOVO_N, 0MOVDX,OFFSETMESG1MOVAH, 9;9 號(hào)功能調(diào)用,顯示提示.INT 21HMOVDX,OFFSETPARSMOVAH, 10;10 號(hào)功能調(diào)用,接收鍵盤(pán)輸入.IN
14、T 21H;-MOVCL, NNN; 收到字符的個(gè)數(shù).MOVCH, 0CMPCX, 0JNZ DO_ITJMP EXITDO_IT:LEA SI, III; 收到字符的起始地址.;-下面開(kāi)始循環(huán)統(tǒng)計(jì).AGAIN:MOVAL, SID_num:CMPAL,:;- :JNC N_C_B; 9CMPAL,0JCN_C_B; ZCMPAL,A7JCN_C; zCMPAL,aJCOTHER; aINC C_N; 小寫(xiě),加一 .JMP NEXTOTHER:INC O_N; 其它 .NEXT:INC SILOOP AGAIN;-統(tǒng)計(jì)結(jié)束MOVDX,OFFSETMES_DMOVAH, 9;9 號(hào)功能調(diào)用,顯示
15、提示.INT 21HMOVAL, D_NCALL DISP_ALMOVDX,OFFSETMES_CMOVAH, 9;9 號(hào)功能調(diào)用,顯示提示.INT 21HMOVAL, C_NCALL DISP_ALMOVDX,OFFSETMES_OMOVAH, 9;9 號(hào)功能調(diào)用,顯示提示.INT 21HMOVAL, O_NCALL DISP_ALMOVDX,OFFSETMES_TMOVAH, 9;9 號(hào)功能調(diào)用,顯示提示.INT 21HMOVAL, NNNCALL DISP_AL;-顯示結(jié)束 .EXIT:MOVAH, 4CHINT 21H;=DISP_AL:; 以 3位十進(jìn)制數(shù)形式顯示AL中的內(nèi)容 .MO
16、VAH, 0MOVBL, 100DIV BL8ADD AL, 30HMOVDL, ALMOVBH, AHMOVAH, 2INT 21HMOVAH, 0MOVAL, BHMOVBL, 10DIV BLADD AL, 30HMOVDL, ALMOVBH, AHMOVAH, 2INT 21HADD BH, 30HMOVDL, BHMOVAL, AHMOVAH, 2INT 21HRET;=CODE ENDSEND START四、使用說(shuō)明程序進(jìn)入后提示輸入字符,可以輸入任意字符,輸入完成后鍵入回車(chē)鍵表示完成,則會(huì)在下一行輸出實(shí)驗(yàn)結(jié)果。五、程序框圖實(shí)驗(yàn)心得體會(huì):這次匯編實(shí)驗(yàn)歷時(shí)一周,但我用了 3 天時(shí)間完成了 3 個(gè)編程實(shí)驗(yàn):用表格形式顯示字符、查找匹配字符串、分類(lèi)統(tǒng)計(jì)字符個(gè)數(shù),由于期間要考試所以就沒(méi)有做第四個(gè)。用表格形式顯示字符和查找匹配字符串是使用了循環(huán)程序設(shè)計(jì)思想。 顯示字符實(shí)驗(yàn)較為簡(jiǎn)單,只需要一些基礎(chǔ)知識(shí)即可完成。而查找字符串較耗費(fèi)時(shí)間,這個(gè)實(shí)驗(yàn)主要難點(diǎn)就在從句子中查找關(guān)鍵字。查找關(guān)鍵字是使用的串比較指令。這個(gè)指令只能進(jìn)行比較,查找就需要移動(dòng)指針,將整個(gè)句子都與關(guān)鍵字比較一遍,才能確定是否找到了關(guān)鍵字。分類(lèi)統(tǒng)計(jì)字符個(gè)數(shù)與查找電話號(hào)碼較難, 花費(fèi)了我最多的時(shí)間。 分類(lèi)統(tǒng)計(jì)字符個(gè)數(shù)是應(yīng)用了分支程序設(shè)計(jì),而
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)學(xué)生社團(tuán)活動(dòng)成果展示制度
- 2025年中職數(shù)據(jù)處理(數(shù)據(jù)統(tǒng)計(jì)分析)試題及答案
- 高一地理(查漏補(bǔ)缺)2025-2026年上學(xué)期期中測(cè)試卷
- 2025年大學(xué)本科(會(huì)計(jì)學(xué))稅務(wù)籌劃應(yīng)用階段測(cè)試題及答案
- 2025年中職化學(xué)(無(wú)機(jī)化學(xué)基礎(chǔ))試題及答案
- 2025年高職空中乘務(wù)(客艙服務(wù)規(guī)范)試題及答案
- 2025年大學(xué)第二學(xué)年(口腔醫(yī)學(xué))口腔內(nèi)科學(xué)基礎(chǔ)階段測(cè)試試題及答案
- 2025年高職醫(yī)療器械維護(hù)與管理(設(shè)備檢修)試題及答案
- 2025年大學(xué)(經(jīng)濟(jì)學(xué))國(guó)際貿(mào)易學(xué)期末測(cè)試題及答案
- 2025年大學(xué)二年級(jí)(地質(zhì)工程)地質(zhì)災(zāi)害防治綜合測(cè)試題及答案
- DB35T 2136-2023 茶樹(shù)病害測(cè)報(bào)與綠色防控技術(shù)規(guī)程
- 蓋板涵蓋板計(jì)算
- 運(yùn)輸工具服務(wù)企業(yè)備案表
- 醫(yī)院藥房醫(yī)療廢物處置方案
- 天塔之光模擬控制PLC課程設(shè)計(jì)
- 金屬眼鏡架拋光等工藝【省一等獎(jiǎng)】
- 《藥品經(jīng)營(yíng)質(zhì)量管理規(guī)范》的五個(gè)附錄
- ASMEBPE介紹專(zhuān)題知識(shí)
- 八年級(jí)上冊(cè)地理期末復(fù)習(xí)計(jì)劃通用5篇
- 初中日語(yǔ)人教版七年級(jí)第一冊(cè)單詞表講義
- GB/T 9065.5-2010液壓軟管接頭第5部分:37°擴(kuò)口端軟管接頭
評(píng)論
0/150
提交評(píng)論