實(shí)驗(yàn)五、輸入輸出及中斷功能和子程序調(diào)用_第1頁
實(shí)驗(yàn)五、輸入輸出及中斷功能和子程序調(diào)用_第2頁
實(shí)驗(yàn)五、輸入輸出及中斷功能和子程序調(diào)用_第3頁
實(shí)驗(yàn)五、輸入輸出及中斷功能和子程序調(diào)用_第4頁
實(shí)驗(yàn)五、輸入輸出及中斷功能和子程序調(diào)用_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 SHANGHAI UNIVERSITYIBM匯編語言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告學(xué) 院計(jì)算機(jī)工程與科學(xué)學(xué)院學(xué)號(hào)姓名指導(dǎo)老師江蘇蘇日期2016.10實(shí)驗(yàn)五、輸入輸出及中斷功能和子程序調(diào)用目的: 1. 全面掌握輸入和輸出的中斷功能調(diào)用(鍵盤和顯示器) 2. 掌握子程序的定義和調(diào)用 3. 學(xué)會(huì)編制良好風(fēng)格的匯編語言程序 要求: 1)在實(shí)驗(yàn)四的基礎(chǔ)上,在屏幕上開設(shè)二個(gè)窗口(如左右或上下)2)定義輸入緩沖區(qū)(最多輸入50個(gè)字符)3)在第一個(gè)窗口輸入(要求有輸入提示)4)后臺(tái)程序完成實(shí)驗(yàn)四的工作5)結(jié)果顯示在第二個(gè)窗口(要求有輸出提示)6)所有程序必須以子程序方式體現(xiàn)(除了初始化和程序結(jié)尾)7)必須在程序中做好子程

2、序的功能說明以及參數(shù)說明8)注意調(diào)試結(jié)果,并做好記錄代碼:DATAS SEGMENT maxlen db 50 count db ? ;計(jì)數(shù)器 res db 51 dup(?) letter db 50 dup(?) digit db 50 dup(?) num_letter db 0 num_digit db 0 string1 db "The num of letter is $" string2 db "Ths num of digit is $" string3 db ": $" string4 db "Please

3、 input a string and end with 'Enter' $" string8 db "After sorted the string is : $" string5 db "Please input a letter to find how many times it shows: $" string6 db " shows $" string7 db " times.$" copy_res db 51 dup(?) const_1 db 2 const_2 db ? f

4、ind_target db 2 dup(?) find_result db 0H ;查找結(jié)果 input_cursor_row db ? input_cursor_column db ? output_cursor_row db ? output_cursor_column db ?DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼 main:call INITcall INPU

5、T call CLASSIFY call COPYSTRING call BUBBLESORT call FIND mov ah,1 int 21h jmp mainmov ah,4chint 21hINPUT proc near ;input a string and save it in res,the num of letter in countlea dx,string4mov ah,9Hint 21Hcall IN_ENDL lea dx,maxlen mov ah,0AH int 21H call IN_ENDL retINPUT endp CLASSIFY proc near ;

6、將儲(chǔ)存在res中的字符串分類統(tǒng)計(jì)(res首地址為0002H)init: lea bx,res sub bx,2H lea si,letter lea di,digitcompare1: cmp resbx,'a' jb compare2 cmp resbx,'z' ja compare3 inc num_letter mov dl,resbx mov si,dlinc si jmp move_to_nextcompare2: cmp resbx,'Z' ja move_to_next cmp resbx,'A' jb compar

7、e3 mov al,num_letter inc al mov num_letter,al mov dl,resbx mov si,dl inc si jmp move_to_nextcompare3: cmp resbx,'9' ja move_to_next cmp resbx,'0' jb move_to_next inc num_digit mov dl,resbx mov di,dl inc di jmp move_to_nextmove_to_next: inc bx cmp bl,count jb compare1 jmp exit exit:ca

8、ll OUT_ENDL lea dx,string1 mov ah,9 int 21H mov ax,0H mov al,num_letter call HEXTO10 lea dx,string3 mov ah,9 int 21H mov dl,'$' mov si,dl lea dx,letter MOV AH,9 INT 21H call OUT_ENDL lea dx,string2 mov ah,9 int 21H mov ax,0H mov al,num_digit call HEXTO10 lea dx,string3 mov ah,9 int 21H mov d

9、l,'$' mov di,dl lea dx,digit MOV AH,9 INT 21H call OUT_ENDL retCLASSIFY endp HEXTO10 proc near ;將AX中的16進(jìn)制轉(zhuǎn)換為10進(jìn)制(會(huì)修改bx,cx,dx的值) mov cx,0 mov bx,10disp1: mov dx,0 div bx push dx inc cx or ax,ax jne disp1 disp2: mov ah,2 pop dx add dl,30H int 21h loop disp2 retHEXTO10 endpCOPYSTRING proc near

10、;將res字符串拷貝到copy_res中,count為字符數(shù)目mov si,0mov cl,countlop:mov dl,ressimov copy_ressi,dlinc siloop lopretCOPYSTRING endpBUBBLESORT proc near ;將copy_res冒泡排序,count為字符數(shù)目mov bx,0000Hmov si,0000Hmov bl,countmov cx,bxinit: dec cxcmp cx,0Hje exitmov di,0Hcompare:mov dl,copy_resdi0001Hcmp copy_resdi,dlja exchan

11、gejmp nextexchange:mov dl,copy_resdimov dh,copy_resdi0001Hmov copy_resdi0001H,dlmov copy_resdi,dhjmp nextnext:inc dicmp di,cxjb comparejmp initexit:lea dx,string8mov ah,9int 21Hmov bl,count ;輸出排序后的字符串 mov dl,'$' mov copy_resbx,dl lea dx,copy_res mov ah,9 int 21HretBUBBLESORT endpFIND proc ne

12、ar ;在copy_res中查找特定字符,將查找結(jié)果輸出到find_result中call IN_ENDLlea dx,string5mov ah,9int 21Hcall IN_ENDLlea dx,const_1 ;輸入字符 mov ah,0AH int 21H mov cx,0000Hmov cl,countmov bx,0000Hmov bl,countmov al,find_target0000Hsta:cmp bx,0000Hje exitdec bxmov dl,copy_resbxcmp al,dlje equaljmp staequal:mov dl,find_resulti

13、nc dlmov find_result,dljmp staexit:call OUT_ENDLmov dl,find_target0000H mov ah,2 int 21H lea dx,string6 mov ah,9 int 21H mov ax,0H mov al,find_result call HEXTO10 lea dx,string7 mov ah,9 int 21HretFIND endpIN_ENDL proc near ;輸入換行mov dh,input_cursor_rowmov dl,input_cursor_columninc dhmov input_cursor

14、_row,dhcall PLACEINPUT retIN_ENDL endpOUT_ENDL proc near ;輸入換行mov dh,output_cursor_rowmov dl,output_cursor_columninc dhmov output_cursor_row,dhcall PLACEOUTPUT retOUT_ENDL endpPAINT proc nearmov AL,0mov BH,30H ;back 3 front 0 mov CH,2 ;start_up mov CL,8 mov DH,10 mov DL,70mov AH,6int 10Hmov AL,0mov

15、BH,30H ;back 3 front 0 mov CH,14 ;start_up mov CL,8 ;start_left mov DH,22 ;end_down mov DL,70 ;end_rightmov AH,6int 10HretPAINT endpPLACEINPUT proc near ;place input cursor mov dh,input_cursor_row ;row mov dl,input_cursor_column ;column mov bh,0 mov ah,2 int 10h retPLACEINPUT endpPLACEOUTPUT proc near ;place output cursormov dh,output_cursor_row ;row mov dl,output_cursor_column ;column mov bh,0 mov ah,2 int 10h retPLACEOUTPUT endp INIT proc near ;to init this programcall PAINTmov input_cursor_row,2mov i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論