微機(jī)原理習(xí)題_第1頁
微機(jī)原理習(xí)題_第2頁
微機(jī)原理習(xí)題_第3頁
微機(jī)原理習(xí)題_第4頁
微機(jī)原理習(xí)題_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、習(xí) 題 33.1 在以Block為首地址的字節(jié)單元中,存放了一個(gè)班級(jí)的學(xué)生考試成績(jī)。試編寫一程序,利用學(xué)生的序號(hào)來查表得到該學(xué)生的成績(jī),設(shè)學(xué)生的序號(hào)在NUMBER單元,查表結(jié)果存入RESULT單元。解:DSEG SEGMENTBLOCKDB 67,78,86,57,88,75,78,96,77,88,87,95,67,86,83,55NUMBER DB 9 ; 要顯示的16進(jìn)制數(shù)字RESULT DB ? ; 存放要顯示數(shù)字對(duì)應(yīng)的七段碼DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS:DSEGSTART :MOV AX, DSEGMOV DS, AXMOV BX,

2、 OFFSET BLOCKMOV AL, NUMBER; 取16進(jìn)制數(shù)字AND AL, 0FHXLAT; 查表取得對(duì)應(yīng)的七段碼MOV RESULT, AL ; 保存MOV AX, 4C00HINT 21HCSEG ENDSEND START3.2 試編程序,統(tǒng)計(jì)由52600H開始的100個(gè)單元中所存放的字符“A“的個(gè)數(shù),并將結(jié)果存放在DX中。解:CSEG SEGMENTASSUME CS: CSEGSTART :MOV AX, 5260HMOV DS, AXMOV BX, 0MOV AL, AMOV CX,100MOV DX,0AGA:CMP AL,BXJNZ LPINCDXLP:INC BX

3、LOOP AGAMOV AX, 4C00HINT 21HCSEG ENDSEND START3.3 在當(dāng)前數(shù)據(jù)段(DS),偏移地址為GRADE開始的連續(xù)80個(gè)單元中,存放著某班80個(gè)同學(xué)某門考試成績(jī)。按要求編寫程序:試編寫程序統(tǒng)計(jì)90分;80分89分;70分79分;60分69分,60分的人數(shù)各為多少,并將結(jié)果放在同一數(shù)據(jù)段、偏移地址為L(zhǎng)EVEL開始的連續(xù)單元中。試編寫程序,求該班這門課的平均成績(jī)?yōu)槎嗌?,并放在該?shù)據(jù)段的AVER單元中。解:DATASEGMENTGRADEDB80 DUP(?);運(yùn)行前置入具體數(shù)據(jù)LEVELDB0 ;大于90LEVEL1DB0;80分89分LEVEL2DB0;70

4、分79分LEVEL3DB0;60分69分 LEVEL4DB0;60分AVERDB ?DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXLEASI, GRADEMOVDX,0MOVCX, 80AGAIN:MOVAL, SICMPAL, 59;分段測(cè)試JAL1 L0:INCLEVEL4JMPNEXTL1:CMPAL, 69JAL2INCLEVEL3JMPNEXTL2:CMPAL, 79JAL3INCLEVEL2JMPNEXTL3:CMPAL, 89JAL4INCLEVEL1JMPNEXTL4:INCLEVELN

5、EXT:ADDSI, 1ADD DL,AL;求累加和ADC DH,0LOOPAGAINMOV AX,DXMOV BL,80DIVBLMOV AVER,ALEXIT:MOVAX, 4C00HINT21HCODEENDSENDSTART3.4 在以字節(jié)變量ARRAY為首地址的內(nèi)存區(qū)域存儲(chǔ)了一組帶符號(hào)的數(shù)據(jù),試編寫程序?qū)?shù)據(jù)組的所有正數(shù)相加,并將和送入SUM字單元。解:DATASEGMENTARRAYDB 12,-67,44,67,-35,66,55,-98,87,-87,33,83COUNTEQU $-ARRAYSUMDW? ;SUM存放累加和DATAENDSCODESEGMENTASSUMEDS

6、: DATA, CS: CODESTART:MOVAX, DATAMOVDS, AXMOVBX, 0;BX是數(shù)組元素在數(shù)組內(nèi)的位移,初值0MOVCX, COUNT;裝載循環(huán)計(jì)數(shù)器的初始值MOVDX, 0;累加器AX清零ONE:MOVAL,ARRAYBXCMP AL,0JLE NEXTCBW ADDDX,AX;NEXT:INCBX;修改BX的值,為下一次操作做準(zhǔn)備LOOPONE;計(jì)數(shù)循環(huán)MOVSUM, DX;保存結(jié)果(累加和)MOVAX, 4C00HINT21HCODEENDSENDSTART3.5 若某班有50名學(xué)生,考匯編語言課程,且所有考生的成績(jī)都已存放自XX單元開始的內(nèi)存區(qū)中,試編寫一程

7、序找出最高分和最低分。解:DATASEGMENTXXDB50 DUP (?);運(yùn)行前置入具體數(shù)據(jù)COUNTEQU $-XXMINDB?MAXDB?DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXMOVMIN, 100;假設(shè)最小的數(shù)MOVMAX, 0;假設(shè)最大的數(shù)LEASI, XXMOVCX, COUNTAGAIN:MOVAL, SICMPAL, MINJAESKIP1MOVMIN, AL;比預(yù)設(shè)最小值還小,保留SKIP1:CMPAL, MAXJBESKIP2 MOVMAX, AL;比預(yù)設(shè)最大值還大,保留S

8、KIP2:INC SILOOP AGAINEXIT:MOVAX, 4C00HINT21HCODEENDSENDSTART3.6 在首地址為ARRAY為首地址的內(nèi)存區(qū)域里,存放了一組帶符號(hào)的數(shù)據(jù),試編寫程序分別統(tǒng)計(jì)零、正數(shù)和負(fù)數(shù)的個(gè)數(shù),統(tǒng)計(jì)結(jié)果分別存放在ZZ、XX、YY中。解:DATASEGMENTARRAYDB56,-42,66,87,0,88,-88,68,0,-67,58,97,-66,86,77;運(yùn)行前置入具體數(shù)據(jù)COUNTEQU $-ARRAYXXDB0 ;正數(shù)的個(gè)數(shù)YYDB0;0的個(gè)數(shù)ZZDB0;負(fù)數(shù)的個(gè)數(shù)DATAENDSCODESEGMENTASSUMECS: CODE, DS:

9、DATASTART:MOVAX, DATAMOVDS, AXLEASI, ARRAYMOVCX, COUNTAGAIN:MOVAL, SICMPAL, 0;分段測(cè)試JGEL1 L0:INCZZJMPNEXTL1:JGL2INCYYJMPNEXTL2:INCXXNEXT:ADDSI, 1LOOPAGAINEXIT:MOVAX, 4C00HINT21HCODEENDSENDSTART3.7 設(shè)有一個(gè)管理軟件可接受十個(gè)鍵盤命令(分別是A、B、C,.,J),執(zhí)行這十個(gè)命令的程序入口地址分別是PROCA、PROCB、PROCC,.,PROCJ。編寫一程序從鍵盤上接收命令,并轉(zhuǎn)去執(zhí)行相應(yīng)的程序。要求分別用

10、以下兩種方式來實(shí)現(xiàn):(1)用比較轉(zhuǎn)移指令(2)用地址表法解:(1)DATASEGMENTPROMPTDB0DH, 0AH, INPUT A CHAR (AJ): $MSGADB0DH, 0AH, FUNCTION A EXECUTED . $MSGBDB0DH, 0AH, FUNCTION B EXECUTED . $MSGCDB0DH, 0AH, FUNCTION C EXECUTED . $MSGDDB0DH, 0AH, FUNCTION D EXECUTED . $MSGEDB0DH, 0AH, FUNCTION E EXECUTED . $MSGFDB0DH, 0AH, FUNCTIO

11、N F EXECUTED . $MSGGDB0DH, 0AH, FUNCTION G EXECUTED . $MSGHDB0DH, 0AH, FUNCTION H EXECUTED . $MSGIDB0DH, 0AH, FUNCTION I EXECUTED . $MSGJDB0DH, 0AH, FUNCTION J EXECUTED . $DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXINPUT:LEADX, PROMPTMOVAH, 9INT21H;輸出提示信息MOVAH, 1INT21H;輸入一個(gè)

12、數(shù)字; * 開始測(cè)試條件*CMPAL, AJBINPUT;不在AJ內(nèi),重新輸入JEFA;字符A,轉(zhuǎn)FACMPAL, BJEFB;字符B,轉(zhuǎn)FBCMPAL, CJEFC;字符C,轉(zhuǎn)FCCMPAL, DJEFD;字符D,轉(zhuǎn)FDCMPAL, EJEFE;字符E,轉(zhuǎn)FECMPAL, FJEFF;字符F,轉(zhuǎn)FFCMPAL, GJEFG;字符G,轉(zhuǎn)FGCMPAL, HJEFH;字符H,轉(zhuǎn)FHCMPAL, IJEFI;字符I,轉(zhuǎn)FICMPAL, JJEFJ;字符J,轉(zhuǎn)FJJMPINPUT;大于J,重新輸入; * 各分支語句序列*FA:CALL PROCA;調(diào)用PROCA程序塊JMPEXIT;每個(gè)分支結(jié)束,都

13、要用JMP指令跳轉(zhuǎn)到所有分支結(jié)束的地方FB:CALL PROCB;調(diào)用PROCB程序塊JMPEXIT FC:CALL PROCC;調(diào)用PROCC程序塊JMPEXIT FD:CALL PROCD;調(diào)用PROCD程序塊JMPEXITFE:CALL PROCE;調(diào)用PROCE程序塊JMPEXIT FF:CALL PROCF;調(diào)用PROCF程序塊JMPEXIT FG:CALL PROCG;調(diào)用PROCG程序塊JMPEXITFH:CALL PROCH;調(diào)用PROCH程序塊JMPEXIT FI:CALL PROCI;調(diào)用PROCI程序塊JMPEXIT FJ:CALL PROCJ;調(diào)用PROCJ程序塊JMP

14、EXIT ;最后一個(gè)分支結(jié)束,JMP可以省略EXIT:MOVAX, 4C00HINT21HPROCAPROCLEADX, MSGAMOVAH, 9INT21HRETPROCAENDPPROCBPROCLEADX, MSGBMOVAH, 9INT21HRETPROCBENDPPROCCPROCLEADX, MSGCMOVAH, 9INT21HRETPROCCENDPPROCDPROCLEADX, MSGDMOVAH, 9INT21HRETPROCDENDPPROCEPROCLEADX, MSGEMOVAH, 9INT21HRETPROCEENDPPROCFPROCLEADX, MSGFMOVAH

15、, 9INT21HRETPROCFENDPPROCGPROCLEADX, MSGGMOVAH, 9INT21HRETPROCGENDPPROCHPROCLEADX, MSGHMOVAH, 9INT21HRETPROCHENDPPROCIPROCLEADX, MSGIMOVAH, 9INT21HRETPROCIENDPPROCJPROCLEADX, MSGJMOVAH, 9INT21HRETPROCJENDPCODEENDSEND START(2)DATASEGMENTPROMPTDB0DH, 0AH, INPUT A CHAR (AJ): $MSGADB0DH, 0AH, FUNCTION A

16、 EXECUTED . $MSGBDB0DH, 0AH, FUNCTION B EXECUTED . $MSGCDB0DH, 0AH, FUNCTION C EXECUTED . $MSGDDB0DH, 0AH, FUNCTION D EXECUTED . $MSGEDB0DH, 0AH, FUNCTION E EXECUTED . $MSGFDB0DH, 0AH, FUNCTION F EXECUTED . $MSGGDB0DH, 0AH, FUNCTION G EXECUTED . $MSGHDB0DH, 0AH, FUNCTION H EXECUTED . $MSGIDB0DH, 0AH

17、, FUNCTION I EXECUTED . $MSGJDB0DH, 0AH, FUNCTION J EXECUTED . $ADDTBLDW FA,FB,FC,FD,FE,FF,FG,FH,FI,FJ;DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXINPUT:LEADX, PROMPTMOVAH, 9INT21H;輸出提示信息MOVAH, 1INT21H;輸入一個(gè)數(shù)字CMPAL, AJBINPUT;不在AJ內(nèi),重新輸入CMPAL, JJAINPUT;不在AJ內(nèi),重新輸入SUBAL,A ;將數(shù)字字符“

18、1”到“3”轉(zhuǎn)換為0, 1, 2SHLAL, 1;轉(zhuǎn)換為0,2,4MOVBL, ALMOVBH, 0;轉(zhuǎn)入BXJMPADDTBLBX;間接尋址,轉(zhuǎn)移到對(duì)應(yīng)程序塊; * 各分支語句序列*FA:LEADX, MSGA;FA程序塊JMPOUTPUT;每個(gè)分支結(jié)束,都要用JMP指令跳轉(zhuǎn)到所有分支結(jié)束的地方FB:LEADX, MSGB;FB程序塊JMPOUTPUT FC:LEADX, MSGC;FC程序塊JMPOUTPUT FD:LEADX, MSGD;FD程序塊JMPOUTPUTFE:LEADX, MSGE;FE程序塊JMPOUTPUT FF:LEADX, MSGF;FF程序塊JMPOUTPUT FG

19、:LEADX, MSGG;FG程序塊JMPOUTPUTFH:LEADX, MSGH;FH程序塊JMPOUTPUT FI:LEADX, MSGI;FI程序塊JMPOUTPUT FJ:LEADX, MSGJ;FJ程序塊JMPOUTPUT ;最后一個(gè)分支結(jié)束,JMP可以省略O(shè)UTPUT:MOVAH, 9INT21HMOVAX, 4C00HINT21HCODEENDSEND START3.8 設(shè)在寄存器AX,BX,CX中存放的是16位無符號(hào)數(shù),試編寫程序段,找出三個(gè)數(shù)值居中的一個(gè),并將其存入BUFF字單元中。解:DATASEGMENTBUFFDW0DATAENDSCODESEGMENTASSUMECS

20、: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXMOVAX,5MOVBX,3MOVCX,6CMPAX,BXJA L1JZL2L0:CMP AX,CX ;AXBXJAEL4;AXCXL2:CMP BX,CXJBE L5JMP L6L1:CMP BX,CXJAEL5;BXCMP AX,CXJAL6L4:MOV BUFF,AXJMPDONEL5: MOV BUFF,BXJMP DONEL6: MOV BUFF,CXDONE:MOVAX, 4C00HINT21HCODEENDSENDSTART3.9 編寫確定一個(gè)十進(jìn)制數(shù)x(2x200)是否是素?cái)?shù)(質(zhì)數(shù))的程序。解:

21、DATASEGMENTxDB 12;x(2x200)FLAGDB 0;X是素?cái)?shù),F(xiàn)LAG=1,否則FLAG=0DATAENDSCODESEGMENTASSUMEDS: DATA, CS: CODESTART:MOVAX, DATAMOVDS, AXMOVBL,2MOVBH,XSHRBH,1;計(jì)算測(cè)試范圍MOVFLAG,1;先假設(shè)x為素?cái)?shù)NEXT:MOVAL,XMOVAH,0DIVBLCMPAH,0;余數(shù)為0,說明不是素?cái)?shù),退出JZNOINCBLCMP BL,BHJZEXIT;到測(cè)試邊界,退出JMPNEXTNO:MOVFLAG,0EXIT:MOVAX, 4C00HINT21HCODEENDSEN

22、DSTART3.10 在以BLOCK為首地址的數(shù)據(jù)區(qū)域按著從小到大的順序存放了一個(gè)年級(jí)(180人)學(xué)生的匯編語言成績(jī)表。試編寫程序?qū)⒎謹(jǐn)?shù)82插入到該數(shù)組合適的位置。解:DATASEGMENTBLOCKDB1,3,5,7,9,12,15,25,35,36,37,40,42,46,57 ;學(xué)生的成績(jī)表,可根據(jù)實(shí)際填寫STDB39 ;另外一個(gè)學(xué)生的成績(jī)DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXLEASI, BLOCK+14;取成績(jī)表中最后一個(gè)學(xué)生成績(jī)的偏移地址給SIMOVCX, 15MOVAL, STCM

23、PBLK: CMPAL, SI;要插入的學(xué)生成績(jī)比成績(jī)表中的成績(jī)小,則轉(zhuǎn)CHANGEJBCHANGEMOVSI+1,AL;插入該學(xué)生成績(jī)JMPDONECHANGE: MOVBL,SI;把表中成績(jī)后移MOVSI+1,BLDEC SILOOPCMPBLKDONE:MOVAX, 4C00HINT21HCODEENDSENDSTART3.11 已知數(shù)組A中包含15個(gè)互不相等的整數(shù),數(shù)據(jù)B中包含20個(gè)互不相等的整數(shù),試編寫一程序,將即在A數(shù)組中出現(xiàn)又在B數(shù)組中出現(xiàn)的整數(shù)存放于數(shù)組C中。解:DATASEGMENTADB1,3,5,7,9,12,15,25,35,36,37,40,42,46,57BDB3,

24、5,9,12,25,36,37,42,57,58,60,4,8,11,17,29,33,44,55,66CDB 20 DUP (0)DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXMOVES, AXLEASI, ALEABX, CMOVCX, 15CLDCMPAB:LODSB;從數(shù)組A中取出一個(gè)數(shù)LEADI, BPUSH CXMOVCX, 20REPNZ SCASB;與數(shù)組B中的元素比較JNZLOP;數(shù)據(jù)不同,比較下一個(gè)數(shù)MOVBX,AL;數(shù)據(jù)相同,則保存在數(shù)組C中INCBXLOP:POPCXLOOPCM

25、PABEXIT:MOVAX, 4C00HINT21HCODEENDSENDSTART3.12 在某子程序的開始處要保護(hù)標(biāo)志寄存器Flags、AX、BX、CX、DX寄存器的內(nèi)容,在子程序結(jié)束時(shí)要恢復(fù)它們的內(nèi)容。例如:PUSHFPUSHAXPUSHBXPUSHCXPUSHDX;恢復(fù)現(xiàn)場(chǎng)試寫出恢復(fù)現(xiàn)場(chǎng)時(shí)的指令序列。解:POP DXPOP CXPOPBXPOPAXPOPF3.13 什么叫主程序與子程序之間傳遞參數(shù)?實(shí)現(xiàn)參數(shù)傳遞一般有哪幾種方法?每種方法的適用場(chǎng)合?解:3.14 簡(jiǎn)述嵌套調(diào)用和遞歸調(diào)用的不同。解:3.15 在以BLOCK為首地址處存放100個(gè)無符號(hào)字節(jié)數(shù)。試編寫一程序,求出該數(shù)組中的最大

26、數(shù)與最小數(shù)的差,并將其送入RESULT單元,要求調(diào)用子程序來完成對(duì)最大數(shù)和最小數(shù)的求解。解:DATASEGMENTBLOCKDB56,42,66,87,88,88,68,67,58,97,66,86,77COUNTEQU $-XXRESULTDB 0DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXMOVMIN, 100;假設(shè)最小的數(shù)MOVMAX, 0;假設(shè)最大的數(shù)LEASI, BLOCKMOVCX, COUNTCALLMAXMINSUBAH,ALMOVRESULT,AHEXIT:MOVAX, 4C00HINT21HMAXMINPROCMOVAH,0;存放大數(shù)MOVAL,255;存放小數(shù)AGAIN:MOVDL,SICMPAL,DLJBESKIP1MOVAL,DL;比預(yù)設(shè)最小值還小,保留SKIP1:CMPAH,DLJAESKIP2 MOVAH,DL;比預(yù)設(shè)最大值還大,保留SKIP2:INC SILOOP AGAINRETMAXMINENDPCODEENDSENDSTART3.16 某年級(jí)參加英語4級(jí)考試的有250名學(xué)生,試編寫一程序完成60-69,70-79,80-89,90-100四個(gè)分?jǐn)?shù)段的統(tǒng)計(jì)工作,要求用子程序完成每個(gè)分?jǐn)?shù)段的統(tǒng)計(jì)工作。解:DATASEGMENTBLOCKDB60,64,6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論