微機軟件試驗習(xí)題及答案_第1頁
微機軟件試驗習(xí)題及答案_第2頁
微機軟件試驗習(xí)題及答案_第3頁
微機軟件試驗習(xí)題及答案_第4頁
微機軟件試驗習(xí)題及答案_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理軟件實驗實驗1兩個多位十進(jìn)制數(shù)相加的實驗實驗內(nèi)容:將兩個多位十進(jìn)制數(shù)相加,要求加數(shù)和被加數(shù)均以ASCII碼形式各自順序存放以DATA1和DATA2為首的5個內(nèi)存單元中(低位在前),結(jié)果送回DATA1處。完整代碼如下:DATASSEGMENT;此處輸入數(shù)據(jù)段代碼STRING1DBinputthefirstnumber:*STRING2DB13,10;inputthesecondnumber,$STRING3DB13,10;theoutputis:;$DATA1DB6DUP(00H),$DATA2DB6DUP(00H),$DATASENDSSTACKSSEGMENT;此處輸入堆棧段代碼ST

2、ACKSENDS.word.zl-CODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此處輸入代碼段代碼LEASI,DATA1LEADI,DATA2L0:LEADX,STRING1;打印字符串STRING1MOVAH,09INT21HINPUT1:;輸入第一個數(shù)MOVAH,01;輸入字符至AL中INT21HCMPAL,/JEL1MOVSI,AL.word.zl-INCSIJMPINPUT1L1:LEADX,STRING2;打印字符串STRING2MOVAH,09INT21HINPUT2:;輸入第二個數(shù)MO

3、VAH,01;輸入字符至ALINT21HCMPAL,/JEL2MOVDI,ALINCDIJMPINPUT2L2:MOVSI,0CLC;清空進(jìn)位標(biāo)志位CF.word.zl-MOVCX,6PLUSE:;相加;SUBDATA1SI,30H;SUBDATA2SI,30H;這里不能使用這兩條指令,因為如果DATA15=00H,00H-30H需要借位相減,使CF=1MOVAL,DATA1SIADCAL,DATA2SIAAA;加法調(diào)整指令,可使兩個ASCII數(shù)直接相加MOVDATA1SI,AL;和賦給DATA1SIINCSILOOPPLUSEL3:LEADX,STRING3;打印字符串STRING3MOVA

4、H,09INT21HMOVCX,6MOVSI,6.word.zl-SHOW:DECSICMPDATA1SI,00HJESHOWSHOW2:MOVDL,DATA1SIADDDL,30HMOVAH,02INT21HCMPSI,0JEL4DECSIJMPSHOW2L4:MOVAH,4CHINT21HCODESENDSENDSTART運行結(jié)果如下:輸入為低位在前,即輸入1234和99999相加實際上是4321和.word.zl-99999相力口(即:4321+99999=104320遲(XKBoir0,4,Cpu1曄杜1KX3中也,八仙0.牌pgygDWTEM|ii|mif.thi#fIr4ftiMi

5、.hulXH/injutths&etsidwiwbcr:5?X)ztheoutputis:W13ZePrhrss也叫keytocontinue實驗2兩個數(shù)相乘的實驗(無符號數(shù)相乘)實驗內(nèi)容:實現(xiàn)十進(jìn)制數(shù)的乘法。要求被乘數(shù)和乘數(shù)均以ASCII碼形式各自順序存放在內(nèi)存中,乘積在屏幕上顯示出來。完整代碼如下:DATASSEGMENT;此處輸入數(shù)據(jù)段代碼STRING1DBtheoutputis:;$DATA1DB31H,32H,33HDATA2DB35H,36HDATASENDS.word.zl-STACKSSEGMENT;此處輸入堆棧段代碼STACKSENDSCODESSEGMENTASSUMECS

6、:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此處輸入代碼段代碼MOVDL,10MOVAL,DATA10;AL=31HSUBAL,30H;AL=01HMULDL;乘10;AL=10ADDAL,DATA11;AL=10+32HSUBAL,30H;AL=10+32H-30H=12MULDL;AL=120ADDAL,DATA12;AL=120+33H.word.zl-SUBAL,30H;AL=120+33H-30H=123MOVBL,AL;BL=AL;MOVAL,DATA20;AL=35HSUBAL,30H;AL=5MULDL;乘10;AL=5

7、0ADDAL,DATA21;AL=50+36HSUBAL,30H;AL=50+36H-30H=56MULBL;AX=123x56=6888SUBDX,DX;DX清零MOVBX,1000DIVBX;(DX,AX)/1000,商6在AX中,余數(shù)8884DX中PUSHDXMOVDL,ALADDDL,30HMOVAH,02;打印最高位6INT21HPOPDX.word.zl-MOVBL,100MOVAX,DX;888武給AXDIVBL;AX/100,商放在AL中,余數(shù)88放在AH中MOVDL,ALMOVCL,AH;!這里千萬不能把AH直接賦給AL,因為經(jīng)過INT21H指令后AL,AH會改變ADDDL,

8、30HMOVAH,02;打印第二位INT21HMOVBL,10MOVAL,CLSUBAH,AH;清空AHDIVBL;AX/10,商放在AL中,余數(shù)8放在AH中MOVDL,ALMOVCL,AHADDDL,30HMOVAH,02;打印第三位INT21H.word.zl-MOVDL,CLADDDL,30HMOVAH,02;打印第四位INT21HCODESENDSENDSTART運行結(jié)果為:實驗3字符串匹配實驗match”,實驗內(nèi)容:編寫程序?qū)崿F(xiàn)兩個字符串比較。如果相同,則屏幕顯示否則屏幕顯示nomatch”,完整代碼如下:DATASSEGMENT;此處輸入數(shù)據(jù)段代碼PRINT1DBinputthef

9、irststring:*PRINT2DB13,10,inputthesecondstring*.word.zl-PRINT3DBmatch,$PRINT4DBnomatch;$PRINT5DB13,10;output:,$STRING1DB30DUP(00H),13,10$STRING2DB30DUP(00H),13,10$DATASENDSSTACKSSEGMENT;此處輸入堆棧段代碼STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS,ES:DATASSTART:MOVAX,DATASMOVDS,AX;此處輸入代碼段代碼LEADX,

10、PRINT1打印字符串PRINT1MOVAH,09.word.zl-INT21HLEASI,STRING1;STRING1地址賦給SILEADI,STRING2;STRING2地址賦給DIINPUT1:MOVAH,01;輸入字符至ALINT21HCMPAL,/;輸入字符串以/結(jié)束,L0JEL0MOVSI,ALINCSIJMPINPUT1L0:LEADX,PRINT2打印字符串PRINT2MOVAH,09INT21H.word.zl-INPUT2:MOVAH,01;輸入字符至ALINT21HCMPAL,/JEL1MOVDI,ALINCDIJMPINPUT2L1:MOVCX,30;CX=30代表比

11、較3畋MOVSI,00HPARE:;字符用一個一個比較MOVAL,STRING1SI;取STRING1存儲單位中的第SI個字符賦給ALCMPAL,STRING2SI;AL與STRING2存儲單位中的第SI個字符比較JNENOMATCHINCSILOOPPAREJMPMATCH.word.zl-NOMATCH:;打印output:nomatchLEADX,PRINT5MOVAH,09INT21HLEADX,PRINT4MOVAH,09INT21HJMPL2MATCH:;打Bpoutput:matchLEADX,PRINT5MOVAH,09INT21HLEADX,PRINT3MOVAH,09INT

12、21HL2:MOVAH,4CHINT21H.word.zl-CODESENDSENDSTART運行結(jié)果:CJ工超-ADO53o0,74,.CpjSOUQcycli二Qrr.Ekip0(.PregramZWTEMFintMitHiefirststrinpctsdf/士力總secortdstringiasdf/output:rmtch.word.zl-實驗4從鍵盤輸入數(shù)據(jù)弁顯示的實驗實驗內(nèi)容:將鍵盤輸入的2位十六進(jìn)制數(shù)轉(zhuǎn)換為等值的二進(jìn)制數(shù),并在屏幕上顯示。歹如:鍵入f2,則顯示1111001沈整代碼如下:DATASSEGMENT;此處輸入數(shù)據(jù)段代碼STRING1DBpleaseinputastri

13、ng:$STRING2DB13,10;theoutputis:$STRING3DB13,10;inputerror,13,10;$DATASENDSSTACKSSEGMENT.word.zl-;此處輸入堆棧段代碼STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此處輸入代碼段代碼L0:LEADX,STRING1;打印字符串STRING1MOVAH,09INT21HMOVAH,01;輸入第一個字符至AL中INT21HCMPAL,0ERROR1CMPAL,9EENTER1CMPAL,A.

14、word.zl-ERROR1CMPAL,FEENTER1CMPAL,aERROR1CMPAL,fEENTER1ERROR1:LEADX,STRING3;打印字符串STRING3MOVAH,09INT21HJMPL0ENTER1:CALLASC2BCD才巴ASCII碼轉(zhuǎn)化成十進(jìn)制數(shù)BCD碼MOVCL,4ROLAL,CLMOVBL,AL;把高四位放到BL寄存器中;輸入第二個字符.word.zl-MOVAH,01輸入第二個字符至AL中INT21HCMPAL,0ERROR1CMPAL,9EENTER2CMPAL,AERROR1CMPAL,FEENTER2CMPAL,aERROR1CMPAL,fEENT

15、ER2ENTER2:CALLASC2BCD才巴ASCII碼轉(zhuǎn)化成十進(jìn)制數(shù)BCD碼ADDBL,ALLEADX,STRING2;打印字符串STRING2.word.zl-MOVAH,09INT21HMOVCX,9CLC;清空標(biāo)志位SHOW:;顯示BL中的二進(jìn)制數(shù)DECCXCMPCX,0JENEXT;輸出完八位之后返回DOSROLBL,1;循環(huán)左移一位,若溢出為1,則CF=1JCM1JMPM2M1:MOVDL,1;若CF=1,轉(zhuǎn)至M1打印1MOVAH,02INT21HJMPSHOWM2:MOVDL,0;若CF=0,轉(zhuǎn)至M1打印0MOVAH,02INT21H.word.zl-JMPSHOWNEXT:M

16、OVAH,4CHINT21HASC2BCDPROCCMPAL,9EL1AL09,他1SUBAL,07H;若輸入的數(shù)為AF,或者af,貝U減7,A接在39H后面,AF=3AH3FH,af=5AH5FHL1:SUBAL,30H減30HANDAL,0FH;濾除高位,保留低位,因為af恰好比AF大20H,這樣afgft和AF的數(shù)值一樣了RETASC2BCDENDPCODESENDSENDSTART輸出結(jié)果為:(若輸出不在09,AF,af內(nèi),則重新輸入).word.zl-|DO&Eox3.74,Cpuspeed3O0Ceye-me仃kipDrPragram:DWTEMPpleaselll|JLLtdtr

17、iIMJ;tInputezrurpleAeInputaEtringzdsInputsnrorpleaseinputa&tring:3Pinputerrorpleftscinputastring:IZthnutputis:11116010PityxclPFromejidp0,rogrorn:DWL儲口iiipitstriiny:asdlli23k4j21zklTiljklidxabtKii1L-5Pr的窗Anyk由jtoconihme實驗6改變年月日的實驗實驗內(nèi)容:先在屏幕上顯示“whatisthedate(mm/dd/yy)?“從鍵盤輸入的月曰年能把計算機的系統(tǒng)日期改為你鍵入的值。完整代碼如下

18、:DATASSEGMENTS1DB0AH,0DH,whatisthedate(mm/dd/yy)?:$DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS.word.zl-START:MOVAX,DATASMOVDS,AXMOVDX,OFFSETS1MOVAH,09H;打印字符串whatisthedate(mm/dd/yy)?:INT21HMOVDX,0H;DX=CH=0MOVCH,0;MOVSI,0AHKAISHI:MOVCL,0;用來壓縮移位SHURU:MOVAH,01H;輸入字符存入AL

19、中INT21HMOVAH,0AH;10賦給AHCMPAL,0DH;AL=13則結(jié)束,設(shè)置日期JEGENGGAICMPAL,/;計算來判斷是年,月,日J(rèn)EZIZENG.word.zl-ANDAL,0FHCMPCH,0;等于0則轉(zhuǎn)月JEYUECMPCH,1;等于1則轉(zhuǎn)日J(rèn)ERICMPCH,2;等于2則轉(zhuǎn)年JENIANZIZENG:INCCHJMPSHURU;無條件轉(zhuǎn)移至SHURUYUE:ADDDH,ALCMPCL,0JNZKAISHIINCCLMOVAL,DHMULAHMOVDH,ALJMPSHURU;無條件轉(zhuǎn)移至SHURURI:.word.zl-ADDDL,ALCMPCL,0JNZKAISHII

20、NCCLMOVAL,DLMULAHMOVDL,ALJMPSHURU;無條件轉(zhuǎn)移至SHURUNIAN:CMPCL,0JNZXIABUADDBL,ALMOVCL,03H;3賦給CLJMPSHURU;無條件轉(zhuǎn)移至SHURUXIABU:MOVAH,0;清空AHMOVSI,BX;SI=BXSHLBX,CL;BX左移三位,乘以8.word.zl-SHLSI,1;SI左移一位,乘以2ADDBX,SI;兩個相加,即乘以10ADDBX,AX;BX加上新輸入的數(shù)字JMPSHURUGENGGAI:MOVCX,BXMOVAH,2BH;設(shè)置日期INT21HMOVAH,4CHINT21HCODESENDSENDSTART

21、輸出結(jié)果為:(設(shè)置2008年12月3日,注意如果要設(shè)置好系統(tǒng),否則可能計算機的日期改變不了).word.zl-實驗7將小寫字母轉(zhuǎn)換為大寫字母的實驗實驗內(nèi)容:接收鍵入字符(以Ctrl-c為結(jié)束),將小寫字母變?yōu)榇髮懽帜?,并在屏幕上顯示。完整代碼如下:DATASSEGMENT;此處輸入數(shù)據(jù)段代碼STRING1DB13,10pleaseinputastring$STRING2DB13,10;theoutputstringis,$DATADB100DUP(00H),$DATASENDSSTACKSSEGMENT;此處輸入堆棧段代碼STACKSENDS.word.zl-CODESSEGMENTASSUM

22、ECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此處輸入代碼段代碼M:LEASI,DATALEADX,STRING1;打印字符串1MOVAH,09INT21HINPUT:MOVAH,01;輸入字符CINT21HCMPAL,03HJEOUTPUTCMPAL,aMCMPAL,z.word.zl-JAMSUBAL,20H;減20H變小寫MOVSI,ALINCSIJMPINPUTOUTPUT:LEADX,STRING2;打印字符用2MOVAH,09INT21HLEASI,DATAL1:MOVDL,SICMPDL,00HJEENDINGMOVA

23、H,02INT21HINCSIJMPL1.word.zl-ENDING:MOVAH,4CHINT21HCODESENDSENDSTART運行結(jié)果為:(如果輸入的不在af中,則重新輸入)DOSBct074匚加1MMcyiJes,3口0,片口卡啟E.W/TEMPfilrrtXrkJinput,astringUinpiildstriny:PInputastrhiyinputqstringJshglEfsAagvtheovtputstrintfi等;LSH應(yīng)5JGU屋hsgPressanykeytdccmtLiuue_實驗8排序?qū)嶒?0-9)實驗內(nèi)容:從首地址為1000H開始存放10個數(shù),將這些數(shù)按降

24、序排列完整代碼如下:DATASSEGMENT;此處輸入數(shù)據(jù)段代碼.word.zl-STRING1DBpleaseinput10number$STRING2DB13,10;thesortednumbersare$ORG1000HDATADB10DUP(00H),$DATASENDSSTACKSSEGMENT;此處輸入堆棧段代碼STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此處輸入代碼段代碼LEADX,STRING1;輸入提示語pleseinput10numbers:MOVAH,09

25、INT21H.word.zl-MOVCX,10LEASI,DATAINPUT:MOVAH,01輸入字符至ALINT21HMOVSI,AL把AL賦給偏移地址為SI指向的單元INCSILOOPINPUTMOVBL,0L0:MOVCX,9LEASI,DATAL1:;比較第SI個數(shù)和第SI+1個數(shù)的大小MOVAL,SIINCSICMPAL,SICHANGE;若小于M轉(zhuǎn)CHANGEL2:LOOPL1;小循環(huán)(CX自動減1),若CX=0則結(jié)束L3:INCBL.word.zl-CMPBL,10L0;若大循環(huán)有1畋了,則轉(zhuǎn)OUTPUTJMPOUTPUTCHANGE:;交換兩個數(shù)XCHGAL,SI;交換,MOV

26、SI-1,AL;賦給SI-1JMPL2OUTPUT:LEADX,STRING2;輸入提示語thesortednumbersare:MOVAH,09INT21HMOVCX,10LEASI,DATAL4:;循環(huán)輸出MOVDL,SIMOVAH,02INT21HINCSI.word.zl-LOOPL4MOVAH,4CHINT21HCODESENDSENDSTART輸出結(jié)果為:里|口鏘呢乂白乂工四jOOOy;lcirran-cikip0.r&gam;DWTMPdeaseinpirtItJnumbers:125UHJbtJicsartednuinbcrsAreFrcssonyNeytocontimuc_實

27、驗8排序?qū)嶒灒ǘ辔粩?shù)排序)實驗內(nèi)容:從首地址為1000H開始存放10個數(shù),將這些數(shù)按降序排列.完整代碼如下:.word.zl-DATASEGMENT;CHANGE函數(shù)DI,SI為入口函數(shù),交換SI,DI的值,SI,DI值已經(jīng)大變BUFFERDB100DB?DB100DUP(?)DB$ORG1000HNEQU10;每個數(shù)最大為1帥;中間變量;中間變量;中間變量STOREDATADB110DUP(30H)TEMP1DB12DUP(24H)TEMP2DB12DUP(24H)TEMP3DB12DUP(24H)DATAENDSSTACKSEGMENTPARASTACKDW60HDUP(0)STACKEN

28、DSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACKSTART:MOVAX,DATA.word.zl-MOVDS,AX;MOVAX,STACK;MOVSS,AX;可以有可以無,因為其已經(jīng)默認(rèn)為SSTMOVDX,OFFSETBUFFERMOVAH,0AHINT21HCALLTURNLINELEASI,BUFFERLEADI,STOREDATACALLBUFFERTOSTORECALLTURNLINELEASI,STOREDATACALLPAREGO:MOVSI,OFFSETSTOREDATAMOVCL,110PRINT:MOVDL,SICMPDL,30H.wor

29、d.zl-JNEPRINT1CMPAL,1JEPRINT1;打印該有的0INCSILOOPPRINTPRINT1:CMPDL,2CHJEPRINT0JIXU:MOVAH,02HINT21HCMPDL,2CHJNEGOON5MOVAL,0JMPGOON6PRINT0:CMPAL,0JNEJIXUMOVDL,30HMOVAH,02HINT21H.word.zl-MOVDL,2CHJMPJIXUGOON5:MOVAL,1GOON6:INCSILOOPPRINTMOVAH,01HINT21HMOVAH,4CHINT21HPAREPROC;以$為入口傳遞MOVBX,SI;LEADI,TEMP2;GETL

30、AST:;CALLTEMPSAVE;INCDL;CMPDL,N;JEGOON1;LEADI,TEMP2.word.zl-JMPGETLAST;TEMP2始終指向當(dāng)前最后一個數(shù);GOON1:MOVCL,NPARE1:MOVSI,BXLEADI,TEMP1CALLTEMPSAVE;TEMP1指向第一個數(shù),錯啦,為什么呢,因為那樣比不會進(jìn)行變化MOVSI,BXMOVDH,1LEADI,TEMP1PUSHSIPARE2:LODSBMOVAH,DICMPAL,2CHJEEQUALCMPAL,AHBELOW.word.zl-CMPAL,AHJAABOVEINCDIJMPPARE2BELOW:INCDHPOPSIPUSHSILEADI,TEMP1CALLTEMPSAVE;使TEMP1存入當(dāng)前最小,因為TEMP1當(dāng)前元已經(jīng)存在了;不可以再轉(zhuǎn)存,否則出錯POPSIADDSI,NINCSIPUSHSICMPDH,CLJAGOON2LEADI,TEMP1JMPPARE2.word.zl-EQUAL:INCDH;不交換POPSIADDSI,NINCSIPUSHSICMPDH,CLJAGOON2;比較CL次LEADI,TEMP1JMP

溫馨提示

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

評論

0/150

提交評論