匯編實(shí)驗(yàn)報(bào)告(詳細(xì)版)_第1頁(yè)
匯編實(shí)驗(yàn)報(bào)告(詳細(xì)版)_第2頁(yè)
匯編實(shí)驗(yàn)報(bào)告(詳細(xì)版)_第3頁(yè)
匯編實(shí)驗(yàn)報(bào)告(詳細(xì)版)_第4頁(yè)
匯編實(shí)驗(yàn)報(bào)告(詳細(xì)版)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)組成與匯編語(yǔ)言(實(shí)驗(yàn)報(bào)告)內(nèi)容:實(shí)驗(yàn)一、六、七、八院系專(zhuān)業(yè):計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)姓名:學(xué)號(hào):xxxxxxxxxxxxxx完成時(shí)間:2012年12月1日計(jì)算機(jī)組成與匯編語(yǔ)言實(shí)驗(yàn)報(bào)告姓名xxxx學(xué)號(hào)2011004xxxxx計(jì)分專(zhuān)業(yè)軟件工程班級(jí)xxxx實(shí)驗(yàn)日期2012年12月1日實(shí)驗(yàn)名稱(chēng)實(shí)驗(yàn)一數(shù)制轉(zhuǎn)換實(shí)驗(yàn)?zāi)康?熟悉各種進(jìn)制數(shù)據(jù)之間的相互轉(zhuǎn)換方法。?掌握二-十進(jìn)制數(shù)據(jù)的相互轉(zhuǎn)換程序設(shè)計(jì)。實(shí)驗(yàn)內(nèi)容1.將編寫(xiě)好的程序1輸入、編譯、連接并運(yùn)行。程序1清單#include<stdio.h>#include<string.h>#include<stdlib.h>voidmain(){inti,l,s0=0,s=0;chara[17];while(l!=16){printf("請(qǐng)輸入一個(gè)16位的二進(jìn)制數(shù):\n");gets(a);l=strlen(a);for(i=0;i<16;i++){if(a[i]!='0'&&a[i]!='1'){printf("輸入的二進(jìn)制數(shù)不正確??!");break;}}}if(a[15]=='l')s++;for(i=l;i<16;i++){if(a[15-i]=='1')s+=(1<<i);}printf("二進(jìn)制:");puts(a);printf("對(duì)應(yīng)的十進(jìn)制為:");printf("%d\n",s);}程序1運(yùn)行結(jié)果:說(shuō)明:如果不是16位二進(jìn)制則會(huì)提示錯(cuò)誤。2.將編寫(xiě)好的程序2輸入、編譯、連接并運(yùn)行。程序2清單#include<stdio.h>#include<math.h>voidmain(){int10,t1,t2,t3,i,j;inta[16];printf("請(qǐng)輸入一個(gè)十進(jìn)制數(shù):");scanf("%d",&t0);t1=t0;for(i=0;i<16;i++){t2=t1/2;if(t2>1)a[i]=t1%2;elseif(t1==1){a[0]=1;for(i=1;i<16;i++)a[i]=0;}elseif(t1二=2){a[i]=0;a[i+1]=1;for(j=i+2;j<16;j++)a[j]=0;break;}iseif(t1==3)a[i]=1;a[i+1]=1;for(j二i+2;j<16;j++)a[j]=0;break;elsea[i]=0;t1=t2;for(i=0;i<8;i++)13=a[i];a[i]=a[15-i];a[15-i]=t3;printf(“十進(jìn)制數(shù):%d\n",tO);printf("對(duì)應(yīng)的二進(jìn)制數(shù)是:")for(i=0;i<16;i++)printf("%d",a[i]);printf("\n");程序2運(yùn)行結(jié)果:注:篇幅不夠,可以另外附頁(yè)。計(jì)算機(jī)組成與匯編語(yǔ)言實(shí)驗(yàn)報(bào)告姓名xxxx學(xué)號(hào)2011004xxxx計(jì)分專(zhuān)業(yè)軟件工程班級(jí)xxxxx實(shí)驗(yàn)日期2012年12月1日實(shí)驗(yàn)名稱(chēng)實(shí)驗(yàn)六分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康?熟悉有符號(hào)定點(diǎn)數(shù)的表示。?掌握原碼、補(bǔ)碼、反碼之間的相互轉(zhuǎn)換程序設(shè)計(jì)。實(shí)驗(yàn)內(nèi)容1.調(diào)試程序1:求無(wú)符號(hào)字節(jié)變量X,Y之差的絕對(duì)值,存儲(chǔ)于字節(jié)變量A中。源程序如下:DATASEGMENTXDB23YDB45ADB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XMOVBL,YCMPAL,BLJAEBIGSUBBL,ALMOVA,BLJMPEXITBIG:SUBAL,BLMOVA,ALEXIT:MOVAX,4C00HINT21HCODEENDSENDSTART上機(jī)運(yùn)行該程序并檢查運(yùn)行結(jié)果是否正確。上機(jī)實(shí)驗(yàn)過(guò)程:

BUFDB38H,73H,1FHMAXDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,MOVDS,MOVAL,CMPAL,DATAAXBUFBUF+1BUF+1;取BUF中的第一個(gè)數(shù),同第二個(gè)數(shù)相比較,若大于則;跳轉(zhuǎn)到LP1;小于則取出第二個(gè)數(shù)繼續(xù)比較JNBMOVLP1AL,LP1:CMPAL,BUF+2;若BUF大于BUF+1,則與BUF+2比較JAELP2;大于等于則跳轉(zhuǎn)到LP2MOVAL,BUF+2LP2:MOVMAX,AL;將最大的數(shù)轉(zhuǎn)存到MAX中MOVBL,ALMOVCL,04SHRAL,CLCMPAL,0AH;將最大數(shù)的高四位和0AH比較JBLP3ADDAL,07HLP3:ADDAL,30H;將高四位轉(zhuǎn)化為相應(yīng)的ASCII碼并以字符形式輸出MOVDL:,ALMOVAH,2INT21HMOVAL,BLANDAL,0FH;屏蔽咼四位CMPAL,0AH;將低四位與0AH比較JBLP4ADDAL,07H;將低四位轉(zhuǎn)化為相應(yīng)的ASCII;將低四位轉(zhuǎn)化為相應(yīng)的ASCII碼并以字符形式輸MOVDL,ALMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART上機(jī)運(yùn)行該程序并檢查運(yùn)行結(jié)果是否正確。上機(jī)實(shí)驗(yàn)過(guò)程:raw管珪員:C:\WindoW3\&ystem32\cmd.exe,1=1I回MicrosoftWindows[????6.1.76011????????Cc>2009MicrosoftCopporation????????????7???C二SUsei's\Adninistr<*toi'd■"MncisinC:^nasn>nasn>162;Microsoft<R>MacroAssemblerUersion5.03Copyright<C>MicrosoftCorp1981-1985,1^87?Allrightsreserved.50410+415190Bytessj/mho1spacefree0Warning-Errors0SevereErrorsC:Miasm>linkh62;Microsoft<R>OverlayLinkerUersion3.60Copyright<C>MicrosoftCorp1VB3-1987.Allvightsveserued.LINK:wapningL4021:nostacksegment

說(shuō)明:求出三個(gè)數(shù)里面的最大數(shù)73;3.編寫(xiě)程序1:編程實(shí)現(xiàn)從鍵盤(pán)輸入一位數(shù)字,判斷其奇偶性,并在屏幕上輸出一個(gè)標(biāo)志,若為奇數(shù),則輸出1,否則輸出0。程序源代碼:codesegmentassumecs:codestart:movah,01h;調(diào)用dos中斷1#子功能輸入字符int21h;al<-輸入一位數(shù)字clc;cf清0rcral,1;al最低位移入cfjncevn;最后一位是0說(shuō)明是偶數(shù)moval,31h;奇數(shù)al=1的ascii碼jmpdispevn:moval,30h;偶數(shù),al〈-1的ascii碼disp:movah,02h;dos中斷的2#子功能,輸出字符;movdl,0ah;output\n;int21h;movdl,0dh;outputenter

;int21hmovdl,al;outflagwordint21hmovah,4ch;returndosint21hcodeendsendstart

INT21HMOVAH,1;實(shí)現(xiàn)鍵盤(pán)的輸入INT21HANDAL,0FH;將ASCII碼轉(zhuǎn)化為真值MOVX,ALCMPX,0;與0比較,大于則跳到NT1,小于則跳到NT2JNLNT1CMPX,0JLNT2JMPEXITNT1:MOVDL,AL;將乂轉(zhuǎn)存到DL,AL=DL=XADCDL,DL;DL=2XADCDL,DL;DL=4XADCAL,DL;AL=5XMOVBL,3SBBAL,BL;BL=5X-3JMPEXITNT2:SHLAL,1;AL=2XJMPEXITEXIT:MOVY,AL;結(jié)果存放于Y中MOVAH,4CHINT21HCODEENDSENDSTART

屋菖珪員:C:\WEndows\system32\cmd.exe回l回l?Cs^Miasn>nasn1164;Microsoft<R>MacroAssenblerUersion5.&&CupiFi'igrht<C>MicrusoiftCorp1981—1985,1587?Allrigrhtsreserved.50448+415152Bytessymho1spacefree50448WarningErrorsSevereErrorsC:Miasm>linkh64;Microsoft<R>OuerlayLinkerUersion3.63CopiFi'iglit<C>Mici'oaoftCorp1983—1987-fl11riglitsreserved-LINK-warnimgL4021-nostacksegmentC:Miasm?,LINK:warningL4021:iidstacksegmentC:\indijm>(Jybus-j1164.exy;]]1423:0000B82114MUVHX.1421U23:00B3BECBMOVDSAXU23:O005BA02e0HOyDX000?1423:0008B469MUyfiH,091423:00BRCD21IMT211423:000CB4Q1UNAH.011423;00BECD2111[21U23:O01024BFnunmor1423:0012R20000MUyL0000J.AL1423:001580OE000000CMPbyteptr[eeeei.001423:001R7D6flMF00%1423:001CBB3EB00000CMPBYTEPTR[0000],SB-dl/i21:0nfU21:麗朋朋朋3iF50555420-^1204F砧404?血5?..INPUTflNUMBER_gINPUT(1NUMBER:9PruqrdmIermiridlednurmcilly-dl/i21:0nfU21:麗朋09?n19iFsn砧詔20-i1204F砧404?血5?.*TMPIITflMIIHBFR說(shuō)明:輸入9,則輸出2A(十六進(jìn)制)即4*9-3=42(十進(jìn)制);5.將編寫(xiě)好的程序3輸入、編譯、連接并運(yùn)行。程序3清單DATASEGMENT

ADW03HBDW03HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,AMOVBX,BANDAX,01H;判斷A、B是否為奇數(shù)ANDBX,01HCMPAX,BX;若A<B,則跳轉(zhuǎn)到NT1,表明A為奇數(shù),B為偶數(shù)JNENT1CMPAX,1;若A=1,說(shuō)明A、B同為奇數(shù)JENT2CMPAX,0;若A=0,說(shuō)明A、B同為偶數(shù)JENT3JMPEXITNT1:MOVAX,A;若A為偶數(shù),B為奇數(shù),則交換MOVBX,BXCHGAX,BXMOVA,AXMOVB,BXJMPEXITNT2:MOVAX,A;若人、B同為奇數(shù),則每個(gè)變量加1MOVBX,BINCAXINCBXMOVA,AX

MOVJMPB,EXITBXNT3:MOVAX,A;若人、B同為偶數(shù),則不變MOVBX,BMOVA,AXMOVB,BXEXIT:MOVAH,4CHINT21HCODEENDSENDSTART回程序3運(yùn)行結(jié)果:回廊善理員:C:\WindoVifs\systern32\cmd.exeCs>masnliGGMievosoft<R>MacroAssemblerUersion5.03CupiFi'igrht<C>MlicrosoftCorp1981—1985,1?87?Allrightsreserved[NUL.LST3:[NUL.CRFJ:[NUL.LST3:[NUL.CRFJ:+415114Bytessumho1spacefibeeWarningErrorsSeuereEri'or?11G5;MicposoftCR>OueplayLinkerUersion3.69Copyright<C>MicrosoftCorp1983-1987.Allrightsreserued.LINK:warningL4021:nostacksegmentC:Xma5m>l

說(shuō)明:A,B兩個(gè)數(shù)都為3,都為奇數(shù),故加1?成4,結(jié)果如上圖。實(shí)驗(yàn)情況與體會(huì):在此次實(shí)驗(yàn)中,可以說(shuō)是我第一次接觸到真正編寫(xiě)匯編實(shí)驗(yàn),盡管剛開(kāi)始寫(xiě)程序時(shí)會(huì)有指令不熟悉的情況或者指令運(yùn)用不靈活的情況雖然程序的算法不難,但對(duì)于初學(xué)者來(lái)說(shuō),把思路理得順暢還得花點(diǎn)時(shí)間好好琢磨。這讓我覺(jué)得匯編是一門(mén)新的計(jì)算機(jī)語(yǔ)言,要想更好地掌握,還得自己多補(bǔ)不足,多花時(shí)間學(xué)習(xí)。注:篇幅不夠,可以另外附頁(yè)。計(jì)算機(jī)組成與匯編語(yǔ)言實(shí)驗(yàn)報(bào)告姓名xxxxx學(xué)號(hào)2011004xxxxx計(jì)分專(zhuān)業(yè)軟件工程班級(jí)xxxxx實(shí)驗(yàn)日期2012年12月1日實(shí)驗(yàn)名稱(chēng)實(shí)驗(yàn)七循環(huán)結(jié)程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康?加深對(duì)循環(huán)結(jié)構(gòu)的理解。?掌握循環(huán)程序的設(shè)計(jì)方法。?進(jìn)一步熟悉匯編語(yǔ)言程序的匯編、連接及調(diào)試技術(shù)。實(shí)驗(yàn)內(nèi)容1.調(diào)試程序1:統(tǒng)計(jì)字型變量X中1的個(gè)數(shù),存儲(chǔ)于字節(jié)變量Y中。源程序如下:DATASEGMENTXDW63HYDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXTOC\o"1-5"\h\zMOVAX,XMOVBL,0MOVCX,16AGAIN:ROLAX,1JNCNEXTINCBLNEXT:LOOPAGAINMOVY,BLEXIT:MOVAX,4C00HINT21HCODEENDSENDSTART上機(jī)運(yùn)行該程序并檢查運(yùn)行結(jié)果是否正確。上機(jī)實(shí)驗(yàn)過(guò)程:同管理員:C:\Window5\5y5tem32\cmd.exe_MicrosoftWindows[????6.1.76011????????Cc>2009MicrosoftCorporation????????????7???C=MJsei'sMldniinistratoi'>iGd■'Mnas:nC:Miasm>masm;Microsoft<R>MacroAssemblerUersion5.03Copyright<C>MicvosoftCorp1981-1985,1987?Allrightsreserved.50486+415114Bytessumho1spacefree0Warning-Eri'oi'?0£已ueeeErrorsC:\nasn>linkh71;Microsoft<R>OuerlayLinkerUersion3.63Copyright<C>MicrosoftCorp1^83-1987.Allrightsreserued.LINK:wapningL4021:nostacksegmentG:

通過(guò)實(shí)驗(yàn)測(cè)試,程序一運(yùn)行結(jié)果為4,正確。2.調(diào)試程序2:DATASEGMENTARRAYDB34,56,0,58,79,0,0,28,98HCOUNTEQU$-ARRAYDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,COUNTMOVBX,-1AGAIN:INCBXCMPARRAY[BX],0LOOPNZAGAINJEOKMOVDL,‘N'JMPSHOWOK:MOVDL,BLORDL,30HCMPDL,39HJBESHOWADDDL,7SHOW:MOVAH,2INT21HEXIT:MOVAX,4C00HINT21HCODEENDSENDSTART上機(jī)運(yùn)行該程序,查看其顯示結(jié)果,并說(shuō)明程序?qū)崿F(xiàn)什么功能。raw管珪員:匚:\Windo7>ra\5y5tem32\cmcl.exe.1=1__旦0Warning-Ei*i*oi*s1SevereErrorsC:Miasm>masmh72MicrosoftMacrofissemblerUersionb.tikiCopyright<C>MicrosoftCorp1981-1985,丄北1??Allrightsreserued.Objectfilename[L72-OBJ]:Sourcelisting[NUL.LST]:Ci'oss-pefevence[NUL-CRF1:5037241522SBi/tes1sp^cefree0Warning-Errors0SevereErrorsC:Miasm>linkh72;Microsoft<R>OuerlayLinkerUersion3.63Copyright<C>MicrosoftCorp1983-1987.Allrightsreserued.LINK:warningL4021:nostacksegmentC:Miasm>上機(jī)運(yùn)行該程序,查看運(yùn)行結(jié)果為2,程序?qū)崿F(xiàn):查找數(shù)組中值為0的位置。3.編寫(xiě)程序1:編程計(jì)算從1到100的和。將編寫(xiě)好的程序輸入、匯編、連接并運(yùn)行。源程序?yàn)椋篋ATASEGMENTXDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,100MOVBX,0BEGIN:INCBXADDX,BXLOOPBEGINMOVAH,4CHINT21HCODEENDSENDSTART程序結(jié)果如上圖:13BA(十六進(jìn)制)=5050(十進(jìn)制);4.設(shè)內(nèi)存中以BUFFER為首地址的緩沖區(qū)中有若干個(gè)以非壓縮BCD碼形式存放的十進(jìn)制數(shù),并以符號(hào)$結(jié)束。它的值可能是0?9中的任意一個(gè)。編程將這些十進(jìn)制數(shù)順序顯示在屏幕上。源程序?yàn)椋篋ATASEGMENTBUFFERDB1,2,3,4,5,6,7,8,9,'$'DATAENDSSTACKSEGMENTSTACKSKTOPDB40HDUP(?)SKSIZEEQU$-OFFSETSKTOPSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,SKSIZE

結(jié)果如上圖;5?編寫(xiě)程序3:畫(huà)出流程圖,并編程計(jì)算S=1+2X3+3X4+4X5+……+NX(N+1),直到N大于200為止,并將結(jié)果由屏幕上顯示出來(lái)。將編寫(xiě)好的程序輸入、匯編、連接并運(yùn)行。流程圖:開(kāi)始循環(huán)初始化:s=l,BX=2N循環(huán)體:MOVAX,BXINCBXMULBXADDS,AX結(jié)束源程序:DATASEGMENTSDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVS,1MOVBX,2BEGIN:CMPBX,200JANEXTMOVAX,BXINCBXMULBXADDS,AXJMPBEGINNEXT:MOVAH,4CHINT21HCODEENDSENDSTART

注:篇幅不夠,可以另外附頁(yè)。計(jì)算機(jī)組成與匯編語(yǔ)言實(shí)驗(yàn)報(bào)告姓名xxxx學(xué)號(hào)2011004xxxxx計(jì)分專(zhuān)業(yè)軟件工程班級(jí)xxxxx實(shí)驗(yàn)日期2012年12月1日實(shí)驗(yàn)名稱(chēng)實(shí)驗(yàn)八語(yǔ)言子程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康?學(xué)習(xí)子程序的定義和調(diào)用方法,加深對(duì)子程序的理解。?熟悉子程序設(shè)計(jì)、編寫(xiě)及調(diào)試方法。?掌握子程序、嵌套子程序、遞歸子程序的結(jié)構(gòu)。實(shí)驗(yàn)內(nèi)容1?調(diào)試程序1:編寫(xiě)一個(gè)有主程序和子程序結(jié)構(gòu)的程序模塊,要求子程序在N字節(jié)數(shù)組中統(tǒng)計(jì)指定字符CHAR出現(xiàn)的次數(shù)。主程序則要求從鍵盤(pán)接收一串字符以建立字節(jié)數(shù)組TABLE(按Enter鍵結(jié)束),從鍵盤(pán)輸入字符CHAR,并顯示它在TABLE數(shù)組中出現(xiàn)的次數(shù),直到輸入回車(chē)符退出程序。(假設(shè)出現(xiàn)次數(shù)<15,可以用一位十六進(jìn)制數(shù)顯示出來(lái)。)源程序如下:DSEGSEGMENTTABLEDB255DPU(?)NDW255CHARDB?CRLFDB0DH,0AH,'$'DSEGENDSSTACKSEGMENTDW100DPU(?)STACKENDSCSEGSEGMENTMAINPROCFARASSUMECS:CSEG,DS:DSEG,SS:STACK

START:PUSHDS;設(shè)置返回DOSSUBAX,AXPUSHAXMOVAX,DSEGMOVDS,AX;給。3賦值BEGIN:MOVBX,0MOVCX,255;最多輸入255個(gè)字符INPUT:MOVAH,1;從鍵盤(pán)接收一個(gè)字符的DOS功能調(diào)用INT21HCMPAL,0DH;輸入回車(chē)符結(jié)束輸入JZIN_NMOVTABLE[BX],ALINCBXLOOPINPUTIN_N:MOVN,BXCALLDISP_CRLFIN_CHAR:MOVAH,1;從鍵盤(pán)接收一個(gè)字符并回顯得DOS功能調(diào)用INT21HCMPAL,0DH;輸入回車(chē)符結(jié)束JZEXITMOVCHAR,ALMOVDL,':';顯示“:”,在字符CHAR(輸入時(shí)回顯)的后面MOVAH,2;顯示個(gè)字符INT21HMOVAL,CHARMOVCX,N;TABLE數(shù)組中的字符個(gè)數(shù)送CXLEABX,TABLECALLSEARCH;調(diào)搜索字符子程序ANDDL,0FH

ADDDL,30HCMPDL,39HJBENEXT1;是0--9ADDDL,07H;是A--FNEXT1:MOVAH,2;顯示個(gè)字符INT21HCALLDISP_CRLFJMPSHORTIN_CHAREXIT:RETMAINENDP;子程序名:SEARCH;功能:統(tǒng)計(jì)指定字符在字符串中出現(xiàn)的次數(shù);入口參數(shù):BX=字符串地址;CX=字符串長(zhǎng)度;AL=指定字符ASCII碼;出口參數(shù):DL=字符出現(xiàn)次數(shù)SEARCHPROCNEARMOVDL,0ROTATE:CMPAL,[BX]JNZNEXT2INCDL;搜索到字符,則出現(xiàn)次數(shù)+1NEXT2:INCBXLOOPROTATERETSEARCHENDP;SEARCH子程序結(jié)束;子程序名:DISP_CRLF;功能:顯示回車(chē)換行符DISP_CRLFPROCNEARLEADX,CRLFMOVAH,09HINT21H

RETDISP_CRLFENDPCSEGENDSENDSTART運(yùn)行結(jié)果:□Jx0丄3479GF1357BC0000000?00000u0Bd0丄22222222222222214=FFFFFFFFFFFFFFFD3U333033333333333d□Jx0丄3479GF1357BC0000000?00000u0Bd0丄22222222222222214=FFFFFFFFFFFFFFFD3U333033333333333d3^2-丄丄idmmm1丄丄-id-丄IE2EC050B0D4138ED8BE0SO0B9FFO0B401CB213C0D74070807000343E2F1BY丄EFFB0FS00000000wHP3gbsuuuuutpucoU0UUUOOOOONMZONOOPSFNHNHN1GJN1LH00GODSA*AH,i3D4DS,AXGK,00FFAH.0121AL^SD001E[DK*0OB0]BX&0&F[00FF1,HX00—00000Q0000000000Programtfipminatednormalise-d13d4s0,£13D4:0S003132330000096000-00000009609000OS123說(shuō)明:如圖輸入123后,顯示出1232、編寫(xiě)8_1_1源程序如下:DATASEGMENTARRAYDB34H,26H,0FAH,0A5H,&72H,65H,0C1H,0FEH,70HCOUNTEQU$-ARRAYRESULTDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETARRAY;BX-數(shù)組的偏移地址MOVCX,COUNT;CX-數(shù)組的兀素個(gè)數(shù)CALLCHECKSUM;調(diào)用求和過(guò)程MOVRESULT,AL;處理出口參數(shù)MOVAH,4CH

INT21H;子程序CHECKSUM;功能:求數(shù)組元素的校驗(yàn)和;入口:BX-數(shù)組元素的偏移地址;出口:校驗(yàn)和運(yùn)算結(jié)果CHECKSUMPROCXORAL,AL;累加器清0SUM:ADDAL,[BX];求和INCBX;指向下一個(gè)字節(jié)LOOPSUM;循環(huán)求和RETCHECKSUMENDPCODEENDSENDSTART運(yùn)行結(jié)果:l_:,1Ce\¥IWDOVS\s,ystese一debugtes-t12=exeCs\iTLa8n>dcbucrtestlU.exs13D5:90OQB8D413MOU13D5=90038EDSMOU13D5:9095DD0O00MOU19DSs0009B9Qfi00MOU13D5I3D513D513D513D513D5:90OQB8D413MOU13D5=90038EDSMOU13D5:9095DD0O00MOU19DSs0009B9Qfi00MOU13D5I3D513D513D513D5nSBE00110013001513D5=0019ODE13D5=801A0D513D5i3D5kd13A2BA0HB44CCD2132C0020743E2FBPl00000000001C001D001F丨3D4:0Q0a3426FH號(hào)-13d5;0H5LF2LUUTRDCOTDD7-hoohodnoepdCMMIKAILRnn8FIX-13D4DS.AHDH.S060CX,000(1l,fiLAH,4G21AUALflULBX1BX0017[EH^SI],rtLCl-FE7000000130000004&Fe-.p.-Pi*ogranteminatcdnomall^-d13^14:?^13D4:800Q3426FflA5087265Cl-FE700700009Q00004說(shuō)■?.fe?■?■?結(jié)果說(shuō)明(校驗(yàn)和):07H3?編寫(xiě)8_1_2源程序如下:DATASEGMENTARRAYDB34H,26H,0FAH,0A5H,&72H,65H,OC1H,OFEH,7OHCOUNTEQU$-ARRAYLENDB

AADW?RESULTDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVLEN,BYTEPTRCOUNT;LEN-數(shù)組的兀素個(gè)數(shù)LEABX,ARRAY;AA-數(shù)組的偏移地址MOVAA,BXCALLCHECKSUM;調(diào)用求和過(guò)程MOVAH,4CHINT21H;子程序CHECKSUM;功能:求數(shù)組兀素的校驗(yàn)和;入口:數(shù)組的偏移地址及數(shù)組兀素個(gè)數(shù)存放于變量AA和LEN中;出口:校驗(yàn)和運(yùn)算結(jié)果CHECKSUMPROCPUSHAX保護(hù)現(xiàn)場(chǎng)PUSHBXPUSHCXXORAL,AL;累加器清0MOVBX,AA;BX-數(shù)組的偏移地址MOVCX,WORDPTRLEN;CX-數(shù)組的兀素個(gè)數(shù)SUM:ADDAL,[BX];求和INCBX;指向下一個(gè)字節(jié)LOOPSUM;循環(huán)求和MOVRESULT,AL;保存校驗(yàn)和POPCX;恢復(fù)現(xiàn)場(chǎng)

POPBXPOPRETAXCHECKSUMENDPCODEENDSENDSTART運(yùn)行結(jié)果:CsXTUTOOWSYE-yste?32\.cMd=esePOPBXPOPRETAXCHECKSUMENDPCODEENDSENDSTART運(yùn)行結(jié)果:CsXTUTOOWSYE-yste?32\.cMd=ese一debugtest13&exe\maeiTi>debii<yteetll=exe13D5=8O80B8D413MOU13D5=90038EDSMOUl3D5:000566060^000^MOU13D5s000ft8D1E0O0OLEA13D5:0Q8ES91EQBQ0MOU13D5=0012E8B40ilCALL13D5:0015B44CMOU£305=001?C?21INT13D5:001950PUSHl3D5:d0in53PUSH13D5=001B51PUSH13D5:?W1C3^CUXOH13D5;^@01EMOUPd13d4;0,f13D4=900O3426FAASSO7265Rg■i3d5:0AX.13D4pg.fl*DVTEPTRCB03AK0ABX,[0S00][QM0D]^BX0WL9ftH-4G21AKDMCXAL^HLBX,Cl-FE700000000000004&.?.Lt??.JiPi'og'i'anitei'ninatednomall^kd13d4:0,£13D4:800Q3426FflA5087265Cl-FE70&d00890700OQ4說(shuō)■?■▼£?■:?結(jié)果說(shuō)明:數(shù)組長(zhǎng)度OAH,數(shù)組偏移地址:00,數(shù)組校驗(yàn)和:07H4?編寫(xiě)8_1_3源程序如下:STACKSEGMENTSTACKDB1OOSTACKENDSDATASEGMENTARRAYDBCOUNTEQURESULTDBDATAENDSCODESEGMENTDUP(O)34H,26H,0FAH,0A5H,&72H,65H,OC1H,OFEH,7OH$—ARRAYASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA

MOVDS,AXMOVAX,OFFSETARRAY;取AX數(shù)組的偏移地址PUSHAX;壓入數(shù)組的偏移地址MOVAX,COUNT;取人乂數(shù)組的兀素個(gè)數(shù)PUSHAX;壓入數(shù)組的兀素個(gè)數(shù)CALLCHECKSUM;調(diào)用求和過(guò)程ADDSP,4;主程序平衡堆棧MOVRESULT,AL;保存校驗(yàn)和MOVAH,4CHINT21H;子程序CHECKSUM;功能:求數(shù)組兀素的校驗(yàn)和;入口:數(shù)組首地址及數(shù)組兀素個(gè)數(shù)存放于堆棧中;出口:校驗(yàn)和運(yùn)算結(jié)果CHECKSUMPROCPUSHBP;保護(hù)使用的BP寄存器PUSHBX;保護(hù)使用的BX寄存器PUSHCX;保護(hù)使用的CX寄存器MOVBP,SP;BP指向當(dāng)前棧頂,用于取出入口參數(shù)MOVBX,[BP+10];BX-SS:[BP+1O](數(shù)組的偏移地址)MOVCX,[BP+8];CX-SS:[BP+8](數(shù)組的兀素個(gè)數(shù))XORAL,AL;累加器清0SUM:ADDAL,[BX];求和:AL-AL+DS:[BX]INCBX;指向下一個(gè)字節(jié)LOOPSUM;循環(huán)求和POPCX;恢復(fù)寄存器POPBXPOPBPRET"口|x|13DC13DC13DC13DC13DC13DC13DC13DC13DC13DC13DC90UU0003BBD5

0000

胭酣00BCHBBD8010"口|x|13DC13DC13DC13DC13DC13DC13DC13DC13DC13DC13DC90UU0003BBD5

0000

胭酣00BCHBBD8010H013901G-&Q1QB8DB13OEDO50B8BABH50E80A0HO3C404A20AQBB44CC1J2113DG13DC13DC13DC00丄H0S1B00丄G301DE531b5G5e二靦丄F8B5E0APd13db:0.fU.3DB:90O03426卜g-13dcs0FHMOU

MOU

nouPUSHHOUrusiiCALLADDMOUMOUINTPUSHPUSHPUSHMOUMOU087265DS,rtHAX.0000AKAX.HBHnAH0G1ASP,+04Hll/C21BFBXCKupopBX'EBP+0A]Cl-FE700&90090000904疏.?.re■■卩■?CHECKSUMENDPCODEENDSENDSTART運(yùn)行結(jié)果:“C:\TINDOT3\systeB32\od.exe一debugtest14.exeProgrrantcrniratcdnomallt/-A13db:0,f13DD:30O0342tFfiAS0072G5Cl-FE700?30000000&0業(yè)臉■?■▼&?■!)■?結(jié)果說(shuō)明:07H5.將編寫(xiě)好的程序2輸入、匯編、連接并運(yùn)行。源程序如下:DATASEGMENTTABDB0,1,4,9,16,25,36,49SUMDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEABX,TAB;取TAB首地址MOVCL,5;置CL=5(循環(huán)次數(shù))XORDX,DX;將DX清零LP:MOVAL,CL;查表XLATADDDL,AL;累加求和

ADCDH,0LOOPLP;循環(huán)跳轉(zhuǎn)MOVSUM,DX;所求累加和轉(zhuǎn)存到變量SUM中MOVAH,4CH;返回DOS系統(tǒng)INT21HCODEENDSENDSTART運(yùn)行結(jié)果:Programtevninatednorm且-d13d4:0.f13D4=9000000184091019±3D5:9000B8D412MOUfiX,12B413D5:90038ED8MOUDS,AX聞弓泗眄SME0I3(3I3LEAbx,rocina]13D5=90O9B1B5MOUCL,05T3D5:9130633D2XOKDX.DK13D5=90ODenciMOUnL,CL13D5=900FD7XLAT13D5=0010Q2D0ADDDL“AL13D5=901280D60OADCDH,S013D5:iai315E2FfcLOOP0BBD13D5=001?O9160C

溫馨提示

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

評(píng)論

0/150

提交評(píng)論