華北電力大學(xué)匯編實(shí)驗(yàn)報(bào)告_第1頁(yè)
華北電力大學(xué)匯編實(shí)驗(yàn)報(bào)告_第2頁(yè)
華北電力大學(xué)匯編實(shí)驗(yàn)報(bào)告_第3頁(yè)
華北電力大學(xué)匯編實(shí)驗(yàn)報(bào)告_第4頁(yè)
華北電力大學(xué)匯編實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論