《匯編語(yǔ)言與接口技術(shù)》習(xí)題解答(第三章)_第1頁(yè)
《匯編語(yǔ)言與接口技術(shù)》習(xí)題解答(第三章)_第2頁(yè)
《匯編語(yǔ)言與接口技術(shù)》習(xí)題解答(第三章)_第3頁(yè)
《匯編語(yǔ)言與接口技術(shù)》習(xí)題解答(第三章)_第4頁(yè)
《匯編語(yǔ)言與接口技術(shù)》習(xí)題解答(第三章)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 習(xí)題3.10問(wèn)題:.畫(huà)圖說(shuō)明下列語(yǔ)句分配的存儲(chǔ)空間及初始化的數(shù)據(jù)值解答:()ABC1010hE,F(xiàn),-144441h42h43hOahlOh45h46hffh04h04h04h3個(gè)10h0FBhFFh10h56解:1;只允許輸入小寫(xiě)字母2轉(zhuǎn)換為大寫(xiě)字母;顯示8解:解: 解0:3.2編2制程序完成1等10個(gè)字節(jié)數(shù)據(jù)之和,并將結(jié)果存入字節(jié)變量中(不考慮溢出和進(jìn)位)。 # #;原始數(shù)據(jù);數(shù)據(jù)個(gè)數(shù);預(yù)留結(jié)果單元;位移量清零;取第一個(gè)數(shù);累加次數(shù);累加;指向下一個(gè)數(shù)a如未完,繼續(xù)累加,完了,存結(jié)果 #解0: 習(xí)題3.1解答:參考教材(第60頁(yè))習(xí)題3.6問(wèn)題:給出你采用一個(gè)源程序格式書(shū)寫(xiě)的例題3.1源

2、程序解答:.modelsmall.stack.datastringdbHello,Assembly!,0dh,0ah,$.codestart:movax,datamovds,axmovdx,offsetstringmovah,9int21hmovax,4c00hint21hendstart習(xí)題3.12解答:ORG偽指令習(xí)題3.13解答:段地址和偏移地址屬性,類(lèi)型屬性習(xí)題3.26問(wèn)題:過(guò)程定義的一般格式是怎樣的?子程序開(kāi)始為什么常有PUSH指令、返回前為什么常有POP指令?下面完成16位無(wú)符號(hào)數(shù)累加的子程序有什么不妥嗎?若有,請(qǐng)改正:解答:crazyPROC;crazyPROCpushax;xo

3、rax,ax;xorax,axxordx,dx;xordx,dxagain:addax,bx;again:addax,bxadcdx,0;adcdx,0incbx;incbxincbx;incbxloopagain;loopagainret;retENDPcrazy;crazyENDP字量求和子程序入口參數(shù):BX=數(shù)據(jù)首址。乂=數(shù)據(jù)個(gè)數(shù)出口參數(shù):人乂=和的低字。乂=和的高字(進(jìn)位部分)習(xí)題3.28問(wèn)題:請(qǐng)按如下說(shuō)明編寫(xiě)子程序:;子程序功能:把用ASCII碼表示的兩位十進(jìn)制數(shù)轉(zhuǎn)換為對(duì)應(yīng)二進(jìn)制數(shù);入口參數(shù):DH=+位數(shù)的ASCII碼,DL=(位數(shù)的ASCII碼;出口參數(shù):人1=對(duì)應(yīng)的二進(jìn)制數(shù)解答:

4、asctobprocpushcx;先轉(zhuǎn)換十位數(shù)anddh,0fhshldh,1;乘以10movch,dhshldh,1shldh,1adddh,ch;轉(zhuǎn)換個(gè)位數(shù)anddl,0fh;十位數(shù)加個(gè)位數(shù)adddh,dl;設(shè)置出口參數(shù)moval,dhpopcxretasctobendp習(xí)題3.341問(wèn)題:編寫(xiě)一個(gè)計(jì)算字節(jié)校驗(yàn)和的子程序。所謂“校驗(yàn)和”是指不記進(jìn)位的累加,常用于檢查信息的正確性。主程序提供入口參數(shù),有數(shù)據(jù)個(gè)數(shù)和數(shù)據(jù)緩沖區(qū)的首地址。子程序回送求和結(jié)果這個(gè)出口參數(shù)。傳遞參數(shù)方法自定。解答:;數(shù)據(jù)段arraydb12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90hc

5、ountequ$-array;數(shù)組元素個(gè)數(shù)resultdb?;校驗(yàn)和;代碼段(主程序)movbx,offsetarray;BX數(shù)組的偏移地址movcx,count;CX數(shù)組的元素個(gè)數(shù)callchecksum;調(diào)用求和過(guò)程movresult,al;處理出口參數(shù)習(xí)題3.342;代碼段(子程序);計(jì)算字節(jié)校驗(yàn)和的通用過(guò)程;入口參數(shù):DS:BX=數(shù)組的段地址:偏移地址。乂=元素個(gè)數(shù);出口參數(shù):AL=校驗(yàn)和;說(shuō)明:除AX/BX/CX外,不影響其他寄存器checksumprocxoral,al;累加器清0sum:addal,bx;求和incbx;指向下一個(gè)字節(jié)loopsumretchecksumendp習(xí)

6、題3.17已知用于LED數(shù)碼管的顯示代碼表為:LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0c1h,86h,8eh它依次表示09、AF這16個(gè)數(shù)碼的顯示代碼?,F(xiàn)編寫(xiě)一個(gè)程序?qū)崿F(xiàn)將lednum中的一個(gè)數(shù)字(09、AF)轉(zhuǎn)換成對(duì)應(yīng)的LED顯示代碼。解答;數(shù)據(jù)段LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0clh,86h,8ehlednumdb0ah;代碼段movbx,offsetLEDtablemoval,led

7、numxlat;al中存有對(duì)應(yīng)的LED顯示代碼習(xí)題3.21例題3.7中,如果要實(shí)現(xiàn)所有為1的位都順序執(zhí)行相應(yīng)的處理程序段(而不是例題中僅執(zhí)行最低為1位的處理程序段),請(qǐng)寫(xiě)出修改后的代碼段。解答;代碼段moval,numbermovbx,0;BX記錄為1的位數(shù)restart:cmpal,0;AL=0結(jié)束jzdoneagain:shral,1;最低位右移進(jìn)入CFjcnext;為1,轉(zhuǎn)移incbx;不為1,繼續(xù)jmpagainnext:pushaxpushbxshlbx,1;位數(shù)乘以2(偏移地址要用2個(gè)字節(jié)單元)jmpaddrsbx;間接轉(zhuǎn)移:IPtabIe+BX;以下是各個(gè)處理程序段fun0:mo

8、vdl,0jmpdispfun1:movdl,1jmpdispfun2:movdl,2jmpdispfun3:movdl,3jmpdispfun4:movdl,4jmpdispfun5:movdl,5jmpdispfun6:movdl,6jmpdispfun7:movdl,7jmpdispdisp:movah,2;顯示一個(gè)字符int21hpopbxpopaxjmprestartdone:習(xí)題3.24編寫(xiě)計(jì)算100個(gè)正整數(shù)之和的程序。如果和不超過(guò)16位字的范圍(65535),則保存其和到wordsum,如超過(guò)則顯示Overflow!。解答;數(shù)據(jù)段countequ100parraydwcountd

9、up(?);假設(shè)有100個(gè)數(shù)據(jù)wordsumdw0msgdboverflow,$;代碼段movcx,countmovax,0movbx,offsetparrayagain:addax,bxjncnextmovdx,offsetmsgmovah,9int21h;顯示溢出信息jmpdone;然后,跳出循環(huán)體next:addbx,2loopagainmovwordsum,axdone:習(xí)題3.25編程把一個(gè)16位無(wú)符號(hào)二進(jìn)制數(shù)轉(zhuǎn)換成為用8421BCD碼表示的5位十進(jìn)制數(shù)。轉(zhuǎn)換算法可以是:用二進(jìn)制數(shù)除以10000,商為“萬(wàn)位”,再用余數(shù)除以1000,得到“千位”;依次用余數(shù)除以100、10和1,得到“

10、百位”、“十位”和“個(gè)位”。解答;wjxt325.asm.modelsmall.stack256.dataarraydbcddw?;源字?jǐn)?shù)據(jù)db5dup(?);五位bcd結(jié)果,高對(duì)高低對(duì)低.code.startupmovdx,array;取源數(shù)據(jù)(余數(shù))movbx,10000;除數(shù)movcx,10;除數(shù)系數(shù)movsi,4;目的數(shù)據(jù)高位位移量again:movax,dx;dx.ax中存放被除數(shù)movdx,0divbx;除于bx,商ax,余數(shù)dxmovdbcdsi,al;商V10,存結(jié)果pushdx;暫存余數(shù)movax,bx;除數(shù)除于10movdx,0divcx;dx.ax除于ex,商ax、余數(shù)0

11、存在dxmovbx,ax;bx是除數(shù)popdxdecsi;目的數(shù)據(jù)位移量減1jnzagainmovdbcd,dl;存?zhèn)€位數(shù)(10).exit0end習(xí)題3.27編寫(xiě)一個(gè)源程序,在鍵盤(pán)上按一個(gè)鍵,將從AL返回的ASCII碼值顯示出來(lái),如果按下ESC鍵則程序退出。請(qǐng)調(diào)用書(shū)中的HTOASC子程序。解答again:movah,1int21hcmpal,1bh;ESC的ASCII碼是1bhjedonecallhtoascmovah,2int21hjmpagaindone:習(xí)題3.29調(diào)用HTOASC子程序,編寫(xiě)顯示一個(gè)字節(jié)的16進(jìn)制數(shù)、后跟“H”的子程序。解答DIPASCproc;入口參數(shù):AL=要顯示

12、的一個(gè)16進(jìn)制數(shù)pushcxpushdxpushaxmovcl,4;轉(zhuǎn)換高位shral,clcallHTOASCmovdl,al;顯示movah,2int21hpopax;轉(zhuǎn)換低位callHTOASCmovdl,al;顯示movah,2int21hmovdl,H;顯示一個(gè)字母“H”movah,2int21hpopdxpopcxretDIPASCendpHTOASCproc;將AL低4位表達(dá)的一位16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼andal,0fhcmpal,9jbehtoasc1addal,37h;是0AH0FH,力口37H轉(zhuǎn)換為ASCII碼ret;子程序返回htoascl:addal,30h;是0

13、9,加30H轉(zhuǎn)換為ASCII碼ret;子程序返回HTOASCendp習(xí)題3.35編制3個(gè)子程序把一個(gè)16位二進(jìn)制數(shù)用4位16進(jìn)制形式在屏幕上顯示出來(lái),分別運(yùn)用如下3種參數(shù)傳遞方法,并配合3個(gè)主程序驗(yàn)證它。采用AX寄存器傳遞這個(gè)16位二進(jìn)制數(shù)采用temp變量傳遞這個(gè)16位二進(jìn)制數(shù)采用堆棧方法傳遞這個(gè)16位二進(jìn)制數(shù)解答.modelsmall.stack.datawdatadw34abh.code.startupmovax,wdatacalldispa.exit0dispaprocpushcxpushdxmovcl,4movdl,ahshrdl,clcalldldispmovdl,ahanddl,0

14、fhcalldldispmovdl,alshrdl,clcalldldispmovdl,alanddl,0fhcalldldisppopdxpopcxretdispaendpdldispprocpushaxordl,30hcmpdl,39hjbedldisp1adddl,7dldisp1:movah,2int21hpopaxretdldispendpend.modelsmall.stack.datawdatadw34abhwordtempdw?.code.startupmovax,wdatamovwordtemp,axcalldispa.exit0dispaprocpushcxpushdxmo

15、vcl,4movdl,byteptrwordtemp+1shrdl,clcalldldispmovdl,byteptrwordtemp+1anddl,0fhcalldldispmovdl,byteptrwordtempshrdl,clcalldldispmovdl,byteptrwordtempanddl,0fhcalldldisppopdxpopcxretdispaendpdldispprocpushaxordl,30hcmpdl,39hjbedldisp1adddl,7dldisp1:movah,2int21hpopaxretdldispendpend.modelsmall.stack.datawdatadw34abh.code.startuppushwdatacalldispapopax;addsp,2.exit0dispaprocpushbpmovbp,sppushaxpushcxpushdxmovax

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論