版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
題目名稱實(shí)驗(yàn)一匯編語(yǔ)言程序結(jié)構(gòu)題目關(guān)鍵字源程序結(jié)構(gòu)debug題目錄入時(shí)間題目?jī)?nèi)容一、實(shí)驗(yàn)?zāi)康?.掌握匯編語(yǔ)言程序上機(jī)過程。2.掌握匯編語(yǔ)言結(jié)構(gòu)。3.了解匯編程序、連接程序、DOS系統(tǒng)裝入和返回功能。4.掌握用DEBUG調(diào)試匯編語(yǔ)言程序的方法二、實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:(1)逆序輸出字符串“BASEDADDRESSING”。(2)從鍵盤上輸入2個(gè)一位的正數(shù),求出它們的和(假設(shè)和不超過1位)。(3)試編寫一段程序,要求在長(zhǎng)度為100H字節(jié)的數(shù)組中,找出大于42H的無(wú)符號(hào)數(shù)的個(gè)數(shù)并存入字單元UP中;找出小于42H的無(wú)符號(hào)數(shù)的個(gè)數(shù)并存入字單元DOWN中。2.在DEBUG下查看程序執(zhí)行的過程,以及變量值的變化。3.演示程序運(yùn)行結(jié)果,請(qǐng)指導(dǎo)教師檢查。思考1.匯編語(yǔ)言程序中語(yǔ)句END后的標(biāo)號(hào)作用是什么?2.采用標(biāo)準(zhǔn)序結(jié)構(gòu)編制源程序,用ret結(jié)束程序運(yùn)行返回操作系統(tǒng)時(shí),可否將語(yǔ)句mainprocfar中的far屬性去掉,為什么?3.一個(gè)段的大小為多少?一定是64KB嗎?如何在DEBUG下查看程序在內(nèi)存的存放情況?提交內(nèi)容將各個(gè)源程序代碼、exe文件壓縮為RAR后提交到作業(yè)系統(tǒng)。題目創(chuàng)建人題目注釋1.1.asmDATASSEGMENTStringdb"BASEDADDRESSING"countdw$-StringDATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovcx,count;循環(huán)次數(shù)leasi,count-1;將最后一個(gè)字符‘G’的地址給siL:movah,2movdl,[si]decsiint21hloopLMOVAH,4CHINT21HCODESENDSENDSTART1.2.asmDATASSEGMENTxdb"x=$"ydb"y=$"zdb"x+y=$"DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovah,9;顯示"x="leadx,xint21hmovah,1;輸入Xint21hsubal,30hmovcl,al;將X放在CLmovah,9;顯示"y="leadx,yint21hmovah,1;輸入Yint21hsubal,30haddcl,al;兩數(shù)字相加movah,9;顯示"z="leadx,zint21hmovah,2;顯示結(jié)果movdl,cladddl,30hint21hMOVAH,4CHINT21HCODESENDSENDSTART1.3.asmDATASSEGMENTarraydb128dup(41h,43h)updw0downdw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadi,arraymovcx,256L:moval,[di]cmpal,42hjlL1jaL2L1:incdownjmpL3L2:incupjmpL3L3:incdiloopLMOVAH,4CHINT21HCODESENDSENDSTART題目名稱實(shí)驗(yàn)二程序結(jié)構(gòu)與簡(jiǎn)單程序設(shè)計(jì)題目關(guān)鍵字簡(jiǎn)單程序設(shè)計(jì)題目錄入時(shí)2013-4-122:45:55間實(shí)驗(yàn)?zāi)康?.掌握匯編語(yǔ)言源程序結(jié)構(gòu)。2.掌握匯編語(yǔ)言調(diào)試方法。題目?jī)?nèi)容實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:試編寫一段程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來(lái)。編寫程序,從鍵盤接收一個(gè)小寫字母,然后找出它的前導(dǎo)字母和后續(xù)字母,再按順序顯示這三個(gè)字符。試編寫一段程序,要求比較兩個(gè)字符串string1和string2所含字符是否相等,如相等則顯示“MATCH”,若不相同則顯示“NOMATCH”.編寫程序,將一個(gè)包含有20個(gè)數(shù)據(jù)的數(shù)組M分成2個(gè)數(shù)組:正數(shù)數(shù)組P和負(fù)數(shù)數(shù)組N,并分別把這兩個(gè)數(shù)組中數(shù)據(jù)的個(gè)數(shù)顯示出來(lái)。2.在DEBUG下查看程序執(zhí)行的過程,以及變量值的變化。3.演示程序運(yùn)行結(jié)果,請(qǐng)指導(dǎo)教師檢查。思考對(duì)輸入的非字母字符如何處理?字母“a”和“z”邊界字符的處理方法是什么?顯示結(jié)果為多位數(shù)的時(shí)候如何輸出?提交內(nèi)容將各個(gè)源程序代碼、exe文件,思考題的WORD文檔壓縮為RAR后提交到作業(yè)系統(tǒng)。題目創(chuàng)建人題目注釋2.1.asmDATASSEGMENTcrlfdb0ah,0dh,'$'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovah,1;輸入數(shù)據(jù)會(huì)ALint21hpushax;將AX存進(jìn)棧里leadx,crlf;換行movah,9int21hpopdx;棧里數(shù)據(jù)放進(jìn)DX,即將原先AX放進(jìn)DXsubdl,20h;小寫變大寫要減去20hmovah,2;輸出int21hMOVAH,4CHINT21HCODESENDSENDSTART2.2.asmDATASSEGMENTStringdb'zabcdefghijklmnopqrstuvwxyza'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadi,Stringmovah,1;輸入字母int21hL:incdi;先DI自加1,第一次就是‘a(chǎn)’的地址,不是‘z’cmpal,[di];直到找到字母和輸入的相匹配jnzLdecdi;推前成為前端字母的地址movcx,3;循環(huán)次數(shù)3L2:movdl,[di]incdimovah,2int21hloopL2MOVAH,4CHINT21HCODESENDSENDSTART2.3.asmDATASSEGMENTString1db"thisisaprogram"count1dw$-String1String2db"thisisaprogram"count2dw$-String2answer1db'match','$'answer2db'nomatch','$'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovax,count1movbx,count2cmpax,bx;比較兩個(gè)字符串的長(zhǎng)度,如果不等就是不匹配jnznextmovcx,count1;字符串長(zhǎng)度leasi,string1leadi,string2L:moval,[si]cmpal,[di];比較兩個(gè)字符串的字符,如果不等就跳jnznextincsiincdiloopLleadx,answer1;能到這里說(shuō)明都匹配movah,9int21hjmpfinally;跳去finally,避免順序執(zhí)行了nextnext:;顯示不匹配leadx,answer2movah,9int21hfinally:MOVAH,4CHINT21HCODESENDSENDSTART2.4.asmDATASSEGMENTMdb5dup(-1,1,2,3)Pdw0Ndw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleasi,Mmovcx,20;循環(huán)次數(shù)L:moval,[si]cmpal,0;和0比較判斷正負(fù)jlL1jgL2L1:incNjmpL3L2:incPjmpL3L3:incsiloopLmovax,P;輸出Pmovbl,10;設(shè)置除數(shù)10divblmovbh,ah;將ah(余數(shù)放在bh保留)movdl,al;將商顯示adddl,30hmovah,2int21hmovdl,bh;將余數(shù)顯示adddl,30hmovah,2int21hmovax,N;輸出Nmovbl,10divblmovbh,ahmovdl,aladddl,30hmovah,2int21hmovdl,bhadddl,30hmovah,2int21hMOVAH,4CHINT21HCODESENDSENDSTART題目名稱實(shí)驗(yàn)三分支程序設(shè)計(jì)題目關(guān)鍵字分支結(jié)構(gòu)題目錄入時(shí)2013-4-1420:14:57間題目?jī)?nèi)容一、實(shí)驗(yàn)?zāi)康恼莆諈R編語(yǔ)言源程序結(jié)構(gòu)。掌握匯編語(yǔ)言分支結(jié)構(gòu)程序設(shè)計(jì)方法。二、實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:試編寫一段程序,求出首地址為DATA的100D字?jǐn)?shù)組中的最小偶數(shù),并把它存放在AX中。編寫一段程序,從鍵盤接收一個(gè)四位的十六進(jìn)制數(shù),并在終端上顯示與它等值的二進(jìn)制數(shù)。鍵盤上輸入一系列以$為結(jié)束符的字符串,然后對(duì)其中的非數(shù)字字符計(jì)數(shù),并顯示計(jì)數(shù)結(jié)果。有一個(gè)首地址為mem的100個(gè)字的數(shù)組,試編制程序刪除數(shù)組中所有為零的項(xiàng),并將后續(xù)項(xiàng)向前壓縮,最后將數(shù)組的剩余部分補(bǔ)上零。2.在DEBUG下查看程序執(zhí)行的過程,以及變量值的變化。3.演示程序運(yùn)行結(jié)果,請(qǐng)指導(dǎo)教師檢查。三、思考1.求極值時(shí)程序初始化應(yīng)該注意什么?如何從鍵盤上輸入多位數(shù)?第(4)小題有多少種做法?四、提交內(nèi)容將各個(gè)源程序代碼、exe文件以及思考題壓縮為RAR后提交到作業(yè)系統(tǒng)。提交時(shí)請(qǐng)?zhí)顚懽栽u(píng)內(nèi)容。題目創(chuàng)建人題目注釋3.1.asmDATASSEGMENTDATAdw1dup(1,2,-1,4,-2,-6)countdw($-DATA)/2DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovcx,countleasi,DATA-2L1:;將第一個(gè)偶數(shù)存在AXaddsi,2movax,[si]deccxtestal,01hjnzL1L2:;找到另外一個(gè)偶數(shù)addsi,2movbx,[si]cmpcx,0jzL4deccxtestbl,01hjnzL2cmpax,bx;比較兩個(gè)偶數(shù),如果ax>bx那么跳到L3jgL3jmpL2L3:movax,bxjmpL2L4:MOVAH,4CHINT21HCODESENDSENDSTART3.2.asmDATASSEGMENTNUMdw0crlfdb0dh,0ah,'$'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovdx,0movcx,4L:movah,1int21hcmpal,40hjgL1jlL2L1:subal,07h;大寫字母多減7L2:subal,30h;變成實(shí)際數(shù)字pushax;原來(lái)數(shù)字*16+新接受數(shù)字movax,NUMmovbx,16mulbxpopbxadcal,blmovNUM,axloopL;循環(huán)4次leadx,crlfmovah,9int21hmovcx,16movbx,NUML3:movdl,31hsalbx,1;左移1位,改變CFjcL4subdl,1;CF為0,所以DL減去1,變成0L4:movah,2int21hloopL3MOVAH,4CHINT21HCODESENDSENDSTART3.3.asmDATASSEGMENTStringdb128,?,128dup('$')crlfdb0dh,0ah,24hcountdw0numdw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadx,String;吸收字符串movah,0ahint21hleadx,crlf;換行movah,9int21hleasi,String+1;cx存放著字符串個(gè)數(shù)movcl,[si]movch,0leadi,String+2;從實(shí)際字符串開始L1:moval,[di]incdicmpal,30hjlL2cmpal,39hjgL2decnum;如果是數(shù)字,先減num后加num,將其抵消L2:incnumloopL1movcx,0movax,numL3:;余數(shù)放棧,檢測(cè)商是否為0,為0就退出movbl,10divblpushaxinccx;記錄余數(shù)個(gè)數(shù)movah,0cmpal,0jnzL3L4:;將余數(shù)輸出popdxmovdl,dhadddl,30hmovah,2int21hloopL4MOVAH,4CHINT21HCODESENDSENDSTART3.4.asmDATASSEGMENTmemdw0,1,2,0,0,3,2,0,5,0,0,1countdw($-mem)/2DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadi,mem-2;先減2再恢復(fù)movcx,countL:;找到0元素cmpcx,0jznextadddi,2movax,[di]deccxcmpax,0jnzLmovsi,dipushcxL2:;找到非0元素cmpcx,0jznextaddsi,2movax,[si]deccxcmpax,0jzL2mov[di],ax;復(fù)制過去movwordptr[si],0;復(fù)制后自己變0popcxjmpLnext:MOVAH,4CHINT21HCODESENDSENDSTART題目名稱實(shí)驗(yàn)四循環(huán)程序設(shè)計(jì)1題目關(guān)鍵字循環(huán)結(jié)構(gòu)程序題目錄入時(shí)2013-4-2217:28:16間實(shí)驗(yàn)?zāi)康?.掌握匯編語(yǔ)言源程序結(jié)構(gòu)。2.掌握匯編語(yǔ)言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法。實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:從鍵盤上輸入一串字符(用回車鍵結(jié)束,使用10號(hào)功能調(diào)用。)放在STRING中,試編制一個(gè)程序測(cè)試字符串中是否存在數(shù)字。如有,則把CL的第5位置1,否則將該位置置0。在首地址為DATA的字?jǐn)?shù)組中,存放了100H個(gè)16位補(bǔ)碼數(shù),試編寫一個(gè)程序,求出它們的平均值放在AX寄存器中;并求出數(shù)組中有多少個(gè)數(shù)小于此平均值,將結(jié)果放在BX寄存器中。已知數(shù)組A包含15個(gè)互不相等的整數(shù),數(shù)組B包含20個(gè)互不相等的整數(shù)。試編制一個(gè)程序,把既在A中又在B中出現(xiàn)的整數(shù)存放題目?jī)?nèi)容于數(shù)組C1中。簡(jiǎn)化的歌德巴赫猜想:任何一個(gè)大于6的偶數(shù)均可以表示為兩個(gè)素?cái)?shù)之和?,F(xiàn)從鍵盤輸入一個(gè)0~65535之間的無(wú)符號(hào)整數(shù),試驗(yàn)證歌德巴赫猜想。如輸入數(shù)12,輸出:12=5+7如輸入數(shù)20,輸出:20=3+1720=7+13如輸入數(shù)7,輸出:Mustbeeven如輸入數(shù)3,輸出:Mustbegreaterthanorequalto62.演示程序運(yùn)行結(jié)果,請(qǐng)指導(dǎo)教師檢查。三、思考從鍵盤上輸入一串字符時(shí),數(shù)據(jù)緩沖區(qū)如何定義?題目創(chuàng)建人題目注釋4.1.asmDATASSEGMENTStringdb128,?,128dup('$')DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadx,Stringmovah,0ahint21hleasi,String+1;字符串個(gè)數(shù)地址movcl,[si]movch,0incsi;第一個(gè)字符地址L:moval,[si]cmpal,30hjlL1cmpal,39hjgL1orcl,00001000b;CL第五位置1jmpnextL1:incsiloopLnext:MOVAH,4CHINT21HCODESENDSENDSTART4.2.asmDATASSEGMENTDATAdw1,2,3,4,5,6,7,8,9,10countdw($-DATA)/2DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovdx,0movax,0movcx,countleasi,DATAL:;計(jì)算總數(shù)movbx,[si]addax,bxaddsi,2loopLmovbx,count;求平均值divbxleasi,DATAmovcx,count;設(shè)置循環(huán)個(gè)數(shù)movbx,0;初始化L2:movdx,[si]cmpdx,axjnlL3incbx;bx++L3:addsi,2loopL2MOVAH,4CHINT21HCODESENDSENDSTART4.3.asmDATASSEGMENTdb1,3,5,7,9,11,13,15,17,19,21,23,25,27,29count1dw$-Adb1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20count2dw$-BC1db15dup(?)DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadi,C1leasi,Amovcx,count1movbx,0L:;在L中取A的一個(gè)元素pushcx;保存CXmoval,A[bx]incbxmovcx,count2leasi,BL2:;在B中找有否相同的元素movdl,[si]incsicmpal,dljzL3loopL2jmpL4L3:;找到就賦給C1mov[di],dlincdiL4:popcxloopLMOVAH,4CHINT21HCODESENDSENDSTART4.4.asm;這道題目不難,關(guān)鍵是很煩;分幾步走。1.取多位十進(jìn)制數(shù)2.判斷質(zhì)數(shù)3.顯示十進(jìn)制數(shù)4.將每個(gè)結(jié)果循環(huán)輸出;有幾點(diǎn)要注意;1.因?yàn)閿?shù)可以用16位,所以判斷大小記得JA,JB,而不是JG,JL;2.用BX作乘法,除法,要留意住DX;3.看清楚哪個(gè)變量會(huì)受到影響,比如AX經(jīng)常被使用,容易數(shù)據(jù)丟失;DATASSEGMENTsentence1db"Mustbeeven$"sentence2db"Mustbegreaterthanorequalto6$"crlfdb0dh,0ah,'$'numdw0tempdw0temp2dw0keydw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXL:;從鍵盤取得數(shù)字,存進(jìn)nummovah,1int21hcmpal,0dhjzL2subal,30hmovcl,almovch,0movax,nummovbx,10mulbxaddax,cxmovnum,axjmpLL2:;換行l(wèi)eadx,crlfmovah,9int21hmovax,numcmpax,6jberror1sarax,1;取第一位到CF,奇數(shù)第一位必為1jcerror2jmpnexterror1:;必須是偶數(shù)leadx,sentence2movah,9int21hmovah,4chint21herror2:;大于等于6才行l(wèi)eadx,sentence1movah,9int21hmovah,4chint21hnext:movcx,numsubcx,3movbx,1ba:incbxmovax,numsubax,bxmovtemp,axcallqiuzhishu;驗(yàn)證是否質(zhì)數(shù)cmpkey,1;key=1表示是合數(shù)jzfinallymovtemp2,axmovax,numsubax,tempxchgax,tempcallqiuzhishu;驗(yàn)證另一個(gè)是否質(zhì)數(shù)cmpkey,1jzfinallymovax,num;下面這一段代碼callxianshi;是為了顯示movah,2;sum=x+ymovdl,'=';這種格式int21h;將前面求到的總數(shù)movax,temp2;和兩個(gè)質(zhì)數(shù)分別顯示到屏幕pushtempcallxianshimovdl,'+'movah,2int21hpopaxcallxianshileadx,crlf;換行movah,9int21hfinally:loopbamovah,4chint21hqiuzhishu:;這個(gè)子程序都是用來(lái)求質(zhì)數(shù)的pushaxpushbxpushcxpushdxmovbx,2movcx,tempsubcx,2next0:movax,tempcmpax,3jbnext2;2是質(zhì)數(shù)movdx,0divbxincbxcmpdx,0jznext1loopnext0jmpnext2next1:movkey,1jmpnext3next2:movkey,0next3:popdxpopcxpopbxpopaxretxianshi:;顯示多位十進(jìn)制數(shù)字pushaxpushbxpushcxpushdxmovdx,0movcx,0movbx,10L3:divbxpushdxmovdx,0inccxcmpax,0jnzL3L4:popdxadddl,30hmovah,2int21hloopL4popdxpopcxpopbxpopaxretCODESENDSENDSTART題目名稱實(shí)驗(yàn)五循環(huán)程序設(shè)計(jì)2題目關(guān)鍵字循環(huán)結(jié)構(gòu)題目錄入時(shí)2013-4-2623:17:07間題目?jī)?nèi)容實(shí)驗(yàn)?zāi)康?.掌握匯編語(yǔ)言源程序結(jié)構(gòu)。2.掌握匯編語(yǔ)言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法。實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:設(shè)在A、B和D字單元中分別存放著三個(gè)數(shù)。若三個(gè)數(shù)都不是0,則求出三個(gè)數(shù)的和并存放在S單元中;若其中有一個(gè)數(shù)為0,則把其他兩個(gè)單元也清零。請(qǐng)編寫此程序。試編寫一個(gè)程序,要求比較數(shù)組ARRAY中的三個(gè)16位補(bǔ)碼數(shù),并根據(jù)比較結(jié)果在終端上顯示如下信息:如果三個(gè)數(shù)都不相等則顯示0;如果三個(gè)數(shù)有兩個(gè)相等則顯示1;如果三個(gè)數(shù)都相等則顯示2。(3)根據(jù)歐幾里德輾轉(zhuǎn)相除法求兩個(gè)正整數(shù)M、N的最大公約數(shù),步驟為:①求M/N的余數(shù)R;②如果R=0,則N為最大公約數(shù),退出循環(huán);③用N更新M的值,用R更新N的值;④重復(fù)①~③步。(4)Link指向一個(gè)字線性表,其中的首單元保存線性表的長(zhǎng)度,編一個(gè)程序,將該線性表中內(nèi)容為0FFFFH的項(xiàng)刪除。2.演示程序運(yùn)行結(jié)果,請(qǐng)指導(dǎo)教師檢查。四、提交內(nèi)容將各個(gè)源程序代碼、exe文件壓縮為RAR后提交到作業(yè)系統(tǒng)。在“自評(píng)內(nèi)容”欄中寫出完成作業(yè)的情況以及在做作業(yè)過程中出現(xiàn)的問題和解決的方法。題目創(chuàng)建人題目注釋5.1.asmDATASSEGMENTdw2dw1Ddw2Sdw?DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleasi,Amovbx,0movcx,3L:movax,[si]cmpax,0jzaooaddbx,axaddsi,2loopLjmpaoo2aoo:;三個(gè)單元置0movax,0pushaxpushaxpushaxpopApopBpopDaoo2:;三個(gè)數(shù)之和movdl,bladddl,30hmovah,2int21hMOVAH,4CHINT21HCODESENDSENDSTART5.2.asmDATASSEGMENTarraydw1,-1,-1DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovcx,0;從0開始計(jì)數(shù),遇到相等就加1leasi,arrayaddsi,2movax,[si];記住拿第二個(gè)數(shù),分別和第一個(gè)和第三個(gè)比較movbx,[si-2]cmpax,bxjnzL1inccxL1:movbx,[si+2]cmpax,bxjnzL2inccxL2:movdl,cladddl,30hmovah,2int21hMOVAH,4CHINT21HCODESENDSENDSTART5.3.asmDATASSEGMENTtemp1dw0temp2dw0crlfdb0ah,0dh,'$'DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXL:;從鍵盤取得數(shù)字,存進(jìn)temp1movah,1int21hcmpal,0dhjzL2subal,30hmovcl,almovch,0movax,temp1movbx,10mulbxaddax,cxmovtemp1,axjmpLL2:leadx,crlfmovah,9int21hL3:;從鍵盤取得數(shù)字,存進(jìn)temp2movah,1int21hcmpal,0dhjzL4subal,30hmovcl,almovch,0movax,temp2movbx,10mulbxaddax,cxmovtemp2,axjmpL3L4:movdx,0movax,temp1movbx,temp2continue:divbxcmpdx,0jznextmovax,bxmovbx,dxmovdx,0jmpcontinuenext:leadx,crlf;換行movah,9int21hmovax,bxcallxianshiMOVAH,4CHINT21Hxianshi:;顯示多位十進(jìn)制數(shù)字pushaxpushbxpushcxpushdxmovdx,0movcx,0movbx,10A1:divbxpushdxmovdx,0inccxcmpax,0jnzA1A2:popdxadddl,30hmovah,2int21hloopL2popdxpopcxpopbxpopaxretCODESENDSENDSTART5.4.asmDATASSEGMENTLinkdw9,3,0ffffh,2,1,0ffffh,1,2,0ffffhfinialdw$DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleasi,Link;首地址addsi,2L2:movax,[si]cmpax,0ffffhjnzL3jzL41L3:addsi,2jmpL2L41:movdi,siL42:;找到0FFFFH項(xiàng),和不是這個(gè)項(xiàng)數(shù)交換cmpdi,finialjznextmovbx,[di]cmpbx,0ffffhjzL5mov[si],bxmovbx,0ffffhmov[di],bxjmpL3L5:adddi,2jmpL42next:MOVAH,4CHINT21HCODESENDSENDSTART題目名稱實(shí)驗(yàn)六結(jié)構(gòu)化程序設(shè)計(jì)題目關(guān)鍵字結(jié)構(gòu)化程序簡(jiǎn)化段結(jié)構(gòu)題目錄入時(shí)2013-5-321:42:56間題目?jī)?nèi)容實(shí)驗(yàn)?zāi)康?.掌握匯編語(yǔ)言簡(jiǎn)化段結(jié)構(gòu)。2.掌握匯編語(yǔ)言綜合程序設(shè)計(jì)方法。實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:從鍵盤輸入一系列字符(以回車符結(jié)束),并按字母、數(shù)字及其他字符分類計(jì)數(shù),最后顯示這三類的計(jì)數(shù)結(jié)果(用簡(jiǎn)化段源程序結(jié)構(gòu))。已定義了兩個(gè)整數(shù)變量A和B,試編寫程序完成下列功能(使用簡(jiǎn)化段源程序格式):若兩個(gè)數(shù)中有一個(gè)是奇數(shù),則將奇數(shù)存入A中,偶數(shù)存入B中;若兩個(gè)數(shù)均為奇數(shù),則將兩數(shù)均加1后存回原變量;若兩個(gè)數(shù)均為偶數(shù),則兩個(gè)變量均不改變。用減奇數(shù)次數(shù)的方法,求一個(gè)數(shù)的近似平方根,這個(gè)平方根是一個(gè)整數(shù)。如求17的平方根,可以用17相繼減去奇數(shù)1、3、5、7、?,當(dāng)結(jié)果為負(fù)數(shù)時(shí)停止,即:17-1-3-5-7-9<0可以看出,17在減去5次奇數(shù)后結(jié)果變?yōu)樨?fù)數(shù),可以近似認(rèn)為17的平方根在4與5之間,計(jì)算NUM的平方根,如果NUM=17,則ANS中保存結(jié)果4。以下面形式定義一個(gè)長(zhǎng)整數(shù),其所占用字節(jié)數(shù)由N得到,比如128位的數(shù)5746352413DE89674523BC9A78563412H定義成:NUMDB12H,34H,56H,78H,9AH,0BCH,23H,45HDB67H,89H,0DEH,13H,24H,35H,46H,57HNDB$-NUM試編寫一個(gè)程序,實(shí)現(xiàn)對(duì)N字節(jié)的NUM的值求補(bǔ)(類似NEG的操作),并把求補(bǔ)后的值仍保存在NUM中。2.演示程序運(yùn)行結(jié)果,請(qǐng)指導(dǎo)教師檢查。題目創(chuàng)建人題目注釋6.1.asm.modelsmall.dataletterdw0;字母digitaldw0;數(shù)字otherdw0;其他字符clrdb0dh,0ah,'$'.codestart:movax,@datamovds,axjmpLupl:incletterjmpLupd:incdigitaljmpLupo:incotherL:;各種判斷movah,1int21hcmpal,0dhjznextcmpal,30hjlupocmpal,3ahjlupdcmpal,41hjlupocmpal,5bhjluplcmpal,61hjlupocmpal,7bhjluplcmpal,7bhjaupojmpLnext:leasi,letter;用si控制地址movbx,0movcx,3;循環(huán)三次,分別輸出字母,數(shù)字,和其他字符的個(gè)數(shù)next2:leadx,clrmovah,9int21hmovdx,[si+bx]addsi,2adddl,30hmovah,2int21hloopnext2movah,4chint21hendstart6.2.asm.modelsmall.datadw2dw3.codestart:movax,@datamovds,axmovax,Arcrax,1jncL2;判斷A為偶數(shù)movbx,Brcrbx,1jncnext;兩者為偶數(shù),均沒變化incA;兩者為奇數(shù),分別加1incBL2:movbx,Bpushbxrcrbx,1jncnext;B也是偶數(shù),兩者不變pushA;A為偶數(shù),B為奇數(shù),兩者交換pushBpopApopBnext:movah,4chint21hendstart6.3.asmDATASSEGMENTdigitaldw18DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovax,digitalmovbx,1movdx,0L:subax,bxcmpax,0jlnextincdxaddbx,2jmpLnext:adddl,30hmovah,2int21hMOVAH,4CHINT21HCODESENDSENDSTART6.4.asmDATASSEGMENTNUMDB12H,34H,56H,78H,9AH,0BCH,23H,45HDB67H,89H,0DEH,13H,24H,35H,46H,57HNDW$-NUMDATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleasi,NUMmovcx,Nstc;1在這里L(fēng):moval,[si]notal;求補(bǔ)即是取反+1adcal,0mov[si],alincsiloopLMOVAH,4CHINT21HCODESENDSENDSTART題目名稱實(shí)驗(yàn)七子程序設(shè)計(jì)1題目關(guān)鍵字子程序題目錄入時(shí)2013-5-710:15:29間實(shí)驗(yàn)?zāi)康?.掌握匯編語(yǔ)言完整段和簡(jiǎn)化段源程序結(jié)構(gòu)。2.掌握匯編語(yǔ)言綜合程序設(shè)計(jì)方法。題目?jī)?nèi)容實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:(1).寫一段子程序SKIPLINES,完成輸出空行的功能。空行的行數(shù)由用戶在主程序中通過鍵盤輸入,并將行數(shù)放在AX寄存器中。(2).設(shè)有10個(gè)學(xué)生的成績(jī)分別是76,69,84,90,73,88,99,63,100和80分。試編制一個(gè)子程序統(tǒng)計(jì)60-69分,70-79分,80-89分,90-99分和100分的人數(shù),并分別放到S6,S7,S8,S9和S10單元中。(3)編寫一個(gè)程序,計(jì)算1+2+3+4+?+N的累加和,并把累加和以十進(jìn)制形式顯示出來(lái)。(不能使用公式計(jì)算“累加和=N×(N+1)/2”,必須使用程序?qū)崿F(xiàn)循環(huán)累加來(lái)計(jì)算)。(4)根據(jù)《中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)GB11643-1999》中有關(guān)公民身份號(hào)碼的規(guī)定,公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位數(shù)字校驗(yàn)碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼。順序碼的奇數(shù)分給男性,偶數(shù)分給女性。校驗(yàn)碼是根據(jù)前面十七位數(shù)字碼,按照ISO7064:1983.MOD11-2校驗(yàn)碼計(jì)算出來(lái)的檢驗(yàn)碼。下面介紹計(jì)算校驗(yàn)碼的算法:先引入公式:(右邊最低位為第1位,左邊最高位為第18位)S=∑(A*W)(i=2,3,...,18) i ii:表示號(hào)碼字符從右至左包括校驗(yàn)字符在內(nèi)的位置序號(hào);A:表示第i位置上的號(hào)碼字符值;iW:表示第i位置上的加權(quán)因子,其數(shù)值依據(jù)公式W=2^(i-1)mod i i11計(jì)算得出。下表列出身份號(hào)碼中各個(gè)位置上的加權(quán)因子W數(shù)值。i有了W值表后,可以簡(jiǎn)化S的計(jì)算過程,得出S后計(jì)算余數(shù)Y,Y的i計(jì)算公式為:Y=mod(S,11),再根據(jù)下表找出Y對(duì)應(yīng)的校驗(yàn)碼即為要求身份證號(hào)碼的校驗(yàn)碼C。編寫一個(gè)程序,完成從鍵盤上輸入一個(gè)17位的身份證號(hào)(身份證號(hào)的前17位,即上面描述中的第18位至第2位),通過計(jì)算補(bǔ)充第1位后,將完整的身份證號(hào)顯示出來(lái)。(5)設(shè)有一段英文,其字符變量名為ENG,并以$字符結(jié)束。試編寫一段程序,查單詞SUN在該文中出現(xiàn)的次數(shù),并輸出顯示出現(xiàn)的次數(shù)。2.演示程序運(yùn)行結(jié)果,請(qǐng)指導(dǎo)教師檢查。三、提交內(nèi)容將各個(gè)源程序代碼、exe文件壓縮為RAR后提交到作業(yè)系統(tǒng)。在“自評(píng)內(nèi)容”欄中寫出完成作業(yè)的情況以及在做作業(yè)過程中出現(xiàn)的問題和解決的方法。題目創(chuàng)建人題目注釋7.1.asmDATASSEGMENTclrfdb0ah,0dh,'$'numdw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXcallSKIPLINESMOVAH,4CHINT21HSKIPLINES:L:;從鍵盤取得數(shù)字,存進(jìn)AXmovah,1int21hcmpal,0dhjzL2subal,30hmovcl,almovch,0movax,nummovbx,10mulbxaddax,cxmovnum,axjmpLL2:movax,num;行數(shù)放AXmovcx,ax;次數(shù)L3:leadx,clrfmovah,9int21hloopL3retCODESENDSENDSTART7.2.asmDATASSEGMENTstudentdb76d,69d,84d,90d,73d,88d,99d,63d,100d,80dcountdw$-students5dw0s6dw0s7dw0s8dw0s9dw0s10dw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadi,studentmovcx,countcallstatisticMOVAH,4CHINT21Hstatistic:movax,[di]incdicmpcx,0jznextdeccxcmpal,60djlup5cmpal,70djlup6cmpal,80djlup7cmpal,90djlup8cmpal,100djlup9jzup10next:retup5:incs5jmpstatisticup6:incs6jmpstatisticup7:incs7jmpstatisticup8:incs8jmpstatisticup9:incs9jmpstatisticup10:incs10jmpstatisticCODESENDSENDSTART7.3.asmDATASSEGMENTclrfdb0ah,0dh,'$'numdw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXcalltotal;計(jì)算總數(shù)pushax;避免影響先入棧leadx,clrfmovah,9int21hpopax;出棧callxianshimovah,4chint21htotal:L:;從鍵盤取得數(shù)字,存進(jìn)nummovah,1int21hcmpal,0dhjzL2subal,30hmovcl,almovch,0movax,nummovbx,10mulbxaddax,cxmovnum,axjmpLL2:movcx,nummovax,0movbx,1LL:addax,bxincbxloopLLretxianshi:;顯示多位十進(jìn)制數(shù)字pushaxpushbxpushcxpushdxmovdx,0movcx,0movbx,10L3:divbxpushdxmovdx,0inccxcmpax,0jnzL3L4:popdxadddl,30hmovah,2int21hloopL4popdxpopcxpopbxpopaxretCODESENDSENDSTART7.4.asmDATASSEGMENTstringdb30dup('$')crlfdb0ah,0dh,'$'quandb7d,9d,10d,5d,8d,4d,2d,1d,6d,3d,7d,9d,10d,5d,8d,4d,2dtabldb"10x98765432"DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleadx,string;接收輸入字符串movah,0ahint21hleadx,crlf;換行movah,9int21hmovdx,0movcx,17dleasi,string+2;首字符地址leadi,quan;權(quán)地址L:;計(jì)算總權(quán)movax,[si]subal,30hmovbx,[di]mulbladddx,axincsiincdiloopLmovax,dxmovbl,11divbl;余數(shù)Ymovcx,0movcl,ahleasi,tablcmpcx,0jzL22L2:incsi;去到余數(shù)Y對(duì)應(yīng)的校驗(yàn)碼loopL2L22:movbx,0leadi,string+2L3:movdl,[di]cmpdl,0dhjzfinallyincdijmpL3finally:;將第18位號(hào)碼插入原來(lái)17位的字符串后面movdl,[si]mov[di],dlleadx,string+2;十八位一起輸出movah,9int21hMOVAH,4CHINT21HCODESENDSENDSTART7.5.asmDATASSEGMENTENGdb"zzsusumxsssxzsuxmsumsxum$"countdw0DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DA TAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovcx,0deccxL:inccxleadi,ENGadddi,cxmoval,[di]incdicmpal,24hjzfinallycmpal,'s'jnzLmoval,[di]incdicmpal,24hjzfinallycmpal,'u'jnzLmoval,[di]incdicmpal,24hjzfinallycmpal,'m'jnzLinccount;三個(gè)判斷都通過那么你是sum了jmpLfinally:;顯示個(gè)數(shù)movax,countmovdx,0movcx,0movbx,10L3:divbxpushdxmovdx,0inccxcmpax,0jnzL3L4:popdxadddl,30hmovah,2int21hloopL4MOVAH,4CHINT21HCODESENDSENDSTART題目名稱實(shí)驗(yàn)八子程序設(shè)計(jì)2題目關(guān)鍵字子程序設(shè)計(jì)題目錄入時(shí)2013-5-1318:19:26間一、實(shí)驗(yàn)?zāi)康?.掌握匯編語(yǔ)言完整段和簡(jiǎn)化段源程序結(jié)構(gòu)。2.掌握匯編語(yǔ)言綜合程序設(shè)計(jì)方法。題目?jī)?nèi)容3.掌握文件的操作。二、實(shí)驗(yàn)要求1.編寫完整的匯編語(yǔ)言程序:編寫子程序嵌套結(jié)構(gòu)的程序,把整數(shù)分別用二進(jìn)制和八進(jìn)制形式顯示出來(lái)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子設(shè)備交易合同案例
- 悔過自責(zé)重建信任
- 珍愛和平和諧相處
- 香蕉采購(gòu)合同示例
- 版企業(yè)借款合同模式
- 地毯招標(biāo)廢標(biāo)原因文件
- 建筑施工土方填筑招標(biāo)
- 戶外垃圾桶設(shè)計(jì)招標(biāo)
- 電子招投標(biāo)操作技巧
- 大樓租賃合同書
- 2024年度土建升壓站工程勞務(wù)分包合同:就土建升壓站工程勞務(wù)分包事項(xiàng)達(dá)成一致3篇
- 廣東省廣州荔灣區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 醫(yī)藥高等數(shù)學(xué)知到智慧樹章節(jié)測(cè)試課后答案2024年秋浙江中醫(yī)藥大學(xué)
- ICU患者外出檢查的護(hù)理
- 校地結(jié)對(duì)共建合作協(xié)議書(2篇)
- 重慶育才中學(xué)教育集團(tuán) 2024-2025學(xué)年上學(xué)期八年級(jí)期中考試數(shù)學(xué)試題
- 零信任環(huán)境下的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)管理優(yōu)化
- (完整版)信息安全課件
- 2024年“七五”普法考試題庫(kù)及答案(共100題)
- 2024年官方獸醫(yī)牧運(yùn)通考試題庫(kù)(含答案)
- 社區(qū)教育志愿者培訓(xùn)教材
評(píng)論
0/150
提交評(píng)論