微機原理習題3_第1頁
微機原理習題3_第2頁
微機原理習題3_第3頁
微機原理習題3_第4頁
微機原理習題3_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、v1.0可編輯可修改習題33.1在以Block為首地址的字節(jié)單元中,存放了一個班級的學生考試成績。試編寫一程序,NUMBERS元,查表結果存利用學生的序號來查表得到該學生的成績,設學生的序號在入 RESULT元。解:DSEG SEGMENT19BLOCKDB 67,78,86,57,88,75,78,96,77,88,87,95,67,86,83,55NUMBER DB 9 ; 要顯示的16進制數字RESULT DB ;存放要顯示數字對應的七段碼DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS:DSEGSTART :MOV AX, DSEGMOV DS, AXM

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

3、NC BXLOOP AGAMOV AX, 4C00HINT 21HCSEG ENDSEND START3.3在當前數據段(DS,偏移地址為 GRAD開始的連續(xù)80個單元中,存放著某班 80個同 學某門考試成績。按要求編寫程序: 試編寫程序統(tǒng)計90分;80分89分;70分79分;60分69分,V 60分的人數各為多少,并將結果放在同一數據段、偏移地址為LEVEL開始的連續(xù)單元中。 試編寫程序,求該班這門課的平均成績?yōu)槎嗌伲⒎旁谠摂祿蔚腁VER單元中。解:DATASEGMENTGRADE DB80 DUP();運行前置入具體數據LEVELDB0;大于90LEVEL1DB0;80分89分LEVE

4、L2DB0;70分79分LEVEL3DB0;60分69分LEVEL4DB0; 各分支語句序歹y *FA:CALLPROCA;調用PROCA程序塊JMPEXIT;每個分支結束,都要用 JMP旨令跳轉到所有分支結束的地方FB:CALLPROCB;調用PROC程序塊JMPEXITFC:CALLPROCC;調用PROC程 序塊JMPEXITFD:CALLPROCD;調用PROC程序塊JMPEXITFE:CALLPROCE;調用PROC程序塊JMPEXITFF:CALLPROCF;調用PROC程序塊JMPEXITFG:CALLPROCG;調用PROC程 序塊JMPEXITFH:CALLPROCH;調用P

5、ROCH程序塊JMPEXITFI:CALLPROCI;調用PROCI程序塊JMP EXITFJ:CALL PROCJ ;調用 PROCJ程序塊JMP EXIT;最后一個分支結束,JMP可以省略EXIT:MOV AX, 4C00HINT 21HPROCA PROCLEA DX, MSGAMOV AH, 9INT 21HRETPROCA ENDPPROCB PROCLEA DX, MSGBMOV AH, 9INT 21HRETPROCB ENDPPROCC PROCLEA DX, MSGCMOV AH, 9INT 21HRETPROCC ENDPPROCD PROCLEA DX, MSGDMOV

6、AH, 9INT 21HRETPROCD ENDPPROCE PROCLEA DX, MSGEMOV AH, 9INT 21HRETPROCE ENDPPROCF PROCLEA DX, MSGFMOV AH, 9INT 21HRETPROCF ENDPPROCG PROCLEA DX, MSGGMOV AH, 9INT 21HRETPROCG ENDPPROCH PROCLEA DX, MSGHMOV AH, 9INT 21HRETPROCH ENDPPROCI PROCLEA DX, MSGIMOV AH, 9INT 21HRETPROCI ENDPPROCJ PROCLEA DX, MS

7、GJMOV AH, 9INT 21HRETPROCJ ENDPCODEENDSEND START(2)DATASEGMENTPROMPT DB 0DH, 0AH, INPUT A CHAR (AJ): $MSGA)B 0DH, 0AH, FUNCTION A EXECUTED . $MSGB)B 0DH, 0AH, FUNCTION B EXECUTED . $MSGCDB 0DH, OAH, FUNCTION C EXECUTED . $MSGODB ODH, OAH, FUNCTION D EXECUTED . $MSGEB ODH, OAH, FUNCTION E EXECUTED .

8、$MSGFDB ODH, OAH, FUNCTION F EXECUTED . $MSGCDB ODH, OAH, FUNCTION G EXECUTED . $MSGH5B ODH, OAH, FUNCTION H EXECUTED . $MSGIDB ODH, OAH, FUNCTION I EXECUTED . $MSGJDB ODH, OAH, FUNCTION J EXECUTED . $ADDTBL DW FA,FB,FC,FD,FE,FF,FG,FH,FI,FJ;DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, D

9、ATAMOV DS, AXINPUT:LEA DX, PROMPTMOV AH, 9INT 21H;輸出提示信息MOV AH, 1INT 21H;輸入一個數字CMP AL, AJB INPUT;不在AJ內,重新輸入CMP AL, JJA INPUT;不在AJ內,重新輸入SUB AL,A;將數字字符“ 1 ”至U “ 3”轉換為0, 1,2SHL AL, 1;轉換為 0, 2,4MOV BL, ALMOV BH, 0;轉入 BXJMP ADDTBLBX;間接尋址,轉移到對應程序塊FA:LEADX, MSGA ;FA 程序塊JMPOUTPUT;每個分支結束,都要用 JMP指令跳轉到所有分支結束的地

10、方FB:LEADX, MSGB ;FB 程序塊JMPOUTPUTFC:LEADX, MSGC ;FC 程序塊JMPOUTPUTFD:LEADX, MSGD ;FD 程序塊JMPOUTPUTFE:LEADX, MSGE ;FE 程序塊JMPOUTPUTFF:LEADX, MSGF ;FF 程序塊JMPOUTPUTFG:LEADX, MSGG ;FG 程序塊JMPOUTPUTFH:LEADX, MSGH ;FH 程序塊JMPOUTPUTFI:LEADX, MSGI ;FI 程序塊JMPOUTPUTFJ:LEADX, MSGJ ;FJ 程序塊JMPOUTPUT ;最后一個分支結束,JMP可以省略OU

11、TPUT:MOV AH, 9INT21H *各分支語句序列*v1.0可編輯可修改MOV AX, 4C00HINT 21HCODEENDSEND START找出三個數值居中3.8設在寄存器AX BX CX中存放的是16位無符號數,試編寫程序段, 的一個,并將其存入 BUFF字單元中。解:DATASEGMENTBUFF DW0DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV AX,5MOV BX,3MOV CX,6CMP AX,BXJA L1JZ L2L0: CMP AX,CX ;AXBXJAE

12、L4;AXCXL2: CMP BX,CXJBE L5JMP L6CMP BX,CXJAE L5;BXCMP AX,CXJA L6L4: MOV BUFF,AXJMP DONEL5: MOV BUFF,BXJMP DONEL6: MOV BUFF,CXDONE:MOV AX, 4C00HINT 21HCODEENDSEND START3.9編寫確定一個十進制數x(2 w x w 200)是否是素數(質數)的程序。解:DATASEGMENTx DB 12;x(2 w xw 200)FLAGDB 0;X 是素數,FLAG=1,否則 FLAG=0DATAENDSCODESEGMENTASSUME DS

13、: DATA, CS: CODESTART:MOV AX, DATAMOV DS, AXMOV BL,2MOV BH,XSHR BH,1 ;計算測試范圍MOV FLAG,1 ;先假設x為素數NEXT:MOV AL,XMOV AH,0DIV BLCMP AH,0 ;余數為0,說明不是素數,退出JZ NOINC BLCMP BL,BHJZ EXIT ;到測試邊界,退出JMP NEXTNO: MOV FLAG,0EXIT:MOV AX, 4C00HINT 21HCODEENDSEND START3.10在以BLOCK為首地址的數據區(qū)域按著從小到大的順序存放了一個年級(180人)學生的匯編語言成績表。

14、試編寫程序將分數82插入到該數組合適的位置。解:DATASEGMENTBLOCK DB 1,3,5,7,9,12,15,25,35,36,37,40,42,46,57 ;學生的成績表,可根據實際填寫ST DB 39 ;另外一個學生的成績DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATAMOV AX, DATAMOV DS, AXLEA SI, BLOCK+14 ;取成績表中最后一個學生成績的偏移地址給SIMOV CX, 15MOV AL, STCMPBLK: CMP AL, SI;要插入的學生成績比成績表中的成績小,則轉CHANGEJB CHANGEMOV

15、 SI+1,AL ;插入該學生成績JMP DONECHANGE: MOV BL,SI;把表中成績后移MOV SI+1,BLDEC SILOOPCMPBLKDONE:MOV AX, 4C00HINT 21HCODEENDSEND START試編寫3.11已知數組A中包含15個互不相等的整數,數據B中包含20個互不相等的整數,一程序,將即在 A數組中出現又在 B數組中出現的整數存放于數組C中。解:DATASEGMENTADB1,3,5,7,9,12,15,25,35,36,37,40,42,46,57BDB3,5,9,12,25,36,37,42,57,58,60,4,8,11,17,29,33,

16、44,55,66CDB20 DUP (0)DATAENDS23v1.0可編輯可修改CODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV ES, AXLEA SI, ALEA BX, CMOV CX, 15CLDCMPAB:LODSB;從數組A中取出一個數LEA DI, BPUSH CXMOV CX, 20REPNZ SCASB ;與數組B中的元素比較JNZ LOP ;數據不同,比較下一個數MOV BX,AL;數據相同,則保存在數組 C中INC BXLOP: POP CXLOOPCMPABEXIT:MOV AX,

17、4C00HINT 21HCODEENDSEND STARTFlags、AX BX CX DX寄存器的內容,在子程3.12在某子程序的開始處要保護標志寄存器 序結束時要恢復它們的內容。例如:PUSHFPUSHAXPUSHBXPUSHCXPUSHDX試寫出恢復現場時的指令序列。解:POPDXPOPCXPOPBXPOPAXPOPF3.13什么叫主程序與子程序之間傳遞參數實現參數傳遞一般有哪幾種方法每種方法的適用場合解:3.14簡述嵌套調用和遞歸調用的不同。解:3.15在以BLOCK為首地址處存放100個無符號字節(jié)數。試編寫一程序,求出該數組中的最大數與最小數的差,并將其送入 RESULT單元,要求調

18、用子程序來完成對最大數和最小數解:的求解。DATASEGMENTBLOCK DB56,42,66,87,88,88,68,67,58,97,66,86,77COUNT EQU $-XXRESULT DB 0DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV MIN, 100;假設最小的數MOV MAX, 0;假設最大的數LEA SI, BLOCKMOV CX, COUNTCALL MAXMINSUB AH,ALMOV RESULT,AHEXIT:MOV AX, 4C00HINT21HMAXMIN

19、 PROCMOV AH,0;存放大數MOV AL,255;存放小數AGAIN:MOV DL,SICMP AL,DLJBE SKIP1MOV AL,DL;比預設最小值還小,保留SKIP1:CMP AH,DLJAE SKIP2MOV AH,DL;比預設最大值還大,保留SKIP2:INC SILOOP AGAINRETMAXMIN ENDPCODEENDSEND START3.16某年級參加英語 4級考試的有250名學生,試編寫一程序完成60-69 , 70-79 , 80-89 ,90-100四個分數段的統(tǒng)計工作,要求用子程序完成每個分數段的統(tǒng)計工作。解:DATASEGMENTBLOCK DB 60,64,68,72,79,76,74,80,89,84,85,88,98,95,100 ;學生的成績表,可根據實際填寫COUNT60 DB0;存放成績在60-69的學生數COUNT70 DB0;存放成績在70-79的學生數COUNT80 DB0;存放成績在80-89的學生數COUNT90 DB0;存放成績在90-100的學生數DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV

溫馨提示

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

評論

0/150

提交評論