學號姓名顯示設計_第1頁
學號姓名顯示設計_第2頁
學號姓名顯示設計_第3頁
學號姓名顯示設計_第4頁
學號姓名顯示設計_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

學號姓名顯示設計設計概述本次課程設計采用DOS和BIOS功能調用,采用25×80的彩色圖像顯示方式。先在坐標紙上用ASCII碼所對應的字符拼出自己的名字和學號,并設定ASCII碼的顏色值。ASCII碼對應字符的位置由行數與列數的二維坐標確定。其中行向上則減,向下則增;列向左則減,向右則增。程序在數據段中寫出所要顯示的我名字的位形圖,每行數據段定義組成文字的一個點。其中包含組成文字的字符、顏色、橫坐標、縱坐標。文字的變色是通過同一個字的不同顏色版本去覆蓋當前的版本以及清屏、擦除程序實現的。文字的閃爍則是通過將顏色屬性的八位二進制數的最高位置一實現的。通過比較輸入字符與0、Q或q的大小,來實現退出的功能。設計要求1)利用80x86匯編語言BIOS中斷調用的方法,通過字符設計自己的名字及學號,并在顯示器上用6種以上的顏色顯示出來;2)姓名與學號可動態切換,且按某種規律閃爍變化,按“q”鍵退出;3)可自行設計顯示姓名及學號的方案。三、設計內容文字顯示可采用坐標紙寫點的方式,雖然寫點的工作量較大,但是便于理解,容易修改。用相同字體但不同顏色的字符去覆蓋對應的字符,只能起到變色的作用。要實現閃爍還要把每一個點的顏色屬性最高位設為1。退出程序塊中,在判斷輸入字符是否為Q或q之前必須加一段有沒有字符輸入的程序。否則,程序運行到判斷字符這里,運行窗口就會等在那里,直到輸入字符才能繼續運行。這樣每次運行到這里程序就會等著,實現不了霓虹燈的連續閃爍。程序流程圖(1)主程序流程圖流程思路:數據段初始化→調用漢字顯示程序,先顯示漢字“li”,再顯示漢字“li1”→調用豎條紋顯示程序,顯示運動的條紋→判斷是否有字符輸入,沒有的話,繼續往下執行→有字符輸入時,判斷是否為“Q”或“q”→不為“Q”或“q”時,轉到執行程序段Aagain1→為“Q”或“q”時,退出程序。主程序流程圖如下:開始開始數據段初始數據段初始YYNN結束輸入字符是否是“Q”、“q”?調用漢字顯示子程序,先后顯示“zhen”,“zhenYYNN結束輸入字符是否是“Q”、“q”?調用漢字顯示子程序,先后顯示“zhen”,“zhen1”調用條紋顯示子程序,顯示運動的條紋調用漢字顯示程序,先后顯示“li”,“li1”判斷是否有字符輸入?調用條紋顯示子程序,顯示運動的條紋調用條紋顯示子程序,顯示運動的條紋調用漢字顯示子程序,先后顯示調用漢字顯示子程序,先后顯示“098813”,“098813”調用條紋顯示子程序,顯示運動的條紋調用條紋顯示子程序,顯示運動的條紋圖1學號和姓名顯示主程序子程序流程圖本程序顯示的漢字為自己的名字,名字中的每個字都用不同顏色的版本寫兩次,然后豎形條紋掃過,條紋掃過時漢字被覆蓋,條紋掃過后開始顯示下一個文字,然后條紋再掃過,一直這樣循環。因此,子程序有漢字顯示子程序、豎形條紋顯示子程序、擦除子程序,對應的流程圖分別如圖2、3、4所示。開始YNCX中內容自減1寄存器出棧判斷CX中內容是否為0?CX出棧,保存循環次數在指定坐標處寫第一個點CX入棧保存組成點的基本信息CX寄存器清零寄存器入棧開始YNCX中內容自減1寄存器出棧判斷CX中內容是否為0?CX出棧,保存循環次數在指定坐標處寫第一個點CX入棧保存組成點的基本信息CX寄存器清零寄存器入棧結束結束圖2學號和姓名顯示子程序流程圖開始開始寄存器入棧寄存器入棧CX寄存器清零CX寄存器清零保存組成點的基本信息保存組成點的基本信息將字符寫11次判斷指定坐標處字符是否為*?判斷指定坐標處字符是否為@?CX出棧,保存循環次數在指定坐標處寫第一個點判斷是否到達屏幕最左端?CX寄存器入棧將字符寫11次判斷指定坐標處字符是否為*?判斷指定坐標處字符是否為@?CX出棧,保存循環次數在指定坐標處寫第一個點判斷是否到達屏幕最左端?CX寄存器入棧YYNN YYNNNNYY寄存器出棧寄存器出棧結束結束圖3豎形條紋顯示子程序開始開始NNNYY結束保存點的基本信息列坐標dl自減1將字符改為*將字符寫11個判斷指定位置處字符是否為@?判斷是否到達屏幕最左端?保存組成點的基本信息NNNYY結束保存點的基本信息列坐標dl自減1將字符改為*將字符寫11個判斷指定位置處字符是否為@?判斷是否到達屏幕最左端?保存組成點的基本信息判斷指定位置處字符是否為判斷指定位置處字符是否為*?圖4擦除子程序2.主要程序段與程序設計分析(1)程序中用到的BIOS內的中斷功能①02H號功能調用功能:用文本坐標下設置光標位置入口參數:AH=02HBH=顯示頁碼DH=行(Y坐標)DL=列(X坐標)出口參數:無②08H號功能調用功能:讀光標處的字符及其屬性入口參數:AH=08HBH=顯示頁碼出口參數:AH=屬性AL=字符③09H號功能調用功能:在當前光標處按指定屬性顯示字符入口參數:AH=09HAL=字符BH=顯示頁碼BL=屬性(文本模式)或顏色(圖形模式)CX=重復輸出字符的次數出口參數:無④0FH號功能調用功能:讀取顯示器模式入口參數:AH=0FH出口參數:AH=屏幕字符的列數AL=顯示模式BH=頁碼(2)程序中用到的DOS功能調用①01H號功能調用功能:從鍵盤輸入一個字符輸入參數:無輸出參數:AL=ASCII碼②0BH號功能調用功能:檢查標準輸入設備上是否有字符可讀,該輸入操作可被重定向輸入參數:AH=0BH輸出參數:AL=00H——無字符可讀;FFH——有字符可讀③4CH號功能調用功能:返回操作系統4CH調用:MOVAH,4CHINT21H(3)主要程序段與程序設計分析①數據段本課程設計源程序中的漢字運用寫點的方式實現,在數據段的定義中,由組成漢字的點的ASCII碼值、顏色、X坐標、Y坐標構成。例如:lidb48db2ah,8ah,0,0db2ah,8ah,0,1db2ah,8ah,3,0這段程序是第一個漢字“李”的位形圖,其中2ah為組成“李”字第一個點的ASCII碼值,在屏幕上顯示為*;8ah為顏色屬性,為淡綠色且閃爍;(0,0)為這個點的坐標,第一個為行坐標,第二個為列坐標。這個點為“李”字組成點的基準坐標,其它點的坐標設置與此點類似。坐標設置按照矩陣的形式,向上則行自減1,向下則行自增1,向左則列自減1,向右則列自增1。每寫出一個點后,該點的坐標變回基準坐標(0,0)。本程序中寫點是按照從左到右、從上到下的順序寫的,直至寫完所有的點。②寫點程序段首先將漢字位形圖的地址送給寄存器,程序如下:leadi,limovdh,12movdl,20其中,dh,dl分別對應于所寫漢字第一個點在屏幕上顯示時的行、列坐標。然后讀取組成點的信息,程序段如下:movchar_cnt1,cxmovpointer1,dimovline_on1,dhmovcol_on1,dlmovchar,cx程序中char_cnt1指字符,pointer1指顏色,line_on1指行坐標,col_on1指列坐標。寫點的程序在子程序Amust_2,Amust_21中類似,程序段如下:movcx,char_cnt1movdi,pointer1movdh,line_on1movdl,col_on1Aplot_next0:adddh,[di+2]adddl,[di+3]movah,2int10hmoval,[di]movbl,[di+1]pushcxmovcx,1movah,09int10hpopcxadddi,4應當說明的是,程序中cx寄存器入棧又出棧。入棧是為了保存cx中的數值,將寄存器cx空出來,作為計數用,隨即出棧的目的是重新將已經保存的cx中的值保存到cx中,作為循環次數用。程序中到int10h為止都是寫點的程序。adddi,4是為寫下一個點做準備,直至寫完。③輸入Q、q退出程序movah,0bhint21hcmpal,0jzAagain1movah,1int21hcmpal,'q'jzexitcmpal,'Q'jzexitjmpAagain1exit:movax,4c00hint21h本段程序實現了首先判斷有沒有字符輸入,有字符輸入再判斷是否為Q、q,進而判斷是否退出。若沒有jmpAagain1這條語句,輸入的字符不是Q、q程序也會結束。④豎形條紋的顯示程序cmpal,40hjeAexitx0cmpal,02ahjeAexitx0jmpAexitx1Aexitx0:decAcount0jneAplot_nextmovAcount0,11數據段中豎形條紋只定義了6個點,為了能夠有足夠的寬度將漢字覆蓋,因此要將db40h,05h,1,0與db02ah,05h,-1,0兩個點重復寫11次,形成夠寬的條紋。主程序中Acount0先定義為了11,寫完11個“@”后,Acount0重新賦值11,再將02ah對應的字符“*”寫11次,構成完整的豎形條紋。⑤豎形條紋的移動與擦除程序自己名字和學號的依次顯示是通過豎形條紋的移動覆蓋與擦除程序實現的。Aerase_next:adddh,[di+2]adddl,[di+3]cmpdl,2jeAleftmovah,2int10hmovah,8int10hcmpal,40hjeAexitx2cmpal,02ahjeAexitx2jmpAexitx3Aexitx2:decAcount0jneAexitx3movAcount0,11Aexitx3:cmpAcount1,1jeAexit0moval,'*'movbl,03hjmpAexit7Aexit0:moval,'*'movbl,0Aexit7:pushcxmovcx,1movah,9int10hpopcxcmpAcount0,11jneAerase_nextadddi,4loopAerase_nextdeccol_on1在每次寫完豎形條紋以后,由deccol_on1實現起始點列坐標的的自減1,從而實現豎形條紋的從右向左移動。屏幕的擦除是通過比較豎形條紋與“*”,相同則不變,不同則將次字符改為“*”實現的。3.程序運行結果顯示首先以列顯示兩種版本彩色的“李”字,并且能夠閃爍。圖中四個白色方格實際是閃爍功能,按Alt+Enter在全屏下觀看,則可看見閃爍。然后豎形條紋從右向左掃過,覆蓋“李”字,開始以行的方式寫“珍”字。最后,同樣豎形條紋從右向左掃過,覆蓋“珍”字,進而開始顯示“098813”。學號顯示完以后,重新開始循環顯示自己名字的兩個字,直至輸入了Q、q程序結束,否則一直循環。程序調試說明和結果分析1.調試工具使用匯編語言調試器DEBUG進行調試,DEBUG程序是專門為匯編語言設計的一種調試工具。它能給DOS提供有力的糾錯、跟蹤和運行功能,并能檢查系統的各個數據。該工具可以通過單步、設置斷點等方法微程序設計者提供一種有效的調試手段。2.調試過程與結果分析本程序在調試過程中,遇到了很多自己思考不周的問題。第一,在沒有輸入任何字符的情況下,程序運行到字符檢測點停了下來,必須輸入一個字符讓程序繼續或結束。經過檢查原來是沒有設置判斷是否有字符輸入的程序,修改后解決了;第二,輸入的字符非Q、q時,程序也會結束。在和Q、q比較的程序段之后、過程終止程序段之前加上jmpAagain1語句,即正常了。第三,在使用條件轉移指令jz時,發現不能生成obj文件,經檢查發現jz與要調用的程序距離太遠,把二者距離拉近后問題得到解決。第四,寫好程序運行時發現屏幕上顯示的漢字嚴重錯位,檢查數據段發現有一個點沒有定義,重新定義后顯示了正確的字符。真是一個小疏漏造成大問題。五、心得體會微機原理與接口技術是一門很有趣的課程,任何一個計算機系統都是一個復雜的整體,學習計算機原理是要涉及到整體的每一部分。討論某一部分原理時又要涉及到其它部分的工作原理。這樣一來,不僅不能在短時間內較深入理解計算機的工作原理,而且也很難孤立地理解某一部分的工作原理。所以,初學《微機原理》時,感覺摸不著頭緒。面對著眾多的術語、概念及原理性的問題不知道該如何下手。在了解課程的特點后,我發現,應該以微機的整機概念為突破口,在如何建立整體概念上下功夫。可以通過學習一個模型機的組成和指令執行的過程,了解和熟悉計算機的結構、特點和工作過程。這次微機原理課程設計歷時一個星期,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。以前在上課的時候,老師經常強調在寫一個程序的時候,一定要事先把程序流程圖出來,但是我開始總覺得這樣做沒必要,很浪費時間。但是,這次課程設計完全改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎的,但是在課程設計中碰到的那些需要很多代碼才能完成的任務,畫流程圖是很有必要的。因為通過程序流程圖,在做設計的過程中,我們每一步要做什么,每一步要完成什么任務都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。其次,以前對于編程工具的使用還處于一知半解的狀態上,但是經過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結果,怎么去了解每個寄存器的內容以確保程序的正確性上都有了很大程度的提高。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。附錄data_segsegment;定義數據段lidb48;第一個“李”的位形圖db2ah,8ah,0,0db2ah,8ah,0,1db2ah,8ah,3,0db2ah,8ah,-7,1db2ah,8ah,3,0db2ah,8ah,4,0db2ah,8ah,-7,1db2ah,8ah,2,0db2ah,8ah,3,0db2ah,8ah,2,0db2ah,8ah,-7,1db2ah,8ah,1,0db2ah,8ah,4,0db2ah,8ah,2,0db2ah,8ah,2,0db2ah,8ah,-9,1db2ah,8ah,5,0db2ah,8ah,2,0db2ah,8ah,3,0db2ah,8ah,-11,1db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,2,0db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,-10,1db2ah,8ah,5,0db2ah,8ah,1,0db2ah,8ah,1,0db2ah,8ah,-7,1db2ah,8ah,1,0db2ah,8ah,4,0db2ah,8ah,2,0db2ah,8ah,-7,1db2ah,8ah,2,0db2ah,8ah,3,0db2ah,8ah,2,0db2ah,8ah,-7,1db2ah,8ah,3,0db2ah,8ah,4,0db2ah,8ah,-3,1db2ah,8ah,3,0db2ah,8ah,-3,1li1db48;第二個“李”字的位形圖db2bh,8eh,0,0db2bh,8eh,0,1db2bh,8eh,3,0db2bh,8eh,-7,1db2bh,8eh,3,0db2bh,8eh,4,0db2bh,8eh,-7,1db2bh,8eh,2,0db2bh,8eh,3,0db2bh,8eh,2,0db2bh,8eh,-7,1db2bh,8eh,1,0db2bh,8eh,4,0db2bh,8eh,2,0db2bh,8eh,2,0db2bh,8eh,-9,1db2bh,8eh,5,0db2bh,8eh,2,0db2bh,8eh,3,0db2bh,8eh,-11,1db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,2,0db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,-10,1db2bh,8eh,5,0db2bh,8eh,1,0db2bh,8eh,1,0db2bh,8eh,-7,1db2bh,8eh,1,0db2bh,8eh,4,0db2bh,8eh,2,0db2bh,8eh,-7,1db2bh,8eh,2,0db2bh,8eh,3,0db2bh,8eh,2,0db2bh,8eh,-7,1db2bh,8eh,3,0db2bh,8eh,4,0db2bh,8eh,-3,1db2bh,8eh,3,0db2bh,8eh,-3,1zhendb43;第一個“珍”字的位形圖db3dh,0ah,0,0db3dh,0ah,1,-8db3dh,0ah,0,1db3dh,0ah,0,1db3dh,0ah,0,1db3dh,0ah,0,1db3dh,0ah,0,3db3dh,0ah,0,2db3dh,0ah,1,-7db3dh,0ah,0,4db3dh,0ah,0,4db3dh,0ah,1,-8db3dh,0ah,0,3db3dh,0ah,0,4db3dh,0ah,0,2db3dh,0ah,1,-9db3dh,0ah,0,6db3dh,0ah,0,2db3dh,0ah,0,2db3dh,0ah,1,-12db3dh,0ah,0,1db3dh,0ah,0,1db3dh,0ah,0,1db3dh,0ah,0,1db3dh,0ah,0,2db3dh,0ah,0,1db3dh,0ah,0,2db3dh,0ah,1,-7db3dh,0ah,0,2db3dh,0ah,0,4db3dh,0ah,0,3db3dh,0ah,1,-9db3dh,0ah,0,1db3dh,0ah,0,3db3dh,0ah,0,1db3dh,0ah,0,3db3dh,0ah,1,-8db3dh,0ah,0,7db3dh,0ah,1,-8db3dh,0ah,0,7db3dh,0ah,1,-8db3dh,0ah,0,6db3dh,0ah,0,1zhen1db43;第二個“珍”字的位形圖db23h,70h,0,0db23h,70h,1,-8db23h,70h,0,1db23h,70h,0,1db23h,70h,0,1db23h,70h,0,1db23h,70h,0,3db23h,70h,0,2db23h,70h,1,-7db23h,70h,0,4db23h,70h,0,4db23h,70h,1,-8db23h,70h,0,3db23h,70h,0,4db23h,70h,0,2db23h,70h,1,-9db23h,70h,0,6db23h,70h,0,2db23h,70h,0,2db23h,70h,1,-12db23h,70h,0,1db23h,70h,0,1db23h,70h,0,1db23h,70h,0,1db23h,70h,0,2db23h,70h,0,1db23h,70h,0,2db23h,70h,1,-7db23h,70h,0,2db23h,70h,0,4db23h,70h,0,3db23h,70h,1,-9db23h,70h,0,1db23h,70h,0,3db23h,70h,0,1db23h,70h,0,3db23h,70h,1,-8db23h,70h,0,7db23h,70h,1,-8db23h,70h,0,7db23h,70h,1,-8db23h,70h,0,6db23h,70h,0,1xuehaodb141;第一個“098813”的位形圖db40h,89h,0,0;定義“0”的位形圖db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,9;定義“9”的位形圖db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,-4,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,3,1db40h,89h,0,1db40h,89h,0,1db40h,89h,-4,6;定義“8”的位形圖db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,3,1db40h,89h,0,1db40h,89h,0,1db40h,89h,-4,6;定義“8”的位形圖db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,3,1db40h,89h,0,1db40h,89h,0,1db40h,89h,-4,6;定義“1”的位形圖db40h,89h,0,1db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,0,-1db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,0db40h,89h,-1,6;定義“3”的位形圖db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,1,0db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,0,-1db40h,89h,-4,0db40h,89h,0,1db40h,89h,0,1db40h,89h,0,1xuehao1db141;第二個“098813”db23h,0ch,0,0;定義“0”的位形圖db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,9;定義“9”的位形圖db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,-4,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,3,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,-4,6;定義“8”的位形圖db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,3,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,-4,6;定義“8”的位形圖db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,3,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,-4,6;定義“1”的位形圖db23h,0ch,0,1db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,0,-1db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,0db23h,0ch,-1,6;定義“3”的位形圖db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,1,0db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,0,-1db23h,0ch,-4,0db23h,0ch,0,1db23h,0ch,0,1db23h,0ch,0,1cardb6db3dh,0eh,0,0db40h,0bh,1,0db3dh,0eh,1,0db3ch,0eh,0,1db02ah,0bh,-1,0db3ch,0eh,-1,0jeepdb6;屬性條紋位形圖db3dh,0eh,0,0db40h,05h,1,0db3dh,0eh,1,0db3ch,0eh,0,-1db02ah,05h,-1,0db3ch,0eh,-1,0char_cnt1dw?pointer1dw?line_on1db?col_on1db?chardw?Acountdb?Acount0db?Acount1db?data_segendscode_segsegmentassumecs:code_seg,ds:data_segmainprocfar;定義主函數pushdssubax,axsubcx,cxpushaxpushcxmovax,data_segmovds,axmovAcount1,2movAcount0,11Aagain:leadi,li;把第一個“李”字位形圖地址送給dimovdh,12;設置顯示開始行號movdl,20;設置顯示列號callmove_shape1;調用子程序move_shape1callAmust_2;調用子程序Amust_2leadi,li1;把第二個“李”字位形圖地址送給dimovdh,12movdl,20callmove_shape1callAmust_2leadi,jeep;把樹形條紋位形圖的地址送給dimovdh,6;設置條紋起始行位置movdl,76;設置條紋起始列位置callmove_shape1callAmust_21movah,0bh;判斷有無字符輸入int21h;執行int21h的0b號功能cmpal,0jzAagain1;無字符輸入執行Again1movah,1;int21h的01h號功能為鍵盤輸入無回顯int21hcmpal,'q';判斷輸入字符是否為“q”jzexitcmpal,'Q';判斷輸入字符是否為“Q”jzexitjmpAagain1exit:movax,4c00h;結束程序,返回DOSint21hAagain1:leadi,zhenmovdh,7movdl,50callmove_shape1callAmust_2leadi,zhen1movdh,7movdl,50callmove_shape1callAmust_2leadi,jeepmovdh,6movdl,76callmove_shape1callAmust_21leadi,xuehaomovdh,7movdl,20callmove_shape1callAmust_2leadi,xuehao1movdh,7movdl,20callmove_shape1callAmust_2leadi,jeepmovdh,6movdl,76callmove_shape1callAmust_21jmpAagainmainendpclear_screenprocnear;清屏程序pushaxpushbxpushcxpushdxmovah,6;int10h的6號功能為屏幕初始化或上卷moval,0;初始化窗口movch,4;ch/cl=左上角行/列號movcl,3movdh,20;dh/dl=右下角行/列movdl,77movbh,7;卷入行屬性int10hpopdxpopcxpopbxpopaxretclear_screenendpmove_shape1procnearpushaxpushbxpushcxpushdxpushdimovah,0fh;讀取顯示器模式int10hsubch,chmovcl,[di]incdimovchar_cnt1,cx;讀取組成點的字符、顏色、行列坐標movpointer1,dimovline_on1,dhmovcol_on1,dlmovchar,cxpopdipopdxpopcxpopbxpopaxretmove_shape1endpAmust_2procnearpushaxpushbxpushcxpushdxpushdimovah,0fh;int10h的0f號功能為取當前顯示方式int10hsubcx,cxmovcx,char_cnt1movdi,pointer1movdh,line_on1movdl,col_on1Aplot_next0:adddh,[di+2];由前一個點的坐標計算下一個點的行列號adddl,[di+3]movah,2;int10h的2號功能為置光標位置int10h;bh=頁號,dh/dl=行/列moval,[di];取表示文字的符號的ASCII值movbl,[di+1];取顏色pushcxmovcx,1;字符重復一次movah,09;在光標位置顯示字符和屬性int10hpopcxadddi,4;指針指向下一個點的地址calldly_qrtr1;調用延時顯示子程序loopAplot_next0;判斷cx是否為0Aexit6:popdipopdxpopcxpopbxpopaxretAmust_2endpAmust_21procnearpushaxpushbxpushcxpushdxpushdimovah,0fhint10hmovAcount,20Aexit1:calldly_qrtrdecAcountjeAexit5jmpAexit1Aexit5:subcx,cxmovcx,char_cnt1movdi,pointer1movdh,line_on1movdl,col_on1Aplot_next:adddh,[di+2]adddl,[di+3]cmpdl,2jeAexit4;判斷是否達到屏幕最左端movah,2int10hmoval,[di]movbl,[di+1]pushcxmovcx,1

溫馨提示

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

評論

0/150

提交評論