![匯編第六章答案_第1頁](http://file4.renrendoc.com/view/10aa0662780ba2a7b5909a6bc1ebd592/10aa0662780ba2a7b5909a6bc1ebd5921.gif)
![匯編第六章答案_第2頁](http://file4.renrendoc.com/view/10aa0662780ba2a7b5909a6bc1ebd592/10aa0662780ba2a7b5909a6bc1ebd5922.gif)
![匯編第六章答案_第3頁](http://file4.renrendoc.com/view/10aa0662780ba2a7b5909a6bc1ebd592/10aa0662780ba2a7b5909a6bc1ebd5923.gif)
![匯編第六章答案_第4頁](http://file4.renrendoc.com/view/10aa0662780ba2a7b5909a6bc1ebd592/10aa0662780ba2a7b5909a6bc1ebd5924.gif)
![匯編第六章答案_第5頁](http://file4.renrendoc.com/view/10aa0662780ba2a7b5909a6bc1ebd592/10aa0662780ba2a7b5909a6bc1ebd5925.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——匯編第六章答案第六章答案
=======================================1.下面的程序段有錯嗎?若有,請指出錯誤.CRAYPROCPUSHAXADDAX,BXRET
ENDPCRAY
[解]:當然有錯誤,ENDPCRAY寫反了,應當將其改成CRAYENDP.
2.已知堆棧寄放器SS的內(nèi)容是0F0A0H,堆棧指示器SP的內(nèi)容是00B0H,先執(zhí)行兩條把8057H和0F79BH分別入棧的PUSH指令.然后再執(zhí)行一POP指令.試畫出示意圖說明堆棧及SP內(nèi)容的變化過程.
3.分析下面\的程序\畫出堆棧最滿時各單元的地址及內(nèi)容.;6.3題的程序
;===========================================S_SEGSEGMENTAT1000H;DEFINESTACKSEGMENTDW200DUP(?)TOSLABELWORD
S_SEGENDS
C_SEGSEGMENT;DEFINECODESEGMENTASSUMECS:C_SEG,SS:S_SEGMOVAX,S_SEGMOVSS,AX
MOVSP,OFFSETTOSPUSHDSMOVAX,0PUSHAX...
PUSHT_ADDRPUSHAXPUSHF...POPFPOPAX
POPT_ADDRRET
C_SEGENDS;ENDOFCODESEGMENTENDC_SEG;ENDOFASSEMBLY
4.分析下面\題的程序\的功能,寫出堆棧最滿時各單元的地址及內(nèi)容.;6.4題的程序
;====================================STACKSEGMENTAT500HDW128DUP(?)TOSLABELWORDSTACKENDS
CODESEGMENT;DEFINECODESEGMENTMAINPROCFAR;MAINPARTOFPROGRAM
ASSUMECS:CODE,SS:STACK
START:;STARTINGEXECUTIONADDRESSMOVAX,STACKMOVSS,AX
MOVSP,OFFSETTOSPUSHDSSUBAX,AXPUSHAX
;MAINPARTOFPROGRAMGOESHEREMOVAX,4321HCALLHTOA
RET;RETURNTODOS
MAINENDP;ENDOFMAINPARTOFPROGRAMHTOAPROCNEAR;DEFINESUBPROCEDUREHTOACMPAX,15JLEB1PUSHAXPUSHBPMOVBP,SP
MOVBX,[BP+2]ANDBX,000FHMOV[BP+2],BXPOPBPMOVCL,4SHRAX,CLCALLHTOAPOPAXB1:
ADDAL,30HCMPAL,3AHJLPRINTITADDAL,07HPRINTIT:MOVDL,ALMOVAH,2INT21HRET
HTOAENDP;ENDOFSUBPROCEDURECODEENDS;ENDOFCODESEGMENTENDSTART;ENDOFASSEMBLY
5.下面是6.5題的程序清單,請在清單中填入此程序執(zhí)行過程中的堆棧變化.0000STACKSGSEGMENT000020[.DW32DUP(?)????
0040]
STACKSGENDS
0000CODESGSEGMENTPARA'CODE'0000BEGINPROCFAR
ASSUMECS:CODESG,SS:STACKSG00001EPUSHDS00012BC0SUBAX,AX000350PUSHAX
0004E80008RCALLP100007CBRET0008BEGINENDP0008B10PROC0008E8000CRCALLC10000BC3RET000CB10ENDP000CC10PROC000CC3RET000DC10ENDP000DCODESGENDSENDBEGIN
6.寫一段子程序SKIPLINES,完成輸出空行的功能.空行的行數(shù)在AX寄放器中.[解]:
SKIPLINESPROCNEARPUSHCXPUSHDXMOVCX,AX
NEXT:MOVAH,2MOVDL,0AHINT21HMOVAH,2MOVDL,0DHINT21HLOOPNEXTPOPDXPOPCX
RET
SKIPLINESENDP
7.設(shè)有10個學生的成績分別是76,69,81,90,73,88,99,63,100和80分.試編制一個子程序統(tǒng)計60-69,70-79,80-89,90-99和100分的人數(shù)并分別存放到S6,S7,S8,S9和S10單元中.DSEGSEGMENT
NUMDW76,69,84,90,73,88,99,63,100,80NDW10S6DW0S7DW0S8DW0S9DW0S10DW0DSEGENDSCODESEGMENTMAINPROCFAR
ASSUMECS:CODE,DS:DSEGSTART:PUSHDSSUBAX,AXPUSHAX
MOVAX,DSEGMOVDS,AXCALLSUB1RET
MAINENDP
SUB1PROCNEARPUSHAXPUSHBXPUSHCXPUSHSIMOVSI,0MOVCX,NNEXT:
MOVAX,NUM[SI]MOVBX,10DIVBLMOVBL,ALCBW
SUBBX,6SALBX,1INCS6[BX]ADDSI,2
LOOPNEXTPOPSIPOPCXPOPBXPOPAXRET
SUB1ENDPCODEENDSENDSTART(解法二)
datasgsegment
gradedb76,69,84,90,73,88,99,63,100,80s6db0s7db0s8db0s9db0s10db0
mess6db'60~69:$'mess7db'70~79:$'mess8db'80~89:$'mess9db'90~99:$'mess10db'100:$'datasgendscodesgsegmentmainprocfar
assumecs:codesg,ds:datasgstart:
pushdssubax,axpushax
movax,datasgmovds,axcallsub1
leadx,mess6calldispstrmovdl,s6
calldispscorecallcrlf
leadx,mess7calldispstrmovdl,s7
calldispscore
callcrlf
leadx,mess8calldispstrmovdl,s8
calldispscorecallcrlf
leadx,mess9calldispstrmovdl,s9
calldispscorecallcrlf
leadx,mess10calldispstrmovdl,s10
calldispscorecallcrlfretmainendp
sub1procnearmovcx,10movsi,0
loop1:moval,grade[si]cmpal,60jlnext5cmpal,70jgenext1incs6
jmpshortnext5next1:cmpal,80jgenext2incs7
jmpshortnext5next2:cmpal,90jgenext3incs8
jmpshortnext5next3:cmpal,100jgnext5jenext4incs9
jmpshortnext5next4:incs10next5:incsi
looploop1retsub1endpdispstrprocnearmovah,9int21hdispstrendpdispscoreprocnearadddl,30hmovah,2int21hdispscoreendpcrlfprocnearmovdl,0dhmovah,2int21hmovdl,0ahmovah,2int21hretcrlfendpcodesgendsendstart
8.編寫一個有主程序和子程序結(jié)構(gòu)的程序模塊.子程序的參數(shù)是一個N字節(jié)數(shù)組的首地址TABLE,數(shù)N及字符CHAR.要求在N字節(jié)數(shù)組中查找字符CHAR,并記錄該字符的出現(xiàn)次數(shù).;主程序則要求從鍵盤接收一串字符以建立字節(jié)數(shù)組TABLE,并逐個顯示從鍵盤輸入的每個字符CHAR以及它在TABLE數(shù)組中出現(xiàn)的次數(shù).(為簡化起見,假設(shè)出現(xiàn)次數(shù)COUNTENDP
DISPLAYPROCNEAR;DISPLAY子程序CALLCRLF;顯示回車和換行MOVDL,CHARMOVAH,2INT21H
MOVDL,20HMOVAH,2INT21HMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLPRINTADDAL,7PRINT:MOVDL,ALINT21HCALLCRLFRET
DISPLAYENDP
CRLFPROCNEAR;CRLF子程序MOVDL,0DHMOVAH,2INT21H
MOVDL,0AHMOVAH,2INT21HRET
CRLFENDPCODEENDSENDSTART
9.編寫一個子程序嵌套結(jié)構(gòu)的程序模塊,分別從鍵盤輸入姓名及8個字符的電話號碼,并以一定的格式顯示出來.主程序TELIST:
(1)顯示提醒符INPUTNAME:;
(2)調(diào)用子程序INPUT_NAME輸入姓名:
(3)顯示提醒符INPUTATELEPHONENUMBER:;(4)調(diào)用子程序INPHONE輸入電話號碼;
(5)調(diào)用子程序PRINTLINE顯示姓名及電話號碼;子程序INPUT_NAME:
(1)調(diào)用鍵盤輸入子程序GETCHAR,把輸入的姓名存放在INBUF緩沖區(qū)中;(2)把INBUF中的姓名移入輸出行OUTNAME;
子程序INPHONE:
(1)調(diào)用鍵盤輸入子程序GETCHAR,把輸入的8位電話號碼存放在INBUF緩沖區(qū)中;(2)把INBUF中的號碼移入輸出行OUTPHONE.子程序PRINTLINE:
顯示姓名及電話號碼,格式為:NAMETEL
************
==========================================
;編寫一個子程序嵌套結(jié)構(gòu)的程序模塊,分別從鍵盤輸入姓名及8個字符的電話號碼,并以一定的格式顯示出來(解法一)
datasegment
No_of_namedb20No_of_phonedb8inbufdb20dup(?)
outnamedb20dup(?),'$'outphonedb8dup(?),'$'
message1db'pleaseinputname:','$'
message2db'pleaseinputatelephonenumber:','$'message3db'NAME',16dup(20h),'TEL.',13,10,'$'
errormessage1db'youshouldinput8numbers!',13,10,'$'errormessage2db'youinputawrongnumber!',13,10,'$'flagdb?dataendsprogsegmentmainprocfar
assumecs:prog,ds:datastart:
pushdssubax,axpushax
movax,datamovds,axmovflag,0leadx,message1movah,09int21hcallinput_namecallcrlf
leadx,message2movah,09int21hcallinphonecallcrlfcmpflag,1jeexitcallprintlineexit:
retmainendp
input_nameprocnearpushaxpushdxpushcx
movcx,0
movcl,No_of_namecallgetchar
movax,0
moval,No_of_namesubax,cx
movcx,axmovsi,0next1:
moval,inbuf[si]movoutname[si],alincsi
loopnext1popcxpopdxpopaxret
input_nameendp
inphoneprocnearpushaxpushdx
movcx,0
movcl,No_of_phonecallgetcharcmpcx,0jnzerror1
movcl,No_of_phonemovsi,0
next2:
moval,inbuf[si]
cmpal,30hjlerror2cmpal,39hjaerror2
movoutphone[si],alincsi
loopnext2jmpexit2error1:
callcrlf
leadx,errormessage1movah,09int21h
movflag,1jmpexit2error2:
callcrlf
leadx,errormessage2movah,09int21hmovflag,1jmpexit2exit2:
popdxpopaxretinphoneendpgetcharprocnearpushaxpushdxmovdi,0rotate:
movah,01int21hcmpal,0dhjeexit1movinbuf[di],alincdilooprotateexit1:
popdxpopaxretgetcharendpcrlfprocnearpushaxpushdxmovdl,0dhmovah,2int21hmovdl,0ahmovah,2int21h
popdxpopaxret
crlfendp
printlineprocnearpushaxpushdxleadx,message3movah,09int21h
leadx,outnamemovah,09int21h
leadx,outphonemovah,09int21h
popdxpopaxretprintlineendpprogendsendmain
==========================================
;從鍵盤輸入姓名及8個字符的電話號碼,并以一定的格式顯示出來datareasegment
inbuflabelbyte;nameparameterlist:maxnlendb9;max.length
namelendb?;no.charenterednameflddb9dup(?)crlfdb13,10,'$'
messg1db'INPUTNAME:',13,10,'$'
messg2db'INPUTATELEPHONENUMBER:',13,10,'$'messg3db'NAMETEL',13,10,'$'OUTNAMEdb21dup(?),'$'OUTPHONEdb8dup(?),'$'datareaendsprognamsegment
assumecs:prognam,ds:datareastart:pushdssubax,axpushax
movax,datarea
movds,axmoves,axTELISTprocfarmovah,09leadx,messg1int21h
callINPUT_NAMEmovah,09leadx,messg2int21hcallINPHONEcallPRINTLINEretTELISTendp
INPUT_NAMEprocnearcallGETCHARmovbh,0
movbl,namelenmovcx,21subcx,bx
b20:movnamefld[bx],20hincbxloopb20
leasi,namefldleadi,OUTNAMEmovcx,9cld
repmovsbretINPUT_NAMEendp
INPHONEprocnearcallGETCHARmovbh,0
movbl,namelenmovcx,9subcx,bx
b30:movnamefld[bx],20hincbxloopb30
leasi,namefldleadi,OUTPHONEmovcx,8cld
repmovsb
retINPHONEendp
PRINTLINEprocnearmovah,09hleadx,messg3int21hmovah,09
leadx,OUTNAMEint21hmovah,09
leadx,OUTPHONEint21hretPRINTLINEendp
GETCHARprocnearmovah,0ahleadx,inbufint21hmovah,09leadx,crlfint21hretGETCHARendpprognamendsendstart
==========================================
10.編寫子程序嵌套結(jié)構(gòu)的程序,把整數(shù)分別用二進制和八進制形式顯示出來.主程序BANDO:把整數(shù)字變量VAL1存入堆棧,并調(diào)用子程序PAIRS;子程序PAIRS:從堆棧中取出VAL1;調(diào)用二進制顯示程序OUTBIN顯示出與其等效的二進制數(shù);輸出8個空格;調(diào)用八進制顯示程序OUTOCT顯示出與其等效的八進制數(shù);調(diào)用輸出回車及換行符的子程序..modelsmall.stack100h.data
val1dw0ffffh.code
mainprocfarstart:pushdssubax,axpushax
movax,@datamovds,axpushval1
callpairsret
mainendp
pairsprocnearpushbpmovbp,s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- it服務合同范本
- 關(guān)于企業(yè)勞務合同范例
- 共同征土地合同范本
- 安防監(jiān)控系統(tǒng)維保方案合同范本
- 2025年度會議參會人員住宿安排與接送服務合同
- 勞務合同范例用工合同寫
- 中介借貸合同范例
- 2025年度高速公路建設(shè)項目招標代理協(xié)議
- 公路養(yǎng)護技術(shù)咨詢合同范例
- 個人短租汽車合同范本
- 數(shù)據(jù)中心運維服務投標方案(技術(shù)標)
- 2025江蘇連云港市贛榆城市建設(shè)發(fā)展集團限公司招聘工作人員15人高頻重點提升(共500題)附帶答案詳解
- 2025年全年日歷-含農(nóng)歷、國家法定假日-帶周數(shù)豎版
- 《東北大學宣傳》課件
- 社會主義從空想到科學的發(fā)展
- 《軌道交通工程盾構(gòu)施工技術(shù)》 課件 項目2 盾構(gòu)構(gòu)造認知
- 《傳統(tǒng)發(fā)酵饅頭酸菜》課件
- 《港珠澳大橋演講》課件
- 《有機化學》課件-第十章 羧酸及其衍生物
- 人教版道德與法治五年級下冊《第一單元 我們一家人》大單元整體教學設(shè)計2022課標
- 2024-2030年中國茶具行業(yè)市場競爭格局及未來發(fā)展趨勢預測報告
評論
0/150
提交評論