版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CH03匯編語(yǔ)言程序設(shè)計(jì)習(xí)題與思考題1 下列語(yǔ)句在存儲(chǔ)器中分別為變量分配多少字節(jié)空間?并畫(huà)出存儲(chǔ)空間的分配圖。VAR1 DB 10, 2VAR2 DW 5DUP(?) , 0VAR3 DB 'HOW ARE YOU', ' $3 DUP (1 , 2)VAR4 DD -1,1,0解答:字節(jié)空間-VAR1 : 2 ; VAR2 12 ; VAR3 19 ; VAR4 12。存儲(chǔ)空間的分配圖:DS: 00000A 02 00 000000000000000000000048 4F001057 20 41 524520594F553F2401020102 01002002 F
2、F FF _F_F00000。000000002 .假定VAR1和VAR2為字變量二LAB為標(biāo)號(hào),試指出下列指令的錯(cuò)誤之處。(1) ADD VAR1, VAR2(3) JMP LABCX(5) MOV1000H , 100(4)(2) SUB AL, VAR1JNZ VAR1(6) SHLAL , 4解答:A轉(zhuǎn) 目位(1)兩個(gè)操作數(shù)中至少有一個(gè)為寄存器;為字向的量用標(biāo)不匹配 ;CX號(hào);定;SHL指令中,當(dāng)所移位數(shù)超過(guò)1時(shí),必須用CL或CX來(lái)取代所移 數(shù)。3 .對(duì)于下面的符號(hào)定義,指出下列指令的錯(cuò)誤。A1DB ?A2DB 10K1 EQU1024(1) MOVK1,AX(2)MOVA1,AX3
3、3)CMPA1,A2(4)K1EQU2048解答:(1)K1為常量,不能用MOV旨令賦值;(2)A1為字節(jié),AX為字變量,不匹配;A1未定義,無(wú)法做比較指令;必須用 P U R G E !放K 1 重新賦值前4 .數(shù)據(jù)定義語(yǔ)句如下所示:FIRST DB 90H, 5FH, 6EH 69HSECOND DB 5 DUP(?)THIRD DB5 DUP(?)自FIRST單元開(kāi)始存放的是一個(gè)四字節(jié)的十六進(jìn)制數(shù)(低位字節(jié)在前),要求:編一段程序?qū)⑦@個(gè)數(shù)左移兩位后存放到自SECON開(kāi)始的單元,右移兩位后存放到自THIRD開(kāi)始的單元。(注意保留移出部分)解答:DATA SEGMENTFIRST DB90H
4、,5FH 6EH, 69HSECOND DB5 DUP(7)THIRD DB5DUP(7)DATA ENDSCODE SEGMENTASSUME CS CODE DS: DATASTART : MOV AX DATAMOV DS AXLEA SI , FIRSTLEA DI , SECONDMOVCX2CLC;左移2位MOV AX SIINC SIINC SIMOV DX SIPUSH DXPUSH AXROL DX CLAND DL03HMOV DI+4,DLROL AX? CLAND AL? 03HMOV BL,ALPOP AXPOP DXSHL DXCLSHL AX CLOR DL BL
5、MO DI ,AX二 MO DI+ 2,DX;右移2位,類(lèi)同左移的方法,略MOV AH4CHINT21HCODE ENDSEND START5 .(原14)在當(dāng)前數(shù)據(jù)區(qū)從400H開(kāi)始的256個(gè)單元中存放著一組數(shù)據(jù),試編程序?qū)⑺鼈冺樞虬嵋频綇?A000H開(kāi)始的順序256個(gè)單元中。解答:DATA SEGMENTORG 400HDAT1 DB .;256 DUP (?)ORG 0A000HDAT2 DB.;256 DUP(?)DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART
6、: MOV AX,DATAMOV DS,AX ;CH3-14LEA SI,DAT1LEA DI,DAT2MOV CX,128AGAIN: MOV AL,SI MOV DI,AL INC SI INC DI LOOP AGAIN;CH3-15,將兩個(gè)數(shù)據(jù)塊逐個(gè)單元進(jìn)行比較,若有錯(cuò)BL=00H否則BL=FFHLEASI,DAT1LEA DI,DAT2 MOV CX,128 NEXT: MOV AL,SIMOV BL,DI CMP AL,BL JNZERROR INC SI INC DI LOOP NEXTMOV BL,0FFH JMP EXIT ERROR: MOV BL,OOH EXIT: MO
7、V AX,4C00HINT21HCODE ENDS END START6 .試編程序?qū)?dāng)前數(shù)據(jù)區(qū)從BUFF開(kāi)始的4K個(gè)單元中均寫(xiě)入55H,并逐個(gè)單元讀出比較,看寫(xiě)入的與讀出的是否一致。若全對(duì),則將ERR單元置0H;如果有錯(cuò),則將ERR單元置FFHo解答:DATA SEGMENTBUFFDB 1000H DUP(7)ERR DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX;將55H依次放入BUFF開(kāi)始的4K個(gè)單元LEA SI,BUFF MOV CX,1000HMOV AL,55HNTXT: MO
8、V SI,AL INC SILOOP NEXT;取出與55H比較,全對(duì)則ERR=0否則ERR=FFHLEA DI,BUFFLEA SI,ERRMOV CX,1000HNEXT1:MOV AL,DIINC DICMP AL,55HJNZ ERROR若有一個(gè)不同,即置ERR=FFHLOOP NEXT1MOV AL,OOHMOV SI,AL ;全比較完無(wú)錯(cuò),則置ERR=0JMP EXITERROR: MOV AL,0FFHMOV SI,AL;返回DOSEXIT:MOV AH,4CHINT21HCODE ENDSEND STARTEND7 在上題中,如果發(fā)現(xiàn)有錯(cuò)時(shí),要求在ERR單元中存放出錯(cuò)的數(shù)據(jù)個(gè)數(shù)
9、,則程序該如何修改?解答:DATA SEGMENTBUFFDB 1000H DUP(7)ERR DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX;將55H依次放入BUFF開(kāi)始的4K個(gè)單元LEA SI,BUFFMOV CX,1000HMOV AL,55HNTXT: MOV SI,AL INC SILOOP NEXT;取出與55H比較LEA DI,BUFFLEA SI,ERRMOV DX,0000HMOV CX,1000HNEXT1:MOV AL,DI INC DICMP AL,55HJZ NEXT
10、2 ;若相同,則比較下一個(gè)INC DX ;否則將放出錯(cuò)個(gè)數(shù)的DX加1NEXT2 LOOP NEXT1MOV SI,DXEXIT:MOV AH,4CHINT21HCODE ENDSEND STARTEND&試編寫(xiě)程序段,完成將數(shù)據(jù)區(qū)從0100H開(kāi)始的一串字節(jié)數(shù)據(jù)逐個(gè)從F0H端口輸出,已知數(shù)據(jù)串以0AH為結(jié)束符。(略)9. (原24)存中以FIRST和SECONDS始的單元中分別存放著兩個(gè)4位用壓縮BCD碼表示的十進(jìn)制數(shù),低位在前。編程序求這兩個(gè)數(shù)的和,仍用壓縮BCD碼表示,并存到以THIRD開(kāi)始的單元。 解答: DATA SEGMENT FIRST DW 3412H SECOND DW
11、7856H THIRD DB ?,?,? DATA ENDS STACK SEGMENTSTACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX LEA SI,FIRST LEA DI,SECOND LEA BX,THIRD MOV CX,2 CLCAGAIN: MOV AL,BYTE PTRSIMOV DL,BYTE PTRDIADC AL,DL DAA MOV BYTE PTRBX,AL INC SI INC DI INC BX LOOP AGAINJC AAMO
12、V BYTE PTRBX,0JMP EXITAA: MOV BYTE PTRBX,1EXIT: MOV AX,4C00HINT21HCODE ENDSEND START10. (原27)設(shè)字變量單元A B、C存放有三個(gè)數(shù),若三個(gè)數(shù)都不為零,則求三個(gè)數(shù)的和,存放在D 中;若有一個(gè)為零,則將其余兩個(gè)也清零,試編寫(xiě)程序。解答:DATA SEGMENTADB?BDB?CDB?DDW?DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXL
13、EA SI,ALEA DI,DMOV AL,SICMP AL,00JZZEROADC DX,ALLEA SI,BMOV AL,SICMP AL,00JZZEROADC DX,ALLEA SI,CMOV AL,SICMP AL,00JZZEROADC DX,ALMOV DI,DXJMP EXITZERO: MOV AL,0MOV A,ALMOV B,ALMOV C,ALEXIT: MOV AX,4C00HINT21HCODE ENDSEND START11. (16)試編程序,統(tǒng)計(jì)由TABLE開(kāi)始的128個(gè)單元中所存放的字符“ A”的個(gè)數(shù),并將結(jié)果存 放在DX中。解答:DATA SEGMENTT
14、ABLE DBX1,X2,.X128DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXLEA SUABLEMOV DX,0MOV CX,128AGAIN: MOV AL,SICMP AL,TVJNZ NEXTINC DXNEXT: INC SILOOP AGAINMOV AX,4C00HINT21HCODE ENDSEND START12. .試編制一個(gè)匯編語(yǔ)言程序, 求出首地址為DATA的1000個(gè)字?jǐn)?shù)組中的最小偶數(shù),并把它
15、存放于MIN單元中。(方法:利用書(shū)上排序的例題做相應(yīng)的修改即可,略)13. 在上題中,如果要求同時(shí)找出最大和最小的偶數(shù),并把它們分別存放于MAX和MIN單元中,試完成程序。解答:略(方法同第12題)。14. (28)在DATA字?jǐn)?shù)組中存放有100H個(gè)16位補(bǔ)碼數(shù),試編寫(xiě)一程序求它們的平均值,放在AX中,并求出數(shù)組中有多少個(gè)數(shù)小于平均值,將結(jié)果存于BX中。(略)(17)編寫(xiě)AL中。解15.一個(gè)子程序,對(duì)AL中的數(shù)據(jù)進(jìn)行偶校驗(yàn),并將經(jīng)過(guò)校驗(yàn)的結(jié)果放回答:DATA SEGMENTCOUNT EQU 7DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME
16、 DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXPUSH AXMOV DX,0MOV CX,COUNTAGAIN: RCR AL,1JNCLINC DXL: LOOP AGAINPOP AXTEST DX,01JZ EXITOR AL,80EXIT: MOV AX,4C00HINT21H;ANOTHER METHORDJP EXITOR AL,80HEXIT: MOV AX,4C00HINT21HCODE ENDSEND START16. (18)利用上題的予程序,對(duì)DATA開(kāi)始的256個(gè)單元的數(shù)據(jù)加上偶校驗(yàn),試編程序。解
17、答:DATA SEGMENTDATDB .;256 DUP (?)RESULT DB .;256 DUP (?)NUM EQU 256COUNT EQU 7DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,DATLEA DI,RESULTMOV CX,NUMNEXT: MOV AL,SICALL SUB1MOV DI,AL;MOV SI,ALINC SIINC DILOOP NEXTMOV AX,4C00HINT
18、21HSUB1 PROCPUSH AXMOV DX,0MOV CX,COUNTAGAIN: RCR AL,1JNCLINC DXL: LOOP AGAINPOP AXTEST DX,01JZQUITOR AL,80HQUIT: RETSUB1 ENDPCODE ENDSEND START17. (19)試編寫(xiě)程序?qū)崿F(xiàn)將鍵盤(pán)輸入的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母并輸出。解答:DATA SEGMENTMESS DB 'THE INPUT IS NOT CORRECT.',ODH,OAH;$'DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASS
19、UME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXNEXT: MOV AH,01HINT21HCMP AL,QJZ EXITCMP AL,'a'JB ERRORCMP AL,NJA ERRORSUB AL,20HMOV AH,02HMOV DL,ALINT21HJMP NEXTERROR: MOV AH,09HLEA DX,MESSINT21HJMP NEXTEXIT: MOV AX,4C00HINT21HCODE ENDSEND START18. 從鍵盤(pán)接收20個(gè)字符,按鍵入順序查找最大的字符,并顯示
20、輸出。解答:DATA SEGMENTDAT DB 20 DUP(7)DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AX;從鍵盤(pán)接收20個(gè)字符,并送DAT中保存LEA SI,DATMOV CX,20NEXT: MOV AH,01HINT21HMOV SI,ALINC SILOOP NEXT;比較20個(gè)字符中的最大字符,并放入AL中MOV CX.19LEA SI,DATMOV AL,SIINC SINEXT1:CMP AL,SIJ
21、AE LLMOV AL,SILL: INC SILOOP NEXT1;將最大的字符的ASCII碼由AL送DL顯示MOV DL,ALMOV AH,2HINT21H;返回DOSMOV AX,4C00HINT21HCODE ENDS END START19. (29)編寫(xiě)匯編程序,接收從鍵盤(pán)輸入的10個(gè)數(shù),輸入回車(chē)符表示結(jié)束,然后將這些數(shù)加密后存于buff緩沖區(qū)中。加密表為:輸入數(shù)字:0, 1,2,3,4,5,6,7,8,9;密碼數(shù)字:7,5,9,1,3, 6,8,0,2, 4解答:DATA SEGMENTBUFFDB 10 DUP(?)TABLE DB 7,5,9,1,3,6,8,0,2,4DAT
22、A ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AX 5LEA DI,BUFFNEXT: MOV AH,01HINT21H ;從鍵盤(pán)上接收單個(gè)字符CMP AL,0AH ;與OAH比,判是否要結(jié)束 JZ EXITSUB AL.30H ;否則,將09的ASCII碼轉(zhuǎn)換為十進(jìn)制數(shù)LEA BX,TABLEXLAT;用查表指令進(jìn)行加密MOV DI,ALINC DIJMP NEXT ;退出并返回DOSEXIT: MOV AX,4C00HINT21HCODE ENDS END START20. (23)有一個(gè)100個(gè)字節(jié)的數(shù)據(jù)表,表元素已按從大到小的順序排列好,現(xiàn)給定一元素,試編程序在表查找,若表已有此元素,則結(jié)束;否則,按順序?qū)⒋嗽夭迦氡碇羞m當(dāng)?shù)奈恢?,并修改表長(zhǎng)。 (略)21. (26)在當(dāng)前數(shù)據(jù)段(DS,偏移地址為DATAB開(kāi)始的順序80個(gè)單元中,存放著某班80個(gè)同學(xué)某門(mén) 考試成績(jī)。按要求編寫(xiě)程序: 編寫(xiě)程序統(tǒng)計(jì)90分;80分89分;70分79分;60分69分,V 60分的人數(shù)各 為多少,并將結(jié)果放在同一數(shù)據(jù)段、偏移地
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國(guó)能源建設(shè)集團(tuán)投資限公司校園招聘18人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)石化華北石油工程限公司畢業(yè)生招聘35人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電信研究院校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電信吉林通化分公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)國(guó)新招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中共贛州市委機(jī)構(gòu)編制委員會(huì)辦公室招募青年見(jiàn)習(xí)1人(江西)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年陜西西安職業(yè)技術(shù)學(xué)院招聘工作人員15人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年貴州安順市西秀區(qū)事業(yè)單位招聘不可人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年浙江嘉興市南湖區(qū)事業(yè)單位招聘37人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年江蘇南京林業(yè)大學(xué)教學(xué)科研崗招聘165人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 三級(jí)人工智能訓(xùn)練師(高級(jí))職業(yè)技能等級(jí)認(rèn)定考試題及答案
- 2024年新教材七年級(jí)語(yǔ)文上冊(cè)古詩(shī)文默寫(xiě)(共100題含答案)
- 2024-2030年中國(guó)工業(yè)母機(jī)行業(yè)市場(chǎng)發(fā)展分析及發(fā)展前景與投資研究報(bào)告
- 城市燃?xì)夤?yīng)和儲(chǔ)備站項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 浙江省杭州市學(xué)軍中學(xué)2025屆高三最后一模物理試題含解析
- 四川省成都市錦江區(qū)嘉祥外國(guó)語(yǔ)學(xué)校2024-2025學(xué)年九年級(jí)上學(xué)期入試考試數(shù)學(xué)試題
- 2024-2030年中國(guó)壓電薄膜傳感器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 期末試卷(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 新外研版高中英語(yǔ)必修1單詞正序英漢互譯默寫(xiě)本
- 媒介審判完整版本
- 水生生物學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年寧波大學(xué)
評(píng)論
0/150
提交評(píng)論