華北電力大學匯編實驗報告_第1頁
華北電力大學匯編實驗報告_第2頁
華北電力大學匯編實驗報告_第3頁
華北電力大學匯編實驗報告_第4頁
華北電力大學匯編實驗報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、華北電力大學實驗報告|實驗名稱匯編語言程序設計實驗課程名稱IBM-PC匯編語言程序設計|專業(yè)班級:計科1103學生姓名:李慶賀學號: 0307成績:指導教師:王保義實驗日期 :1 月1實驗一用表格形式顯示字符一、實驗要求按 15*16 列的表格形式顯示 ASC碼為 10H 100H 的所有字符,即以行為主的順序及 ASC碼遞增的次序依次顯示對應的字符。每 16 個字符為一行,每行中的相鄰兩個字符之間用空白符隔開。二、設計說明( 1) 顯示每個字符可使用功能號為 02 的顯示輸出功能調(diào)用:Mov ah,02hMovdl,輸出字符的 ASC碼Int21h將 dl 初始化為 10H,然后使用其加 1

2、 以取得下一個字符的 ASC碼。( 2) 顯示空白符是, 用其 ASC 碼置 0 入 dl 寄存器。每行結束時,用回車和換行來結束本行并開始下一行。( 3) 由于逐個顯示相繼的 ASC 碼字符是,需要不斷修改 dl 寄存器的內(nèi)容,而顯示空白、回車、換行也需要使用 dl 寄存器,為此可使用堆棧保存 dx。三、實驗程序及調(diào)試結果prognam segmentmainprocfarassume cs:prognamstart:mov ah, 02hmov dl, 10h; 設置初始輸出為 ASCII 的 10hmov bl, 15; 輸出顯示為 15行e:mov cx, 16; 設置循環(huán)次數(shù),16,

3、表示輸出顯示為16列l(wèi):int21h; 顯示輸出push dx; 推入堆棧mov ah, 02hmov dl, 0int21hmov ah, 02hmov dl, 0int21h; 顯示空白符popdx; 將棧頂元素推出incdl; 設置下一個元素loop l; 循環(huán)輸出每行的16個 ASCII 元素push dx; 將下一行的首元素推入堆棧mov ah, 02hmov dl, 0dhint21h2movah, 02hmovdl, 0ahint21h; 輸出換行popdx ; 將棧頂元素推出decblcmpbl, 0; 比較確定是否已經(jīng)輸出15行元素jnee; 若還未完成輸出,則跳轉(zhuǎn)至e,繼續(xù)

4、進行下一行元素的輸出jeexit; 否則退出程序exit:movax, 4c00hint21hmainendpprognam endsend; start實驗二查找匹配字符串一、實驗要求程序接受用戶鍵入的一個關鍵字以及一個句子,如果句子中不包含關鍵字則顯示 “ No match!”;如果句子中包含關鍵字則顯示“ match!”,且把該字在句子中的位置用十六進制數(shù)顯示出來。要求程序的執(zhí)行過程如下:Enter keyword:abcEnter sentence:we are studying abcMatch at location:11H of the sentenceEnter sentenc

5、e:xyzNo match!Enter sentence:二、設計說明程序由三部分組成:( 1) 輸入關鍵字和一個句子,分別存入相應的緩沖區(qū)中。( 2) 在句子中查找關鍵字( 3) 輸出信息。用功能調(diào)用 09h 分找到和未找到兩種情況分別顯示不同的信息。在“找到”時,顯示關鍵字在字符串中位置。三、使用說明根據(jù)提示輸入關鍵字和句子,按回車鍵結束輸入。程序?qū)@示字符串中是否含有關鍵字,有則提示 match并顯示關鍵字位置,無則提示 no match。四、實驗程序datareasegment; 輸入數(shù)據(jù)段keyadrlabelbytekeymaxdb 20keyactdb ?3keystringdb

6、20 dup( ?) ; 定義能放入 50個字符緩存空間的大小,帶輸入數(shù)據(jù)長度未知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; 設置 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; 是實現(xiàn) DOS調(diào)用中的 0a號功能,就是在屏幕上顯示keyadr 字符串lea dx,messsenmov ah,09hint 21hlea dx,senadrmov ah,0ahint 21hmov al,sen

8、actsub al,keyactjl nmatch; 長度比較,句子長度短,沒有找到跳到nmatch 子語句call searchjmp short e0; 無條件跳轉(zhuǎn); 以上均為 DOS上讓其顯示這些內(nèi)容nmatch:lea dx,nomatchmov ah,09hint 21he0:4retmain endp; 結束search proc nearxor cx,cx;cxqinglingmov dx, offsetsenadr ; 句子地址到 dxadd dl,senact; 句子 changduinc dl ; 置長度加 1得到句子最后一位mov cl,keyact; 關鍵字長度到 cl

9、cld; 清除方向標志lea di,secstringr0:lea si,keystringrepz cmpsb ; 如果 si 和 di 所指向的兩個字節(jié)相等,則繼續(xù)比較。所以如果相等的話,就停止循環(huán)。但是這時候si 和 di 已經(jīng)自動加 1了,如果要找不相等的那兩個數(shù),就要把si 和 di 減 1。mov al,byte ptr si-1cmp al,byte ptr di-1; 把那兩個不相等的字節(jié)放到ptr 數(shù)組中去jnz next; 為 0?,跳到 next 子語句sub si,offsetkeystring; 獲得操作數(shù) keystring的偏移地址mov ax,sicmp al,

10、keyact; 將關鍵字與 secstring長度比較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; 句子與關鍵字匹配最后一位的下一位,所以要見1位mov bx,di ;xor ax,axmov al,keyactsub bx,ax ; 句子長度減去關鍵字長度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五、程序框圖實驗三分類統(tǒng)計字符個數(shù)一、實驗要求程序接受用戶鍵入一行字符(字符個數(shù)不超過80 個,該字符串用回車符結束)

12、 ,并按字母、數(shù)字、其它字符分類計數(shù),然后將結果存入以letter、digit 和 other 為名的存儲單元中。二、設計說明( 1)程序可采用 01H 功能調(diào)用把鍵入字符先分類計數(shù)再存入緩沖區(qū)中。( 2)程序進入 debug 運行并查看計數(shù)結果。三、實驗程序DATA SEGMENTPARSDB80; 準備接收 80個字符 .NNNDB ?; 用于存放實際輸入的個數(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 號功能調(diào)用,顯示提示.INT 21HMOVDX,OFFSETPARSMOVAH, 10;10 號功能調(diào)用,接收鍵盤輸入.IN

14、T 21H;-MOVCL, NNN; 收到字符的個數(shù).MOVCH, 0CMPCX, 0JNZ DO_ITJMP EXITDO_IT:LEA SI, III; 收到字符的起始地址.;-下面開始循環(huán)統(tǒng)計.AGAIN:MOVAL, SID_num:CMPAL,:;- :JNC N_C_B; 9CMPAL,0JCN_C_B; ZCMPAL,A7JCN_C; zCMPAL,aJCOTHER; aINC C_N; 小寫,加一 .JMP NEXTOTHER:INC O_N; 其它 .NEXT:INC SILOOP AGAIN;-統(tǒng)計結束MOVDX,OFFSETMES_DMOVAH, 9;9 號功能調(diào)用,顯示

15、提示.INT 21HMOVAL, D_NCALL DISP_ALMOVDX,OFFSETMES_CMOVAH, 9;9 號功能調(diào)用,顯示提示.INT 21HMOVAL, C_NCALL DISP_ALMOVDX,OFFSETMES_OMOVAH, 9;9 號功能調(diào)用,顯示提示.INT 21HMOVAL, O_NCALL DISP_ALMOVDX,OFFSETMES_TMOVAH, 9;9 號功能調(diào)用,顯示提示.INT 21HMOVAL, NNNCALL DISP_AL;-顯示結束 .EXIT:MOVAH, 4CHINT 21H;=DISP_AL:; 以 3位十進制數(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四、使用說明程序進入后提示輸入字符,可以輸入任意字符,輸入完成后鍵入回車鍵表示完成,則會在下一行輸出實驗結果。五、程序框圖實驗心得體會:這次匯編實驗歷時一周,但我用了 3 天時間完成了 3 個編程實驗:用表格形式顯示字符、查找匹配字符串、分類統(tǒng)計字符個數(shù),由于期間要考試所以就沒有做第四個。用表格形式顯示字符和查找匹配字符串是使用了循環(huán)程序設計思想。 顯示字符實驗較為簡單,只需要一些基礎知識即可完成。而查找字符串較耗費時間,這個實驗主要難點就在從句子中查找關鍵字。查找關鍵字是使用的串比較指令。這個指令只能進行比較,查找就需要移動指針,將整個句子都與關鍵字比較一遍,才能確定是否找到了關鍵字。分類統(tǒng)計字符個數(shù)與查找電話號碼較難, 花費了我最多的時間。 分類統(tǒng)計字符個數(shù)是應用了分支程序設計,而

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論