微機(jī)原理習(xí)-題-3_第1頁
微機(jī)原理習(xí)-題-3_第2頁
微機(jī)原理習(xí)-題-3_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余15頁可下載查看

下載本文檔

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

文檔簡介

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

2、MOV BX, 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 LPIN

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

4、EVEL1DB0;80分 89分LEVEL2DB0;70分 79分LEVEL3DB0;60分 69分LEVEL4DB0V 60分AVERDB?DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXLEA SI, GRADEMOV DX,0MOV CX, 80AGAIN: MOV AL, SICMP AL, 59;分段測(cè)試JAL1L0:INC LEVEL4JMPNEXTL1:CMP AL, 69JAL2INCLEVEL3JMPNEXTL2:CMP AL, 79JAL3INCLEVEL2JMPNEXTL3:C

5、MP AL, 89JAL4INCLEVEL1JMPNEXTL4: INC LEVELNEXT:ADD SI, 1ADD DL,AL;求累加和ADCDH,0LOOPAGAINMOVAX,DXMOVBL,80DIVBLMOVAVER,ALEXIT: MOV AX, 4C00HINT21HCODE ENDSEND START試編寫程序?qū)?shù)3.4 在以字節(jié)變量 ARRAY 為首地址的內(nèi)存區(qū)域存儲(chǔ)了一組帶符號(hào)的數(shù)據(jù), 據(jù)組的所有正數(shù)相加,并將和送入SUM 字單元。解:DATA SEGMENTARRAY DB 12,-67,44,67,-35,66,55,-98,87,-87,33,83COUNT EQU

6、 $-ARRAYSUM DW ? ;SUM 存放累加和DATA ENDSCODE SEGMENTASSUME DS: DATA, CS: CODESTART: MOV AX, DATAMOV DS, AXMOV BX, 0 ;BX 是數(shù)組元素在數(shù)組內(nèi)的位移 ,初值 0MOV CX, COUNTMOV DX, 0ONE: MOV AL,ARRAYBXCMP AL,0JLE NEXTCBWADD DX,AX ;NEXT: INC BXLOOP ONE MOV SUM, DXMOV AX, 4C00H INT 21HCODE ENDSEND START;裝載循環(huán)計(jì)數(shù)器的初始值;累加器 AX 清零;修

7、改 BX 的值 ,為下一次操作做準(zhǔn)備 ;計(jì)數(shù)循環(huán) ;保存結(jié)果(累加和)XX 單元開始的3.5 若某班有 50 名學(xué)生,考匯編語言課程,且所有考生的成績都已存放自 內(nèi)存區(qū)中,試編寫一程序找出最高分和最低分。解: DATA SEGMENTXX DB50 DUP(?);運(yùn)行前置入具體數(shù)據(jù)COUNTEQU $-XXMINDB ?MAX DB ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV MIN, 100MOV MAX, 0LEA SI, XXMOV CX, COUNTAGAIN: MOV A

8、L, SICMP AL, MINJAE SKIP1MOV MIN, ALSKIP1: CMP AL, MAXJBE SKIP2MOV MAX, ALSKIP2: INC SILOOP AGAINEXIT: MOV AX, 4C00HINT 21HCODE ENDS;假設(shè)最小的數(shù);假設(shè)最大的數(shù);比預(yù)設(shè)最小值還小,保留;比預(yù)設(shè)最大值還大,保留END START3.6 在首地址為 ARRAY 為首地址的內(nèi)存區(qū)域里,存放了一組帶符號(hào)的數(shù)據(jù),試編寫程序分 別統(tǒng)計(jì)零、正數(shù)和負(fù)數(shù)的個(gè)數(shù),統(tǒng)計(jì)結(jié)果分別存放在ZZ、XX、YY 中。解:DATA SEGMENTARRAY DB56,-42,66,87,0,88,-

9、88,68,0,-67,58,97,-66,86,77;運(yùn)行前置入具體數(shù)據(jù)COUNT EQU$-ARRAYXXDB0; 正數(shù)的個(gè)數(shù)YYDB0;0的個(gè)數(shù)ZZDB0;負(fù)數(shù)的個(gè)數(shù)DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXLEASI, ARRAYMOV CX, COUNTAGAIN:MOV AL, SICMP AL, 0;分段測(cè)試JGEL1L0:INCZZJMPNEXTL1:JGL2INCYYJMPNEXTL2:INC XXNEXT:ADD SI, 1LOOPAGAINEXIT:MOV AX, 4C0

10、0HINT21HCODE ENDSEND START3.7設(shè)有一個(gè)管理軟件可接受十個(gè)鍵盤命令(分別是A、B、C,,J),執(zhí)行這十個(gè)命令的程序入口地址分別是 PROCA、PROCB、PROCC,,PROCJ。編寫一程序從鍵盤上接 收命令,并轉(zhuǎn)去執(zhí)行相應(yīng)的程序。要求分別用以下兩種方式來實(shí)現(xiàn):( 1)用比較轉(zhuǎn)移指令( 2)用地址表法解:( 1)DATA SEGMENTPROMPTDB0DH, 0AH, INPUT A CHAR (AJ): $MSGADB0DH, 0AH, FUNCTION A EXECUTED. $MSGBDB0DH, 0AH, FUNCTION B EXECUTED. $MSGC

11、DB0DH, 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, FUNCTION I EXECUTED .$MSGJDB 0DH, 0AH, FUNCTION J EXECUTED .

12、 $DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXINPUT: LEA DX, PROMPTMOV AH, 9INT 21H;輸出提示信息MOV AH, 1INT 21H;輸入一個(gè)數(shù)字.* 開始測(cè)試條件*CMP AL, A JB INPUT JE FA CMP AL, B JE FB CMP AL, C JE FC CMP AL, D JE FD CMP AL, E JE FE CMP AL, F JE FF CMP AL, G JE FG CMP AL, H JE FH CMP AL, I

13、 JE FI CMP AL, J JE FJ不在AJ內(nèi)重新輸入;字符 A, 轉(zhuǎn) FA;字符 B, 轉(zhuǎn) FB; 字符 C, 轉(zhuǎn) FC;字符 D, 轉(zhuǎn) FD;字符 E, 轉(zhuǎn) FE; 字符 F, 轉(zhuǎn) FF;字符 G, 轉(zhuǎn) FG;字符 H, 轉(zhuǎn) FH;字符 I, 轉(zhuǎn) FI;字符J,轉(zhuǎn)FJJMP INPUT大于J,重新輸入.*J各分支語句序列 *FA:CALLPROCA;調(diào)用 PROCA 程序塊JMPEXIT;每個(gè)分支結(jié)束,都要用 JMP 指令跳轉(zhuǎn)到所有分支結(jié)束的地方FB:CALLPROCB;調(diào)用 PROCB 程序塊JMPEXITFC:CALLPROCC;調(diào)用 PROCC 程序塊JMPEXITFD:CA

14、LLPROCD;調(diào)用 PROCD 程序塊JMPEXITFE:CALL PROCE ;調(diào)用 PROCE 程序塊 JMP EXITFF:CALL PROCF ;調(diào)用 PROCF 程序塊JMP EXITFG:CALL PROCG ;調(diào)用 PROCG 程序塊JMP EXITFH:CALL PROCH ;調(diào)用 PROCH 程序塊JMP EXITFI:CALL PROCI ;調(diào)用 PROCI 程序塊JMP EXITFJ:CALL PROCJ ;調(diào)用 PROCJ 程序塊JMP EXIT;最后一個(gè)分支結(jié)束, JMP 可以省略EXIT:MOV AX, 4C00HINT 21HPROCAPROCLEADX, MS

15、GAMOV AH, 9INT21HRETPROCAENDPPROCBPROCLEADX, MSGBMOV AH, 9INT21HRETPROCBENDPPROCCPROCLEADX, MSGCMOV AH, 9INT21HRETPROCCENDPPROCDPROCLEADX, MSGDMOV AH, 9INT21HRETPROCDENDPPROCE PROCLEA DX, MSGE MOV AH, 9INT 21HRETPROCE ENDPPROCF PROCLEA DX, MSGF MOV AH, 9INT 21HRETPROCF ENDPPROCG PROCLEA DX, MSGG MOV

16、 AH, 9INT 21HRETPROCG ENDPPROCH PROCLEA DX, MSGH MOV AH, 9INT 21HRETPROCH ENDPPROCI PROCLEA DX, MSGI MOV AH, 9INT 21HRETPROCI ENDPPROCJ PROCLEA DX, MSGJ MOV AH, 9INT 21HRETPROCJ ENDPCODE ENDSEND START(2)DATA SEGMENTPROMPTDB0DH, 0AH, INPUT A CHAR (AJ): $MSGADB0DH, 0AH, FUNCTION A EXECUTED. $MSGBDB0DH

17、, 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, FUNCTION I EXECUTED .$MSGJD

18、B0DH, 0AH, FUNCTION J EXECUTED .$ADDTBL DWFA,FB,FC,FD,FE,FF,FG,FH,FI,FJ;DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXINPUT: LEA DX, PROMPTMOV AH, 9INT 21H;輸出提示信息MOV AH, 1INT 21H;輸入一個(gè)數(shù)字CMP AL, AJB INPUT不在AJ內(nèi)重新輸入CMP AL, JJA INPUT;不在 AJ 內(nèi) ,重新輸入SUB AL,A將數(shù)字字符“ T到“ 3”轉(zhuǎn)換為0,1,2

19、SHL AL, 1;轉(zhuǎn)換為 0, 2,4MOV BL, ALMOV BH, 0;轉(zhuǎn)入 BXJMP ADDTBLBX;間接尋址,轉(zhuǎn)移到對(duì)應(yīng)程序塊.*J 各分支語句序列 *FA:LEADX, MSGA;FA 程序塊JMPOUTPUT ;每個(gè)分支結(jié)束,都要用FB:LEADX, MSGB ;FB 程序塊JMPOUTPUTFC:LEADX, MSGC ;FC 程序塊JMPOUTPUTFD:LEADX, MSGD ;FD 程序塊JMPOUTPUTJMP 指令跳轉(zhuǎn)到所有分支結(jié)束的地方FE:LEAJMPDX, MSGEOUTPUT;FE 程序塊FF:LEADX, MSGF ;FF 程序塊JMPOUTPUTFG

20、:LEADX, MSGG;FG 程序塊JMPOUTPUTFH:LEADX, MSGH;FH 程序塊JMPOUTPUTFI:LEADX, MSGI ;FI程序塊JMPOUTPUTFJ:LEADX, MSGJ ;FJ 程序塊JMPOUTPUT;最后一個(gè)分支結(jié)束,OUTPUT:MOV AH, 9INT21HJMP 可以省略MOV AX, 4C00HINT 21HCODE ENDSEND START3.8 設(shè)在寄存器 AX,BX,CX 中存放的是 16 位無符號(hào)數(shù),試編寫程序段,找出三個(gè)數(shù)值居 中的一個(gè),并將其存入 BUFF 字單元中。解:DATA SEGMENTBUFF DW 0DATA ENDSC

21、ODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV AX,5MOV BX,3MOV CX,6CMP AX,BXJAL1JZL2L0:CMPAX,CX ;AXBXJAEL4;AXCXL2:CMPBX,CXJBEL5JMPL6L1:CMPBX,CXJAEL5;BXCMPAX,CXJAL6L4:MOVBUFF,AXJMPDONEL5:MOVBUFF,BXJMPDONEL6:MOVBUFF,CXDONE: MOV AX, 4C00HINT 21HCODE ENDSEND START3.9編寫確定一個(gè)十進(jìn)制數(shù) x(2w

22、xw 200)是否是素?cái)?shù)(質(zhì)數(shù))的程序。解:DATA SEGMENTx DB 12;x(2w xw200)FLAGDB 0;X 是素?cái)?shù), FLAG=1, 否則 FLAG=0DATA ENDSCODE SEGMENTASSUME DS: DATA, CS: CODESTART: MOV AX, DATAMOV DS, AXMOV BL,2MOV BH,XSHR BH,1 ;計(jì)算測(cè)試范圍MOV FLAG,1 ;先假設(shè) x 為素?cái)?shù)NEXT: MOV AL,XMOV AH,0DIV BLCMP AH,0 ;余數(shù)為 0,說明不是素?cái)?shù),退出JZ NOINC BLCMP BL,BHJZ EXIT ;到測(cè)試邊

23、界,退出JMP NEXTNO: MOV FLAG,0EXIT: MOV AX, 4C00HINT 21HCODE ENDSEND START3.10 在以 BLOCK 為首地址的數(shù)據(jù)區(qū)域按著從小到大的順序存放了一個(gè)年級(jí)( 180人)學(xué)生 的匯編語言成績表。試編寫程序?qū)⒎謹(jǐn)?shù) 82插入到該數(shù)組合適的位置。解:DATA SEGMENTBLOCK DB 1,3,5,7,9,12,15,25,35,36,37,40,42,46,5學(xué)7 生; 的成績表,可根據(jù)實(shí)際填寫 ST DB 39 ;另外一個(gè)學(xué)生的成績DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTAR

24、T:MOV AX, DATAMOV DS, AXLEA SI, BLOCK+14 ;取成績表中最后一個(gè)學(xué)生成績的偏移地址給SIMOV CX, 15MOV AL, STCMPBLK: CMP AL, SI ;要插入的學(xué)生成績比成績表中的成績小,則轉(zhuǎn)CHANGEJB CHANGEMOV SI+1,AL ;插入該學(xué)生成績JMP DONECHANGE: MOV BL,SI;把表中成績后移MOV SI+1,BLDEC SILOOP CMPBLKDONE: MOV AX, 4C00HINT 21HCODE ENDSEND START3.11 已知數(shù)組 A 中包含 15 個(gè)互不相等的整數(shù),數(shù)據(jù) B 中包含

25、20 個(gè)互不相等的整數(shù),試編 寫一程序,將即在 A 數(shù)組中出現(xiàn)又在 B 數(shù)組中出現(xiàn)的整數(shù)存放于數(shù)組 C 中。解:DATA SEGMENTA DB 1,3,5,7,9,12,15,25,35,36,37,40,42,46,57B DB 3,5,9,12,25,36,37,42,57,58,60,4,8,11,17,29,33,44,55,66C DB 20 DUP (0)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV ES, AXLEA SI, ALEA BX, CMOV CX, 15CL

26、DCMPAB:LODSB;從數(shù)組 A 中取出一個(gè)數(shù)LEA DI, BPUSH CXMOV CX, 20REPNZ SCASB ;與數(shù)組 B 中的元素比較JNZ LOP ;數(shù)據(jù)不同,比較下一個(gè)數(shù)MOV BX,AL ;數(shù)據(jù)相同,則保存在數(shù)組 C 中INC BXLOP: POP CXLOOP CMPABEXIT: MOV AX, 4C00HINT 21HCODE ENDSEND START3.12 在某子程序的開始處要保護(hù)標(biāo)志寄存器Flags、AX 、BX 、CX、DX 寄存器的內(nèi)容,在子程序結(jié)束時(shí)要恢復(fù)它們的內(nèi)容。例如:PUSHFPUSHAXPUSHBXPUSHCXPUSHDX;恢復(fù)現(xiàn)場(chǎng)試寫出恢復(fù)

27、現(xiàn)場(chǎng)時(shí)的指令序列。 解:POP DXPOP CXPOP BXPOP AXPOPF3.13 什么叫主程序與子程序之間傳遞參數(shù)?實(shí)現(xiàn)參數(shù)傳遞一般有哪幾種方法?每種方法的 適用場(chǎng)合?解:3.14 簡述嵌套調(diào)用和遞歸調(diào)用的不同。解:3.15 在以 BLOCK 為首地址處存放 100個(gè)無符號(hào)字節(jié)數(shù)。試編寫一程序,求出該數(shù)組中的最 大數(shù)與最小數(shù)的差,并將其送入 RESULT 單元,要求調(diào)用子程序來完成對(duì)最大數(shù)和最 小數(shù)的求解。解:DATA SEGMENTBLOCK DB 56,42,66,87,88,88,68,67,58,97,66,86,77COUNT EQU $-XX RESULT DB 0DATA

28、 ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV MIN, 100;假設(shè)最小的數(shù)MOV MAX, 0;假設(shè)最大的數(shù)LEA SI, BLOCKMOV CX, COUNTCALL MAXMINSUB AH,ALMOV RESULT,AHEXIT:MOV AX, 4C00HINT 21HMAXMIN PROCMOV AH,0;存放大數(shù)MOV AL,255;存放小數(shù)AGAIN: MOV DL,SICMP AL,DLJBE SKIP1MOV AL,DL;比預(yù)設(shè)最小值還小,保留SKIP1:CMP AH,DLJAE SKIP2MOV AH,DL;比預(yù)設(shè)最大值還大,保留SKIP2: INC SILOOP AGAINRETMAXMIN ENDPCODEENDSEND START3.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ì)

溫馨提示

  • 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. 人人文庫網(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)論