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

下載本文檔

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

文檔簡介

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

2、程序解答:.modelsmall.stack.datastringdbHello,Assembly!,0dh,0ah,$.codestart:movax,datamovds,axmovdx,offsetstringmovah,9int21hmovax,4c00hint21hendstart習題3.12解答:ORG偽指令習題3.13解答:段地址和偏移地址屬性,類型屬性習題3.26問題:過程定義的一般格式是怎樣的?子程序開始為什么常有PUSH指令、返回前為什么常有POP指令?下面完成16位無符號數(shù)累加的子程序有什么不妥嗎?若有,請改正:解答: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ù)個數(shù)出口參數(shù):人乂=和的低字。乂=和的高字(進位部分)習題3.28問題:請按如下說明編寫子程序:;子程序功能:把用ASCII碼表示的兩位十進制數(shù)轉(zhuǎn)換為對應二進制數(shù);入口參數(shù):DH=+位數(shù)的ASCII碼,DL=(位數(shù)的ASCII碼;出口參數(shù):人1=對應的二進制數(shù)解答:

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

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

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

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

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

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

10、百位”、“十位”和“個位”。解答;wjxt325.asm.modelsmall.stack256.dataarraydbcddw?;源字數(shù)據(jù)db5dup(?);五位bcd結(jié)果,高對高低對低.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習題3.27編寫一個源程序,在鍵盤上按一個鍵,將從AL返回的ASCII碼值顯示出來,如果按下ESC鍵則程序退出。請調(diào)用書中的HTOASC子程序。解答again:movah,1int21hcmpal,1bh;ESC的ASCII碼是1bhjedonecallhtoascmovah,2int21hjmpagaindone:習題3.29調(diào)用HTOASC子程序,編寫顯示一個字節(jié)的16進制數(shù)、后跟“H”的子程序。解答DIPASCproc;入口參數(shù):AL=要顯示

12、的一個16進制數(shù)pushcxpushdxpushaxmovcl,4;轉(zhuǎn)換高位shral,clcallHTOASCmovdl,al;顯示movah,2int21hpopax;轉(zhuǎn)換低位callHTOASCmovdl,al;顯示movah,2int21hmovdl,H;顯示一個字母“H”movah,2int21hpopdxpopcxretDIPASCendpHTOASCproc;將AL低4位表達的一位16進制數(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習題3.35編制3個子程序把一個16位二進制數(shù)用4位16進制形式在屏幕上顯示出來,分別運用如下3種參數(shù)傳遞方法,并配合3個主程序驗證它。采用AX寄存器傳遞這個16位二進制數(shù)采用temp變量傳遞這個16位二進制數(shù)采用堆棧方法傳遞這個16位二進制數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論