微機(jī)原理上機(jī) 匯編語言程序_第1頁
微機(jī)原理上機(jī) 匯編語言程序_第2頁
微機(jī)原理上機(jī) 匯編語言程序_第3頁
微機(jī)原理上機(jī) 匯編語言程序_第4頁
微機(jī)原理上機(jī) 匯編語言程序_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、上機(jī)作業(yè)四一.實(shí)驗(yàn)?zāi)康?增強(qiáng)和提高匯編語言程序設(shè)計(jì)的能力,掌握模塊化程序設(shè)計(jì)的方法.熟練掌握DOS常用功能的調(diào)用方法.二.試驗(yàn)儀器586微機(jī)一臺(tái)三.實(shí)驗(yàn)內(nèi)容編寫如下程序,并在機(jī)器上調(diào)試成功。程序采用菜單式選擇,可以接收用戶從鍵盤輸入的五個(gè)命 令(1-5),各命令功能分別為:(1)按下“1”鍵,完成字符串小寫字母變成大寫字母。用戶輸入一由英文大小寫字母或數(shù)字0-9組成的字符串(以回車結(jié)束),程序逐個(gè)檢查字符 串中各字符,將原串中小寫字母變成大寫字母,其他字符不變,并在屏幕上顯示。用戶按 鍵,重做,按ESC鍵,返回主菜單。(2)按下“2”鍵,完成找最大值(二選一)。a.接收用戶輸入的可顯示字符串(

2、以回車結(jié)束),程序?qū)⑵渲蠥SCH碼值最大的字符顯示出 來;b.接收用戶輸入假設(shè)干個(gè)無符號(hào)8位數(shù)(以空格或逗號(hào)為分隔符,以回車結(jié)束),程序?qū)⑵渲?最大的數(shù)顯示出來。用戶按任一鍵,重做,按ESC鍵,返回主菜單。(3)按下“3”鍵,完成排序(二選一)。a.接收用戶輸入的可顯示字符串,以回車結(jié)束。程序按ASCH碼值大小由大到小排序并輸出 顯示;b.接收用戶輸入假設(shè)干個(gè)有符號(hào)8位數(shù)(以空格或逗號(hào)為分隔符,以回車結(jié)束),程序?qū)⑵渲?最大的數(shù)顯示出來。用戶按任一鍵,重做,按ESC鍵,返回主菜單。(4)按下“4”鍵,顯示時(shí)間。首先提示用戶對時(shí),即用戶輸入時(shí)、分、秒(以空格或逗號(hào)為分隔符,以回車結(jié)束)然后, 在

3、屏幕上不斷顯示時(shí)間,格式為:XX (時(shí)D : XX (分):XX (秒)最好定點(diǎn)顯示。用戶按任一鍵,重新對時(shí),按ESC鍵,返回主菜單。(5)按下“5”鍵,結(jié)束程序運(yùn)行,返回系統(tǒng)提示符。四.程序代碼STACK SEGMENT STACKDB 256 DUP(?)TOP LABEL WORDSTACK ENDSDATASEGMENTTABLEDW Gl, G2, G3, G4, G5STRING 1DB 1. Change small letters into capital letters of string;1, ODH, OAH,STRING2DB 2 Find the maximum of

4、 string;1, ODH, OAH, $INC CHCALLADDNEWMOV DL, 0MOV AL, 0NEXT:INC SIDEC CLCMP CL, 0JNZ FNDNUMCMP DL, 1JNZ TOTALINC CHCALLADDNEWTOTAL:MOV NUMBUF, CHMOV AL, 1JMP CRTNUMERRNUM:MOV AL, 0CRTNUM:RETCINJNT ENDPADDNEW PROC NEAR;入口參數(shù):CH (數(shù)據(jù)組數(shù)據(jù)個(gè)數(shù))、 ;出口參數(shù):無PUSH AXLEA BX, NUMBUFMOV AL, CHCBWADD BX, AXPOP AXMOV B

5、X, ALRETADDNEW ENDPMPSORT PROC FARMOV AL, NUMBUFCMP AL, 1JBE NOSORTCBWMOV CX, AXLEA SI, NUMBUFADD SI, CXDEC CXLP1:;數(shù)據(jù)組數(shù)據(jù)個(gè)數(shù)加1;清零;依次檢查各字符;判斷是否有未加入的數(shù)據(jù);置數(shù)據(jù)組數(shù)據(jù)個(gè)數(shù);輸入數(shù)據(jù)無錯(cuò)誤;輸入數(shù)據(jù)有錯(cuò)誤;增加新數(shù)AL (當(dāng)前數(shù)據(jù)x);數(shù)據(jù)組排序;假設(shè)只有一個(gè)元素,停止排序;SI指向數(shù)據(jù)組首地址;SI指向數(shù)據(jù)組末地址 ;外循環(huán)次數(shù) ;外循環(huán)開始;交換標(biāo)志置0;內(nèi)循環(huán)開始;交換操作;交換標(biāo)志置1;判斷交換標(biāo)志PUSH CXPUSH SIMOV DL, 0LP

6、2:MOV AL, SI CMP AL, SI - 1J JAE NOXCHG XCHG AL, SI - 1 MOV LSI, AL MOV DL, 1NOXCHG:DEC SILOOP LP2 POP SI POP CX CMP DL, 1 JNZ NOSORT LOOP LP1 NOSORT:RET MPSORTENDPINT_OUT PROC FAR;輸出數(shù)據(jù)組MOV AL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1PRINT:MOV AL, SICALLOUTNUMINC SIMOV AH, 2MOV DL,INT21HLOOP

7、 PRINT RET INT_OUT ENDPOUTNUM PROC NEAR;將十進(jìn)制數(shù)以十六進(jìn)制輸出;入口參數(shù):AL (待轉(zhuǎn)換的數(shù)據(jù)),BL (轉(zhuǎn)換進(jìn)制數(shù)16) ;出口參數(shù):無MOV AH, 0DIV BLPUSH AXCMP AH, 10JB PNUMADD AH, 7PNUM:ADD AH, 30HMOV DL, AHPOP AXPUSH DXCMP AL, 0 JZ OUTN CALL OUTNUMOUTN:POP DXMOV AH, 2 INT21HRETOUTNUM ENDPTIMCHK PROC FAR ;設(shè)置顯示器方式 MOV AH, 0 MOV AL, 3;MOV BL,

8、0;INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 6 INT 10H MOV AH, 9 LEA DX, IN_TIMINT21HMOV AH, OAH LEA DX, KEYBUF INT21H;設(shè)定并顯示時(shí)間;清屏;頁號(hào);列號(hào);行號(hào);設(shè)置提示光標(biāo)位置設(shè)置;時(shí)間串提不;輸入時(shí)間串MOV BL, 10MOV AL, KEYBUF + 2SUB AL, *0MUL BLADD AL, KEYBUF + 3SUB AL, *0*CMP AL, 0JB INVALIDCMP AL, 24JAE INVALID;判斷時(shí)有效性;判斷分有效性;判斷秒有效性;置系統(tǒng)時(shí)間

9、;顯示時(shí)間子程序;清屏;頁號(hào);列號(hào);行號(hào);提示信息光標(biāo)位置設(shè)置;輸出提示信息MOV CH, ALMOV AL, KEYBUF + 5 SUB AL, OMULBLADD AL, KEYBUF + 6 SUB AL, OCMP AL, 0 JB INVALID CMP AL, 60 JAE INVALID MOV CL, ALMOV AL, KEYBUF+ 8 SUB AL,。MUL BLADD AL, KEYBUF + 9 SUB AL, OCMP AL, 0 JB INVALID CMP AL, 60 JAE INVALID MOV DH, AL MOV DL, 0 MOV AH, 2DH

10、INT21HINVALID:CALL TIMERETTIMCHK ENDPTIME PROC;設(shè)置顯示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10HMOV AH, 2MOV BH, 0MOV DL, 10MOV DH, 9 INT 1 OHMOV AH, 9LEA DX, HINTSTR INT21HDISP1:MOV AH, 2MOV BH, 0 MOV DL, 72 MOV DH, 0 INT 10H MOV AH, 2CH INT21H MOV AL, CH CALL SHOWNUM MOV AH, 2 MOV DL, T INT21HMOV AL, CL

11、 CALL SHOWNUM MOV AH, 2 MOV DL, INT21HMOV AL, DH CALL SHOWNUM MOV AH,02H MOV DX,090AH MOV BH,0INT 1 OHMOV BX,()()18HRE:MOV CX,0FFFFHREA:LOOP READEC BX JNZ RE MOV AH, OBH INT21H CMP AL, 0 JZ DISP1 RETTIME ENDP;頁號(hào);列號(hào);行號(hào);提示光標(biāo)位置設(shè)置;取系統(tǒng)時(shí)間,CH,CL,DH分別存放時(shí)/分/秒;顯示時(shí);顯示分;顯示:秒;設(shè)置光標(biāo)位置;延時(shí);或MOV AH,01H;INT 16H;JE DIS

12、P1;檢查鍵盤狀態(tài)SHOWNUM PROC;把AL中的數(shù)字以十進(jìn)制輸出;入口參數(shù):AL (待顯示的數(shù)據(jù));出口參數(shù):無CBWPUSH CXPUSH DXMOV CL, 1()DIV CLADD AH, OMOV BH, AHADD AL, O MOV AH, 2 MOV DL, AL INT21H MOV DL, BH INT21H POP DX POP CX RET SHOWNUM ENDPCODE ENDSEND START五.實(shí)驗(yàn)體會(huì)實(shí)驗(yàn)中遇到的問題以及解決方法:在這幾次的編程實(shí)驗(yàn)中,我遇到了許多問題。首先, 在最開始的時(shí)候,無論怎么輸入都顯示:lnasm?不是內(nèi)部或外部命令,也不是可運(yùn)

13、行的程 序或批處理文件。后來發(fā)現(xiàn)把自己編寫的asm文件放到E盤masm文件夾里就行了,之后的每 一步實(shí)驗(yàn)按照要求一步一步做,就都能出來結(jié)果。還有就是不懂得如何輸出自己所得到的結(jié)果, 于是先抄寫課本上所給的程序,當(dāng)出現(xiàn)自己想要的結(jié)果之后,再與同學(xué)討論輸出結(jié)果的語句,充 分理解其內(nèi)涵。心得體會(huì):通過幾次的上機(jī)實(shí)驗(yàn)課,我懂得了如何使用txt文檔編寫asm文件。然后對 其進(jìn)行編譯和連接。當(dāng)完成上述過程后,可以使用DEBUG功能來對程序進(jìn)行調(diào)試,這樣,就可 以清楚地看到每一步運(yùn)行時(shí)各個(gè)寄存器的狀態(tài)。同時(shí): 通過自己編譯程序,我能夠更好地理解課 本中的許多程序,也能夠自己編寫一些簡單的程序。總而言之,通過

14、這幾次的上機(jī)實(shí)驗(yàn)課,我 學(xué)會(huì)了通過用計(jì)算機(jī)編譯程序來處理自己在理論課學(xué)習(xí)上遇到的各種問題。希望在以后的實(shí)驗(yàn)中 能夠積累的越來越多,對此體會(huì)也越來越深。STRING3 STRING4 STRINGS STRINGNDB 3. Sort for datas;, ODH, OAH, DB14. Show Time;1, ODH, OAH, $ DB 5 Exit/, ODH, OAH, $DB Input the number you select (1-5) : $IN_STR DB Input the string (includingletters & numbers, less than 6

15、0 letters)ODH, OAH,PRESTR NEWSTR OUT_STR MAXCHR IN_NUM OUT_NUM IN_TIM HINTSTR KEYBUFDB Original stringDBNew stringNUMBUFDATADB The string is $DB The maximum is $DB Input the numbers (0-255, no more than 20 numbers):ODH, OAH,DB Sorted numbers : ODH, OAH, $DB Correct the time (HH:MM:SS) :DB Press ESC,

16、 go back to the menu; or press any key to play again!$ DB61DB ?DB 61 DUP(?)DB?DB 20 DUP(?)ENDSCODESEGMENTASSUME CS:CODE, DS:DATA,SS:STACKSTART:MAIN:AGAIN:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS,AXMOV SP, OFFSETTOPCALL FARPTR MENU;設(shè)置顯示器MOV AH, 2 MOVBH,0 MOVDL,41 MOVDH, 10 INTI OHMOV AH, 1 INT 21H C

17、MPAL/1 JB AGAIN CMP AL, 5 JA AGAIN SUBAL/T SHLAL, 1 CBWLEA BX, TABLE;頁號(hào);列號(hào);行號(hào);光標(biāo)位置設(shè)置;N-1;(N-l)*2;AL-AXADD BX, AXJMP WORD PTR BXGl:CALL FAR PTR CHGLTRMOV AH, 8INT21HCMP AL, 1BHJZ MAINJMPG1G2:CALL FAR PTR MAXLTRMOV AH, 8INT21HCMP AL, 1BHJZ MAINJMP G2G3:CALL FAR PTR SORTNUMMOV AH, 8INT21HCMP AL, 1BHJZ

18、MAINJMP G3G4:CALL FAR PTR TIMCHKMOV AH, 8INT21HCMP AL, 1BHJZ MAINJMP G4G5:MOV AH, 4CHINT21HMENU PROC FAR;顯示主界面;設(shè)置顯示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H;清屏MOV AH, 2MOV BH, 0;頁號(hào)MOV DL, 5;列號(hào)MOV DH, 5;行號(hào)INT 10HMOV AH, 9LEA DX, STRING 1INT21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, 9LEA DX, STRING2IN

19、T21HMOV AH, 2MOV DL, 5MOV DH, 7INT 10HMOV AH, 9LEA DX, STRINGSINT21HMOV AH, 2MOV DL, 5MOV DH, 8INT 10HMOV AH, 9LEA DX, STRING4INT21HMOV AH, 2MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, STRINGSINT21HMOV AH, 2MOV DL, 5MOV DH, 10INT 10HMOV AH, 9LEA DX, STRINGNINT21HRETMENU ENDPCHGLTR PROC FARRECHG:;光標(biāo)位置設(shè)

20、置;列號(hào);行號(hào);光標(biāo)位置設(shè)置;列號(hào);行號(hào);光標(biāo)位置設(shè)置;列號(hào);行號(hào);光標(biāo)位置設(shè)置;列號(hào);行號(hào);光標(biāo)位置設(shè)置;列號(hào);行號(hào);光標(biāo)位置設(shè)置;將輸入字符串中小寫字母便換成大寫字母;設(shè)置顯示器方式LCHG:NOCHG:MOV AH, 0MOV AL, 3MOV BL, 0INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10HMOV AH, 9LEA DX, TN_STRINT21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, OAHLEA DX, KEYBUFINT21HCMP KEYBUF + 1,0JZ RECHGL

21、EA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 7INT 1 OHMOV AH, 9LEA DX, PRESTRINT21HMOV AH, 9LEA DX, KEYBUF + 2INT21HLEA BX, KEYBUF + 2CMP BYTE PTR BXJ, 61H JB NOCHG;清屏;頁號(hào);列號(hào);行號(hào);輸入提示光標(biāo)位置設(shè)置;輸入字符串提示;列號(hào);行號(hào);輸入字符串光標(biāo)位置設(shè)置;輸入字符串;判斷輸入字符串是否為空串;在

22、輸入字符串尾加結(jié)束標(biāo)志$;頁號(hào);列號(hào);行號(hào);源字符串提示光標(biāo)位置設(shè)置;輸出源字符串提示;輸出源字符串AND BYTE PTR BX, ODFHINC BXLOOPLCHGMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10HMOV AH, 9LEA DX, NEWSTRINT21HMOV AH, 9LEA DX, KEYBUF + 2INT21HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, HINTSTRINT 21HRETCHGLTR ENDP;將字符串中小寫字母轉(zhuǎn)換成大寫字母;頁號(hào);列

23、號(hào);行號(hào);新字符串提示光標(biāo)位置設(shè)置;輸出新字符串提示;輸出新字符串;頁號(hào);列號(hào);行號(hào);提示信息光標(biāo)位置設(shè)置;輸出提示信息MAXLTR PROC FAR REMAX:;設(shè)置顯示器方式MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10HMOV AH, 2 MOV BH, 0 MOV DL, 5MOV DH, 5 INT 10HMOV AH, 9LEA DX, IN_STR INT21HMOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, OAH LEA DX, KEYBUF;在輸入字符串中找出最大值;清屏;頁號(hào);列號(hào),仃節(jié);輸入提示光標(biāo)位

24、置設(shè)置;輸入字符串提示;列號(hào);行號(hào);輸入字符串光標(biāo)位置設(shè)置;輸入字符串;判斷輸入字符串是否為空串INT21HCMP KEYBUF + 1,0JZ REMAXLEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AX;在輸入字符串位加結(jié)束標(biāo)志$;頁號(hào);列號(hào);行號(hào);源字符串提示光標(biāo)位置設(shè)置MOV BYTE PTR BX, TMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 7INT 10HMOV AH, 9LEA DX, OUT STR;輸出字符串提示INT21HMOV AH, 9LEA DX, KEYBUF + 2;

25、輸出字符串;頁號(hào);列號(hào);行號(hào);新字符串提示光標(biāo)位置設(shè)置;輸出字符串;頁號(hào);列號(hào);行號(hào);新字符串提示光標(biāo)位置設(shè)置INT21HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10HMOV AH, 9LEA DX, MAXCHR;輸出字符串中最大值提示INT21HMOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP BX, DLJB NOLCHGMOV DL, BXNOLCHG:INC BX;找出字符串中最大字符,放入DL;輸出字符串中最大字符;頁號(hào);列號(hào);行號(hào);提示信息光標(biāo)位置設(shè)置;找出字符串中最大字符,放入DL;輸出字符串中最大字符;頁號(hào);列號(hào);

26、行號(hào);提示信息光標(biāo)位置設(shè)置LOOP LCMPMOV AH, 2INT21HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, HINTSTR INT21HRETMAXLTR ENDPSORTNUM PROC FARRESORT:;設(shè)置顯示器方式MOV AH, 0MOV AL, 3MOV BL, 0 INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 1 OHMOV AH, 9LEA DX, IN_NUMINT21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, OAHLEA DX, KEYBUFINT21HCALL CINJNTCMP AL, 0 JZ RESORT CMP NUMBUF, 0 JZ RESORT;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論