華南理工大學(xué)微機(jī)與接口實(shí)驗(yàn)報(bào)告四實(shí)驗(yàn)題目原理流程圖代碼截圖完整版樣本_第1頁(yè)
華南理工大學(xué)微機(jī)與接口實(shí)驗(yàn)報(bào)告四實(shí)驗(yàn)題目原理流程圖代碼截圖完整版樣本_第2頁(yè)
華南理工大學(xué)微機(jī)與接口實(shí)驗(yàn)報(bào)告四實(shí)驗(yàn)題目原理流程圖代碼截圖完整版樣本_第3頁(yè)
華南理工大學(xué)微機(jī)與接口實(shí)驗(yàn)報(bào)告四實(shí)驗(yàn)題目原理流程圖代碼截圖完整版樣本_第4頁(yè)
華南理工大學(xué)微機(jī)與接口實(shí)驗(yàn)報(bào)告四實(shí)驗(yàn)題目原理流程圖代碼截圖完整版樣本_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)原理實(shí)驗(yàn)報(bào)告班級(jí):級(jí)電子科學(xué)與技術(shù)卓工班姓名:黃中一學(xué)號(hào):36460273序號(hào):評(píng)閱分?jǐn)?shù):實(shí)驗(yàn)一一、實(shí)驗(yàn)?zāi)?、學(xué)會(huì)如何建立匯編源文獻(xiàn)ASM2、學(xué)會(huì)調(diào)用MASM宏匯編程序?qū)υ次墨I(xiàn)進(jìn)行匯編,獲得目的程序OBJ及LST列表文獻(xiàn)3、學(xué)會(huì)調(diào)用LINK連接程序匯編后目的文獻(xiàn)OBJ連接成可執(zhí)行文獻(xiàn)EXE4、學(xué)會(huì)使用DEBUG調(diào)試程序把可執(zhí)行文獻(xiàn)裝入內(nèi)存并調(diào)試運(yùn)營(yíng),用D命令顯示目的程序,用U命令對(duì)可執(zhí)行文獻(xiàn)反匯編,用G命令運(yùn)營(yíng)調(diào)試。二、實(shí)驗(yàn)設(shè)備裝有MASM軟件IBMPC機(jī)三、實(shí)驗(yàn)內(nèi)容1、匯編程序?qū)υ闯绦蜻M(jìn)行編譯,生成擴(kuò)展名為OBJ目的文獻(xiàn);連接程序是將目的程序和庫(kù)文獻(xiàn)進(jìn)行連接、定位,生成擴(kuò)展名為EXE可執(zhí)行文獻(xiàn);調(diào)試程序是對(duì)目的文獻(xiàn)進(jìn)行調(diào)試,驗(yàn)證它對(duì)的性。2、DEBUG程序各種命令用法功能命令格式使用闡明顯示內(nèi)存單元內(nèi)容D地址從指定地址開始顯示40H個(gè)字節(jié)或80H個(gè)字節(jié)修改內(nèi)存單元內(nèi)容E地址先顯示地址和單元內(nèi)容等待輸入修改內(nèi)容檢查和修改寄存器內(nèi)容R顯示所有寄存器和標(biāo)志位及下條指令單元十六進(jìn)制數(shù)碼和反匯編格式反匯編U地址從指定地址開始反匯編16個(gè)或32個(gè)字節(jié)匯編A地址從指定地址直接輸入語(yǔ)句并從指定指定匯編裝入內(nèi)存跟蹤T=地址從指定地址開始逐條跟蹤指令運(yùn)營(yíng)G=地址無(wú)斷點(diǎn),執(zhí)行正在調(diào)試指令退出Q退出DEBUG返回DOS3、實(shí)驗(yàn)過(guò)程①、在edit環(huán)境,寫字板,記事本等中輸入源程序?;螂p擊屏幕上“將來(lái)匯編”快捷方式進(jìn)入編輯環(huán)境輸入源程序。②、保存,輸入文獻(xiàn)名如A1.asm,并將其與MASM三個(gè)可執(zhí)行文獻(xiàn)放在同一目錄下。③、在DOS環(huán)境下(可用windows下命令提示符進(jìn)入),用MASM生成目的文獻(xiàn)A1.OBJ進(jìn)入DOS環(huán)境,將當(dāng)前目錄設(shè)立為存儲(chǔ)MASM途徑.如圖所示:如果MASM軟件放在C:\TOOLS\WJYL則先要進(jìn)入到該子目錄下,進(jìn)入該子目錄辦法為,cdc:\退到c盤根目錄下,cdtoolscdWJYL則如上所述進(jìn)入該目錄下,然后輸入MASM,可見屏幕上有四個(gè)提問(wèn),按如下格式回答:Sourcefilename[.ASM]:a1↙Objectfilename[A1.OBJ]:↙Sourcelisting[NUL.LST]:a1↙Cross-reference[NUL.CRF]:a1↙④、鍵入DIR/W可見目的文獻(xiàn)A1.OBJ和列表文獻(xiàn)A1.LST。⑤、在DOS環(huán)境下,用連接文獻(xiàn)LINK連接程序生成可執(zhí)行文獻(xiàn)A1.EXE輸入LINK,可見屏幕有四個(gè)提問(wèn),按如下格式回答:ObjectModules[.OBJ]:A1↙RUNFile[A1.EXE]:↙ListFile[NUL.MAP]:↙Libraries[.LIB]:A1↙用DIR命令,查看生成各文獻(xiàn)⑥、用TYPEA1.LST↙命令觀看列表文獻(xiàn)⑦、在DOS環(huán)境下,用DEBUG跟蹤程序來(lái)安裝運(yùn)營(yíng)A1.EXE程序1)輸入DEBUGA1.EXE↙可見有提示符“—”2)輸入-R↙可見CPU內(nèi)所有寄存器內(nèi)容和標(biāo)志位狀態(tài)如下:AX=0000BX=0000CX=0100DX=0000SP=0028BP=0000SI=0000DI=0000DS=1112ES=1112SS=1126CS=1129IP=0000NVUPDIPLNZNAPONC1129:0000B82211MOVAX,11223)輸入-U,可看到11行指令,再用U命令可看到余下各指令。4)輸入運(yùn)營(yíng)命令-G=0028可見程序執(zhí)行到INT21H句便停下來(lái),屏幕展示此刻各寄存器內(nèi)容如下:AX=4C00BX=0007CX=0001DX=0000SP=0028BP=0000SI=0000DI=0000DS=1122ES=1112SS=1126CS=1129IP=0028NVUPDIPLZRACPECY1129:0028CD21INT215)輸入-RIP可修改指令指針6)輸入-T↙可看到執(zhí)行第一條指令成果輸入-T=03↙可看到3條指令執(zhí)行過(guò)程7)輸入-Q↙退出DEBUG,回到DOS狀態(tài)。注:如果masm過(guò)程中浮現(xiàn)錯(cuò)誤,可參看錯(cuò)誤提示,在相應(yīng)行和列去尋找錯(cuò)誤??芍苯釉赿os環(huán)境下鍵入edit進(jìn)入編輯環(huán)境。附:標(biāo)志寄存器相應(yīng)含義NVOF=0NVOF=0OVOF=1UPDF=0DNDF=1DIIF=0EIIF=1PLSF=0NGSF=1NZZF=0ZRZF=1NAAF=0ACAF=1P0PF=0PEPF=1NCCF=0CYCF=1實(shí)驗(yàn)例程1:DATASEGMENTARRAY1DB2,5,0,3,-4,5,0,0AH,0FHARRAY2DB3,5,4,-2,0,8,3,-0AH,20HCOUNTDB$-ARRAY2LENDB?SUMDB20HDUP(0)DATAENDSSTACK1SEGMENTPARASTACK'STACK'DW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVBX,-1MOVCX,0MOVCL,COUNTNOZERO:INCBXMOVAL,ARRAY1[BX]ADDAL,ARRAY2[BX]MOVSUM[BX],ALLOOPNENOZEROJEENDOINCBLENDO:MOVLEN,BLMOVAH,4CHINT21HCODEENDSENDSTART實(shí)驗(yàn)例程2:顯示字符串;SAMPLEPROGRAMDISPLAYMESSAGE;注釋行STACKSEGMENTPARASTACK‘STACK’;定義堆棧段DB1024DUP(0);在存儲(chǔ)器某個(gè)區(qū)域建立一種堆棧區(qū)STACKENDSDATASEGMENT;定義數(shù)據(jù)段MESSAGEDB‘THISISASAMPLEPROGRAM.$’;在存儲(chǔ)器中存儲(chǔ)供顯示數(shù)據(jù)DATAENDS;數(shù)據(jù)段結(jié)束CODESEGMENT;定義代碼段ASSUMECS:CODE,DS:DATA,SS:STACK;告訴匯編程序段范疇START:PROCFAR;將程序定義為遠(yuǎn)過(guò)程PUSHDSMOVAX,0;可用XORAX,AXPUSHAX;原則序,以便返回DOS操作系統(tǒng)MOVAX,DATAMOVDS,AX;初始化DSLEADX,MESSAGE;MESSAGE地址偏移量給BXMOVAH,9INT21H;調(diào)用DOS9號(hào)中斷功能顯示字符串。RET;返回DOS操作系統(tǒng)STARTENDP;過(guò)程結(jié)束CODEENDS;代碼段結(jié)束ENDSTART;整個(gè)程序匯編結(jié)束例3人機(jī)交互:DATASEGMENTBUFDB100;緩沖區(qū)長(zhǎng)度DB?;預(yù)留用來(lái)存儲(chǔ)實(shí)際長(zhǎng)度DB100DUP(?);接受來(lái)自鍵盤輸入下信息MESGDB‘WHATISYOURNAME?$’DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVDXOFFSETMESGMOVAH,09H;屏幕顯示提示信息INT21HMOVDXOFFSETBUFMOVAH,0AH;接受鍵盤輸入INT21HMOVAH,4CHINT21HCODEENDSENDSTART實(shí)驗(yàn)二數(shù)碼轉(zhuǎn)碼編程及程序調(diào)試一.實(shí)驗(yàn)?zāi)?.掌握不同進(jìn)程數(shù)及編碼互相轉(zhuǎn)換程序設(shè)計(jì)辦法,加深對(duì)數(shù)碼轉(zhuǎn)換理解;2.進(jìn)一步熟悉鍵盤用法;3.進(jìn)一步熟悉調(diào)試程序辦法。二.實(shí)驗(yàn)設(shè)備裝有匯編軟件IBMPC機(jī)一臺(tái)三.實(shí)驗(yàn)內(nèi)容及環(huán)節(jié)計(jì)算機(jī)輸入設(shè)備輸入信息普通ASCii碼或BCD碼表達(dá)數(shù)據(jù)或字符,CPU解決信息普通均用二進(jìn)制數(shù)進(jìn)行計(jì)算或其他解決,解決成果輸出外設(shè)有必要一外設(shè)規(guī)定變?yōu)锳SCII碼,BCD碼或七段顯示碼等。因而,在應(yīng)用軟件中各累數(shù)制轉(zhuǎn)換和代碼轉(zhuǎn)換是必不可少。計(jì)算機(jī)于外設(shè)間數(shù)碼轉(zhuǎn)換關(guān)系如圖2-1所示,數(shù)碼相應(yīng)關(guān)系如表2-1所示。一.將ASCII碼表達(dá)十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)1.程序流程十進(jìn)制數(shù)可表達(dá)為:代表十進(jìn)制1,2,3,···9,0;由式(2)可歸納十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)辦法:從十進(jìn)制最高位Dn開始作乘10加次位操作,將成果再乘10再加下一種次位,如此重復(fù),則可求出二進(jìn)制數(shù)成果來(lái)。程序流程圖如圖2-2。這里咱們規(guī)定:被轉(zhuǎn)換ASCII碼十進(jìn)制數(shù)存儲(chǔ)在3500h~3504h單位中。而轉(zhuǎn)換成果在3510~3511單位中。2.實(shí)驗(yàn)環(huán)節(jié)輸入程序并檢查無(wú)誤。在3500~3504h單元存入十進(jìn)制12ASCII碼,即e3500,并輸入。g=,運(yùn)營(yíng)程序,并用CTR+C來(lái)中斷程序返回監(jiān)控態(tài)。用d3510查當(dāng)作果,應(yīng)為35100C00重復(fù)試幾組數(shù),考查程序?qū)Φ男浴A鞒虉D如下:代碼如下:地址(H)助記符注釋MOVSI,3500;源地址MOVDI,3510;成果地址MOVBX,000A;乘數(shù)10MOVCX,0004;計(jì)數(shù)200CMOVAH,00;AH清零200EMOVAL,[SI];取被轉(zhuǎn)換數(shù)SUBAL,30;ASCII碼變十進(jìn)制數(shù)IMULBX;高位(AX)*(BX)送AXADDAL,[SI+01];取下一位1017SUBAL,30;ASCII碼減30變十進(jìn)制數(shù)INCSI;源地址指針+1201ALOOP;CX-1,若CX不等于零則繼續(xù)201CMOV[DI],AX;若CX不等于零則存成果201EINT3運(yùn)營(yíng)成果截圖:二.將十進(jìn)制數(shù)ASCII碼轉(zhuǎn)換為BCD碼1.程序流程將從鍵盤輸入五位十進(jìn)制數(shù)ASCII碼已存在3500起始內(nèi)存單元中。把它轉(zhuǎn)換成BCD碼后,再按位分別存入350A起始內(nèi)存單元內(nèi)。若輸入不是十進(jìn)制ASCII碼,則顯示FF.2.實(shí)驗(yàn)環(huán)節(jié)輸入程序并檢查無(wú)誤。在3500H——3504H單元中存入五位十進(jìn)制數(shù)ASCII碼,即E3500↙,并輸入31,32,33,34,35。G=↙,運(yùn)營(yíng)以上程序。D350A↙,顯示成果為:0000:350A0102030405CC…重復(fù)試幾組數(shù),考查程序?qū)Φ男?。流程圖如下:代碼如下:地址(H)助記符注釋MOVCX,0005;循環(huán)計(jì)數(shù)器賦初值MOVDI,3500;ASCII碼首址MOVBL,F(xiàn)F;錯(cuò)誤標(biāo)志送BLMOVAL,[DI];送ASCII碼至AL200ACMPAL,3A;比較AL與3AH200CJNB;不低于3A則轉(zhuǎn)200ESUBAL,30;低于3A則取ASCII碼低四位JB;低于30則轉(zhuǎn)MOVBL,AL;否則AL內(nèi)容送BL,取代FFMOVAL,BL;成果或錯(cuò)誤標(biāo)志送ALMOV[DI+0A],ALINCDI201ALOOP201CINT3運(yùn)營(yíng)成果截圖:將十六位二進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼表達(dá)十進(jìn)制數(shù)程序及其流程十六位二進(jìn)制數(shù)值域?yàn)?——65535,最大可轉(zhuǎn)換為五位十進(jìn)制數(shù)。算法:五位十進(jìn)制數(shù)可表達(dá)為:(Di:表達(dá)十進(jìn)制數(shù)0——9。)因而,將十六位二進(jìn)制數(shù)轉(zhuǎn)換為五位ASCII碼表達(dá)表達(dá)十進(jìn)制數(shù),就是求D1——D4,并將它化為ASCII碼。程序流程圖如圖1-3所示,設(shè)源數(shù)據(jù)存于3500——3501H單元中,成果數(shù)存于3510——3514H單元中。2.實(shí)驗(yàn)環(huán)節(jié)輸入程序并檢查無(wú)誤。在3500——3501H單元中存儲(chǔ)0C00,運(yùn)營(yíng)程序并檢查成果,應(yīng)看到3510——3514H單元中數(shù)依次為。重復(fù)試幾組數(shù),并運(yùn)營(yíng)程序、觀測(cè)成果。流程圖如下:代碼如下:地址(H)助記符注釋MOVDX,[3500];取二進(jìn)制數(shù)MOVSI,3515;目的首址在3510DECSIMOVAX,DX200AMOVDX,0000200DMOVCX,000ADIVCX;;除10XCHGAX,DXADDAL,30MOV[SI],ALCMPDX,0000201BJNE201DCMPSI,3510;填余下高位為02021JZ202A;2023DECSI2024MOVAL,302026MOV[SI],AL2028JMP201D202AINT3運(yùn)營(yíng)成果截圖:四.十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼1.程序及其流程通過(guò)CPU解決后十六進(jìn)制數(shù)存儲(chǔ)在起始地址為3500H內(nèi)存單元中,把它們轉(zhuǎn)換成ASCII碼之后,再分別存入起始地址為350AH內(nèi)存單元中。從表2-1中可知,十六進(jìn)制數(shù)加30H即可得到0H——9HASCII碼,而要得到AH——FHASCII碼,則需再加7H。程序流程圖及參照程序如圖1-4所示。2.實(shí)驗(yàn)環(huán)節(jié)輸入程序并檢查無(wú)誤。在3500——3501H單元中存入四位十六進(jìn)制數(shù)203B,即E3500↙,并輸入3B,20。G=↙,運(yùn)營(yíng)以上程序D350A↙,顯示成果為:0000:350A42333032CC…輸入數(shù)據(jù)與成果ASCII碼相應(yīng)順序相反。重復(fù)試幾組數(shù)??疾槌绦?qū)Φ男浴A鞒虉D如下:代碼如下:地址(H)助記符注釋MOVCX,0004MOVDI,3500MOVDX,[DI]MOVAX,DX200AANDAX,000F;取低四位值200DCMPAL,0A;;判與否“0”-“9”200FJB;是“0”-“9”轉(zhuǎn)ADDAL,07;是“A”-“F”,加7ADDAL,30;轉(zhuǎn)換為ASCII碼MOV[DI+0A],ALINCDIPUSHCX;保護(hù)循環(huán)計(jì)數(shù)器內(nèi)容201AMOVCL,04;移位次數(shù)送CL201CSHRDX,CL201EPOPCX201FLOOP2021INT3運(yùn)營(yíng)成果截圖:五.BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)1.程序及其流程設(shè)四個(gè)二位十進(jìn)制數(shù)BCD碼存儲(chǔ)在起始地址為3500H,單元中,轉(zhuǎn)換出二進(jìn)制數(shù)碼存入起始地址為3510H內(nèi)存單元中,程序流程圖及參照程序如圖1-5所示。2.實(shí)驗(yàn)環(huán)節(jié)輸入程序并檢查無(wú)誤。在3500——3507單元中存入四個(gè)十進(jìn)制數(shù)(12,34,56,78)BCD碼,即E3500↙輸入01,02,03,04,05,06,07,08。G=↙,運(yùn)營(yíng)以上程序。D3510↙,顯示成果為35100C00220038004E00重復(fù)試幾組數(shù),考查程序?qū)Φ男浴A鞒虉D如下:代碼如下:地址(H)助記符注釋MOVCX,0004MOVDI,3500MOVAL,[DI]ADDAL,AL;乘2200AMOVBL,AL200CADDAL,AL;乘2200EADDAL,AL;乘2ADDAL,BL;乘10INCDIMOVAH,00ADDAL,[DI];BCD碼十位與個(gè)位加MOV[DI+0F],AX;存成果圖1-5201AINCDI201BLOOP201DINT3運(yùn)營(yíng)成果截圖:實(shí)驗(yàn)三分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)一、分支程序設(shè)計(jì)實(shí)驗(yàn)1.實(shí)驗(yàn)?zāi)?.掌握分支程序構(gòu)造。2掌握分支程序設(shè)計(jì)、調(diào)試辦法。2.實(shí)驗(yàn)設(shè)備微機(jī)一臺(tái)3.內(nèi)容設(shè)計(jì)一數(shù)據(jù)塊間搬移程序設(shè)計(jì)思想:程序規(guī)定把內(nèi)存中一數(shù)據(jù)區(qū)(稱為源數(shù)據(jù)塊)傳送到另一存貯區(qū)(稱為目數(shù)據(jù)塊)。源數(shù)據(jù)塊和目數(shù)據(jù)塊在存貯中也許有三種狀況。對(duì)于兩個(gè)數(shù)據(jù)塊分離狀況,數(shù)據(jù)傳送從數(shù)據(jù)塊首址開始,或者從數(shù)據(jù)塊末址開始均可,但對(duì)于有某些重疊狀況,則要加以分析,否則重疊某些會(huì)因“搬移”而遭破壞??梢缘贸鋈缦陆Y(jié)論:當(dāng)源數(shù)據(jù)塊首址〉目塊首址時(shí),從數(shù)據(jù)塊首址開始傳送數(shù)據(jù)。當(dāng)源數(shù)據(jù)塊首址〈目塊首址時(shí),從數(shù)據(jù)塊末地址開始傳送數(shù)據(jù)。流程圖如下:代碼如下:DATASEGMENTMDB01H,02H,03H,04H,05H,06H,07H,08H,09H,10H,11H,12H,13H,14H,15H,16H,24DUP(?)N=M+10Z=N+17CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX MOVBX,OFFSETZSECOND:MOVAX,OFFSETMMOVDX,OFFSETN ADDAX,15 CMPAX,BX JCFIRST MOVCX,0016 ADDDX,15 MOVSI,AX MOVDI,DXBEGIN2:MOVBL,[SI]MOV[DI],BL DECSI DECDI LOOPBEGIN2 JMPCOMPLETEFIRST:MOVCX,0016SUBAX,15 MOVSI,AX MOVDI,BXBEGIN1:MOVDL,[SI]MOV[DI],DLINCSIINCDI LOOPBEGIN1 MOVBX,0000 JMPSECONDCOMPLETE:MOVAH,4CHINT21HCODEENDSENDSTART運(yùn)營(yíng)成果截圖:在源數(shù)據(jù)塊中存入6個(gè)數(shù),分別使SI不不大于、等于、不大于DI均發(fā)現(xiàn)數(shù)據(jù)對(duì)的傳送。程序?qū)Φ摹6?、循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)1.實(shí)驗(yàn)?zāi)?1)加深對(duì)循環(huán)構(gòu)造理解。(2)掌握循環(huán)構(gòu)造程序設(shè)計(jì)辦法。(3)純熟掌握調(diào)試循環(huán)程序辦法。2.實(shí)驗(yàn)設(shè)備TDS-MD微機(jī)一臺(tái)3.內(nèi)容(1)編制程序使S=1+2*3+3*4+4*5+……N(N+1),直到N(N+1)項(xiàng)不不大于200為止。流程圖如下: NYNY開始1→DX,2→BLBL→ALBL+1AL*BL→AXDX+AX→DX結(jié)束AX>200代碼如下:STACK1SEGMENTSTACKDW64DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART: MOVDX,0001HMOVBL,02HA1: MOVAL,BLINCBLMULBLADDDX,AXCMPAX,00C8HJNAA1A2: INT03HCODEENDSENDSTART運(yùn)營(yíng)成果截圖:運(yùn)營(yíng)成果為45FH,與實(shí)際相符,程序?qū)Φ摹?2)求某個(gè)數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)個(gè)數(shù)設(shè)數(shù)據(jù)區(qū)第一單元存儲(chǔ)區(qū)內(nèi)數(shù)據(jù)個(gè)數(shù),從第二單元開始存儲(chǔ)數(shù)據(jù),在區(qū)內(nèi)最后一種單元存儲(chǔ)成果。為記錄數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)個(gè)數(shù),需要逐個(gè)判斷區(qū)內(nèi)每一種數(shù)據(jù),然后將所有數(shù)據(jù)中凡是符號(hào)位為1數(shù)據(jù)個(gè)數(shù)累加起來(lái),即得區(qū)內(nèi)所包括負(fù)數(shù)個(gè)數(shù)。流程圖如下:代碼如下:STACK1SEGMENTSTACKDW64DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART: MOVDI,3000HMOVCL,[DI]XORCH,CHMOVBL,CHINCDIA1:MOVAL,[DI]TESTAL,80HJEA2INCBLA2:INCDILOOPA1MOV[DI],BLA3:JMPA3CODEENDSENDSTART運(yùn)營(yíng)成果截圖:輸入數(shù)據(jù)個(gè)數(shù)為6輸入12、88、82、90、22、33得成果03成果與實(shí)際相符,程序?qū)Φ?。?shí)驗(yàn)四子程序設(shè)計(jì)實(shí)驗(yàn)?zāi)浚薄W(xué)習(xí)子程序定義和調(diào)用辦法。2、掌握子程序、子程序嵌套構(gòu)造。3、掌握子程序程序設(shè)計(jì)、編制及調(diào)試辦法。實(shí)驗(yàn)內(nèi)容程序采用菜單式選取,可接受顧客輸入命令(1~5),各命令如下:按1鍵完畢字符串小寫字母變大寫字母顧客輸入一由英文大小寫字母或數(shù)字0~9構(gòu)成字符串(以回車結(jié)束),程序逐個(gè)檢查字符串中各字符,將原串中小寫字母變成大寫字母,其他字符不變,并在屏幕上顯示。顧客按任一鍵,重做,按ESC鍵,返回主菜單。按2鍵完畢找最大值(二選一)1、接受顧客輸入可顯示字符串(以回車結(jié)束),程序?qū)⑵渲蠥SCII碼值最大字符顯示出來(lái)。2、接受顧客輸入若干無(wú)符號(hào)8位數(shù)(以空格或逗號(hào)為分隔符,以回車結(jié)束),程序?qū)⑵渲凶畲髷?shù)顯示出來(lái)。顧客按任一鍵,重做,按ESC鍵,返回主菜單。按3鍵完畢排序(二選一)1、接受顧客輸入可顯示字符串,以回車結(jié)束。程序按ASCII碼值大小由大到小排序并輸出顯示。2、接受顧客輸入若干個(gè)有符號(hào)8位數(shù)(以空格逗號(hào)為分隔符,以回車結(jié)束)。程序?qū)⑵渲凶畲髷?shù)顯示出來(lái)。顧客按任一鍵,重做,按ESC鍵,返回主菜單。按4鍵顯示時(shí)間一方面提示顧客對(duì)時(shí),即顧客輸入時(shí),分,秒(以空格或冒號(hào)分隔,以回車結(jié)束),然后,在屏幕上不斷顯示時(shí)間,格式為:××(時(shí)):××(分):××(秒),最佳定點(diǎn)顯示。顧客按任一鍵,重新對(duì)時(shí),按ESC鍵,返回主菜單。按5鍵,結(jié)束程序運(yùn)營(yíng),返回系統(tǒng)提示符。流程圖如下:主程序流程子程序一流程子程序二流程子程序三流程子程序四流程代碼如下:DATASEGMENTORG9999HMENUDB0DH,0AH,'ProgramedbyXueChengdaiClassfourGrade11',0DH,0AH,;菜單DB'Pleaseinput1~5tochooseservice',0DH,0AH,DB'1:Inputanstring.Thenconvertthesmalllettertobigletter.',0DH,0AH,DB'2:FindthecharacterwhoseASCIIcodeisbiggest',0DH,0AH,DB'3:SortthecharacterbyASCIIcodebydecreasingorder.',0DH,0AH,DB'4:Displaythetickingtime',0DH,0AH,DB'5:Endtheprogram$'MEG0DB'Pleasechoosefunction$';提示信息MEG0~MEG8MEG1DB'Youhavechoosethefunction1.',0DH,0AH,'Pleaseinputthecharacterstringyouwanttoconvert:$'MEG2DB'Youhavechoosethefunction2.',0DH,0AH,'Pleaseinputthecharacterstring:$'MEG3DB'Youhavechoosethefunction3.',0DH,0AH,'Pleaseinputthecharacterstringyouwanttosort$'MEG4DB'Youhavechoosethefunction4.',0DH,0AH,'Pleaseinputthetimeyouwanttosetinformatlike:xx:xx:xx$'MEG5DB'Theprogramisend$'MEG6DB'Sorry.youhavechosenaundefinedfunction.Pleaseinputacorrectfunctionnumber$'MEG7DB'Failtosettime$'MEG8DB'PressanykeytodoagainorpresstheESCkeytoreturntothemainmenu$'FLAGDB-1;冒泡排序中使用標(biāo)志DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAstart:MAINPROCNEAR;主程序MOVAX,DATAMOVDS,AXCIN:LEADX,MENU;輸出提示信息MOVAH,09HINT21HCALLENT;輸出回車換行LEADX,MEG0MOVAH,09HINT21HCALLENTMOVAH,01HINT21HCMPAL,30H;判斷功能號(hào)JLEEORCMPAL,31HJEF1CMPAL,32HJEF2CMPAL,33HJEF3CMPAL,34HJEF4CMPAL,35HJEF5EOR:CALLENTLEADX,MEG6;輸出出錯(cuò)信息MOVAH,09HINT21HJMPCINF1:CALLENT;功能1LEADX,MEG1MOVAH,09HINT21HCALLENTCALLFUN1;調(diào)用子程序1MOVAH,01HINT21HCMPAL,1BHJNEF1JMPCINF2:CALLENT;功能2LEADX,MEG2MOVAH,09HINT21HCALLENTCALLFUN2;調(diào)用子程序2MOVAH,01HINT21HCMPAL,1BHJNEF2JMPCINF3:CALLENT;功能3LEADX,MEG3MOVAH,09HINT21HCALLENTCALLFUN3;調(diào)用子程序3MOVAH,01HINT21HCMPAL,1BHJNEF3JMPCINF4:CALLENT;功能4LEADX,MEG4MOVAH,09HINT21HCALLENTCALLFUN4;調(diào)用子程序4MOVAH,01HINT21HCMPAL,1BHJNEF4JMPCINF5:MOVAH,4CH;功能5,終結(jié)程序INT21HFUN1PROCNEAR;子程序1PUSHAXPUSHCXPUSHDXPUSHSIMOVAH,0AH;字符串輸入INT21HCALLENTMOVSI,DXINCSIMOVCL,[SI];設(shè)定循環(huán)次數(shù)MOVCH,0JIK:INCSIMOVAL,[SI]CMPAL,0DH;判斷字符ASCII碼JEKLCMPAL,61HJBJKCMPAL,7AHJAJKSUBAL,20H;小寫轉(zhuǎn)大寫JK:MOVDL,AL;輸出字符MOVAH,02HINT21HLOOPJIKCALLENTLEADX,MEG8MOVAH,09HINT21HKL:POPSIPOPDXPOPCXPOPAXRETFUN1ENDPFUN2PROCNEAR;子程序2PUSHAXPUSHCXPUSHDXPUSHSIMOVAH,0AHINT21HCALLENTMOVSI,DXINCSIMOVCL,[SI]MOVCH,0INCSIMOVAL,[SI]FH:INCSI;循環(huán)比較CMPAL,[SI]JAFGMOVAL,[SI]FG:LOOPFHMOVDL,ALMOVAH,02HINT21HCALLENTLEADX,MEG8MOVAH,09HINT21HPOPSIPOPDXPOPCXPOPAXRETFUN2ENDPFUN3PROCNEAR;子程序3PUSHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIMOVAH,0AHINT21HCALLENTMOVSI,DXINCSIMOVBL,[SI]MOVBH,0INCSIMOVDI,SILP1:CMPFLAG,0;依照標(biāo)志判斷JELP3DECBX;檢查循環(huán)次數(shù)CMPBX,0JELP3MOVCX,BXMOVSI,DIMOVFLAG,0LP2:MOVAL,[SI];先后比較CMPAL,[SI+1]JLENEXTXCHGAL,[SI+1]MOV[SI],ALMOVFLAG,0FFHNEXT:INCSILOOPLP2;內(nèi)循環(huán)繼續(xù)JMPLP1;退出內(nèi)循環(huán)LP3:DECDI;重新設(shè)定循環(huán)次數(shù)MOVCL,[DI]MOVCH,0LP4:INCDI;循環(huán)輸出字符MOVDL,[DI]MOVAH,02HINT21HLOOPLP4CALLENTLEADX,MEG8MOVAH,09HINT21HPOPDIPOPSIPOPDXPOPCXPOPBXPOPAXRETFUN3ENDPFUN4PROCNEAR;子程序4PUSHAXPUSHBXPUSHCXPUSHDXCALLCROT;調(diào)用子程序CROTMOVCH,AL;裝入入口參數(shù)MOVAH,01HINT21HCALLCROTMOVCL,ALMOVAH,01HINT21HCALLCROTMOVDH,ALMOVDL,0CALLENTMOVAH,2DH;調(diào)DOS中斷置時(shí)間INT21HCMPAL,0FFHJEFALPRT:PUSHDX;輸出時(shí)間MOVAL,CHMOVAH,0MOVBL,0AHDIVBLADDAL,30HADDAH,30HMOVDL,ALMOVDH,AHM

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論