學(xué)號(hào)姓名顯示設(shè)計(jì)_第1頁(yè)
學(xué)號(hào)姓名顯示設(shè)計(jì)_第2頁(yè)
學(xué)號(hào)姓名顯示設(shè)計(jì)_第3頁(yè)
學(xué)號(hào)姓名顯示設(shè)計(jì)_第4頁(yè)
學(xué)號(hào)姓名顯示設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論