




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、西安郵電大學(xué)匯編語(yǔ)言程序設(shè)計(jì)競(jìng)賽報(bào)告專業(yè)班級(jí)通工1206學(xué)生姓名王煒學(xué)號(hào)03121167時(shí)間2014年11月24日 1、 設(shè)計(jì)題目 小型多任務(wù)管理系統(tǒng)2、 設(shè)計(jì)內(nèi)容應(yīng)用8086cpu匯編語(yǔ)言,設(shè)計(jì)任務(wù)管理系統(tǒng),對(duì)多個(gè)任務(wù)進(jìn)行管理和調(diào)度,能夠?qū)崿F(xiàn)任務(wù)間的切換,保存上下文信息。運(yùn)行任務(wù)時(shí)可從屏幕處看到任務(wù)結(jié)果。3、 需求分析1、系統(tǒng)完整功能在屏幕顯示3個(gè)子窗口,他們的行列坐標(biāo)如下: 左窗口用于實(shí)現(xiàn)當(dāng)鍵入任意字母時(shí),可將其全部轉(zhuǎn)換為小寫字母;右窗口用于實(shí)現(xiàn)當(dāng)鍵入任意字母時(shí),可將其全部轉(zhuǎn)換為大寫字母;下窗口用于顯示功能提示信息。光標(biāo)首先定位于左窗口第一行行首(5,10)處,可根據(jù)左右鍵的輸入改變光標(biāo)定
2、位,以便分時(shí)使用左右窗口。當(dāng)光標(biāo)處于左(右)窗口處,鍵入任意字母同步顯示在光標(biāo)位置處,若按Enter鍵,其轉(zhuǎn)換結(jié)果將顯示在窗口中央處,按任意鍵清屏,光標(biāo)回到第一行行首(5,10)處,可重新輸入字母進(jìn)行轉(zhuǎn)換。按ESC鍵返回到DOS界面。2、 系統(tǒng)測(cè)試截圖4、 概要設(shè)計(jì)1、 方案設(shè)計(jì)系統(tǒng)思路簡(jiǎn)單明確,主要運(yùn)用BISO調(diào)用,用到宏定義較為方便的處理問題。把一些基本功能編寫成宏,在宏調(diào)用可高效的執(zhí)行程序。系統(tǒng)主要分為光標(biāo)定位、清屏、接受字符并判斷、在屏幕上顯示字符、屏幕上顯示轉(zhuǎn)換結(jié)果等模塊。結(jié)構(gòu)框圖 2、 模塊功能說明(1) 多窗口顯示:在代碼段中調(diào)用四次宏scroll,分別設(shè)置好總窗口,左窗口,右窗
3、口,下窗口。(2) 光標(biāo)定位:用int10h的3號(hào)中斷得到光標(biāo)位置,通過與窗口的坐標(biāo)比較確定光標(biāo)位置(3) 清屏:用scroll刷新需要清屏的窗口(4) 顯示字符:左右窗口分別用int10h的0E號(hào)中斷顯示光標(biāo)處字符,用int16h的9號(hào)中斷顯示leftbuf和rightbuf的字符。窗口用int16h的9號(hào)中斷顯示data段的mainbuf字符。(5) 接受字符并判斷:用int16h的0號(hào)中斷接受字符,通過判斷掃描碼確定字符。5、 詳細(xì)設(shè)計(jì)及運(yùn)行結(jié)果1、程序運(yùn)行流程2、 程序中使用的功能調(diào)用INT 10H:02H功 能:用文本光標(biāo)設(shè)置光標(biāo)位置入口參數(shù):AH =02HBH=頁(yè)號(hào)DH/DL=行/
4、列出口參數(shù):無(wú)03H功 能:在文本坐標(biāo)下,光標(biāo)各種信息入口參數(shù):AH = 03HBH=頁(yè)號(hào)出口參數(shù):CH=光標(biāo)起始行CL=光標(biāo)結(jié)束行DH/DL=行/列06H功 能:屏幕初始化入口參數(shù):AH = 03HAL= 0 初始化窗口BH=卷入行屬性CH=光標(biāo)起始行CL=光標(biāo)結(jié)束行CH/CL=左上角行/列號(hào)DH/DL=右上角行/列號(hào)出口參數(shù):無(wú)0EH功 能:顯示字符入口參數(shù):AH = 0EHAL=字符BH=頁(yè)碼BL=前景色出口參數(shù):無(wú)INT 16H:00H功 能:從鍵盤讀字符入口參數(shù):AH =00H出口參數(shù):AH =掃描碼AL=字符碼3、 程序及必要注釋scroll macro ulrow,ulcol,l
5、rrow,lrcol,att,function ;設(shè)置或上卷窗口(由function決定) MOV bh,0 MOV ah,6h MOV al,function MOV ch,ulrow MOV cl,ulcol MOV dh,lrrow MOV dl,lrcol MOV bh,att int 10h endm pos_curse macro xx,yy ;設(shè)置光標(biāo)在 (x,y)位置 MOV bh,0 MOV ah,2 mov dh,xx MOV dl,yy int 10h endm get_char macro clx,cly,crx,cry local again,toleft,torig
6、ht,inleft,inright,judge,runleft,runright,showleft again: mov ah,00H ;從鍵盤讀字符,al為ASCII碼,ah為掃描碼 int 16H cmp ah,01H ;esc,則跳轉(zhuǎn)到主程序的exit je temp1 jne temp2temp1: jmp exittemp2: cmp ah,4BH ;若為鍵,跳轉(zhuǎn)到left je toleft cmp ah,4DH ;若為鍵,則跳轉(zhuǎn)到right je toright cmp ah,1CH ;若為Enter鍵,跳轉(zhuǎn)到j(luò)udge je judge ;若為普通字符 mov ah,0EH ;
7、在當(dāng)前光標(biāo)位置處顯示字符 int 10H mov ah,03H ;讀取光標(biāo)位置 int 10H ;dh是行,dl是列 cmp dl,28H ;與左右窗口之間的列坐標(biāo)位置比較 jb inleft ;小于40,表示在左窗口 ja inrighttoleft: pos_curse 5,cly jmp again toright: pos_curse 5,cry jmp againinleft: inc cly or al,00100000B mov ds:si+06H,al inc si pos_curse 5,cly jmp again inright: inc cry and al,110111
8、11B mov ds:di+16H,al inc di pos_curse 5,cry jmp again judge: mov ah,03H ;讀取光標(biāo)位置 int 10H ;dh是行,dl是列 cmp dl,28H ;與左右窗口之間的列坐標(biāo)位置比較 jb runleft ;小于40,表示在左窗口 ja runright runleft: mov byte ptr ds:si+06H,$ mov si,0 ;此處調(diào)用左窗口程序 pos_curse 0AH,0FH lea dx, leftbuf mov ah, 9 int 21h ; output string at ds:dx mov ah
9、, 1 ;等待按鍵 int 21h scroll 5h,0ah,0fh,1eh,1fh,0 ;重置左窗口 mov cly,0AH jmp toleft runright: mov byte ptr ds:di+16H,$ mov di,0 ;此處調(diào)用右窗口程序 pos_curse 0AH,37H lea dx, rightbuf mov ah, 9 int 21h mov ah, 1 ;等待按鍵 int 21h scroll 5h,32h,0fh,46h,1fh,0 mov cry,32H jmp toright endm data segment lx db 05H ;初始時(shí)刻左窗口左上角(
10、5,10) ly db 0AH rx db 05H ;初始時(shí)刻右窗口左上角(5,50) ry db 32H dwx db 12H ;初始時(shí)刻下窗口左上角(18,15) dwy db 0FH leftbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;06H rightbuf db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;16H mainbuf1 db Transform capital letters and lower case letters!$ ;12345678901234567890123456789012345678901234
11、567890 mainbuf2 db You can press to change between left-win$ mainbuf3 db -dows and right-windows If you want to exit,you c$ mainbuf4 db -an press Esc.Now press any key to see the result$ data endsstack segmentdw 8 dup(0);暫存寄存器stack endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax
12、;設(shè)置堆棧段地址和偏移地址 mov ax,stackmov ss,axmov sp,10h ;初始化窗口 urow ucol lrow lcol att scroll 0,0,18h,4fh,70h,0 ;function為0 設(shè)置三個(gè)窗口 scroll 5h,0ah,0fh,1eh,1fh,0 scroll 5h,32h,0fh,46h,1fh,0 scroll 12h,0fh,16h,41h,1fh,0 ;顯示界面語(yǔ)句 pos_curse 12H,0FH lea dx,mainbuf1 mov ah,09H int 21H pos_curse 13H,0FH lea dx,mainbuf2
13、 mov ah,09H int 21H pos_curse 14H,0FH lea dx,mainbuf3 mov ah,09H int 21H pos_curse 15H,0FH lea dx,mainbuf4 mov ah,09H int 21H pos_curse lx,ly get_char lx,ly,rx,ry exit: mov ax,4C00H int 21H code ends end start4、 運(yùn)行結(jié)果 6、 調(diào)試情況,設(shè)計(jì)技巧及體會(huì)1、 任務(wù)完成情況設(shè)計(jì)系統(tǒng)主要是功能是在多窗口條件下完成多項(xiàng)任務(wù),與預(yù)期效果基本一致。但這些指令并非學(xué)習(xí)過程中用到過的,許多指令功能不清楚,需要一點(diǎn)一點(diǎn)地查閱,還要從眾多指令中選擇正確的指令實(shí)現(xiàn)要求的功能,在相關(guān)指令使用過程中還要注意其使用方法。在經(jīng)過多次調(diào)試之后,可以在任意窗口中自由鍵入字符,按左右鍵來回切換以便使用左右窗口的不同功能。在窗口中按下Enter鍵即可顯示轉(zhuǎn)換結(jié)果,繼續(xù)按任意鍵清屏,重新使用系統(tǒng)功能。2、 心得體會(huì)此次競(jìng)賽設(shè)計(jì)并不簡(jiǎn)單,在程序編寫過程中使用到多方面知識(shí),在程序執(zhí)行過程中,寄存器中的值會(huì)發(fā)生變化,有些值需要保存,有些值需要根據(jù)條件做適當(dāng)更改,都需要嚴(yán)格控制;在條件判斷、程序跳轉(zhuǎn)時(shí),在何時(shí)執(zhí)行哪段程序,及執(zhí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子脂肪秤項(xiàng)目合作計(jì)劃書
- 氣象預(yù)報(bào)系統(tǒng)歷史數(shù)據(jù)存儲(chǔ)策略
- 教育寓言類故事的解析
- 軟件應(yīng)用教程
- 紅海行動(dòng)寓言故事中的成長(zhǎng)啟示
- Isoxepac-Standard-生命科學(xué)試劑-MCE
- 2025年劇裝道具相關(guān)工藝美術(shù)品合作協(xié)議書
- 4-epi-Edoxaban-tosylate-4-epi-DU-176b-生命科學(xué)試劑-MCE
- 金融投資行業(yè)理財(cái)產(chǎn)品投資風(fēng)險(xiǎn)免責(zé)協(xié)議
- 小學(xué)生學(xué)習(xí)方法探討征文
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)課件【全冊(cè)】
- 物聯(lián)網(wǎng)管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
- 1例妊娠糖尿病的個(gè)案護(hù)理
- 《排球正面雙手傳球》課件
- 光伏發(fā)電職業(yè)病危害預(yù)評(píng)價(jià)方案方案
- 財(cái)務(wù)報(bào)表涉稅分析
- 五官科眼耳鼻咽喉科醫(yī)療常用器械的認(rèn)識(shí)
- 企業(yè)清產(chǎn)核資報(bào)表
- 淺談建筑工程機(jī)電安裝施工技術(shù)運(yùn)用論文
- 2023年新改版教科版四年級(jí)下冊(cè)科學(xué)練習(xí)題(一課一練+單元+期中+期末)
- 婦產(chǎn)科護(hù)理學(xué)課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論