匯編語言期末復習總結(完整版)_第1頁
匯編語言期末復習總結(完整版)_第2頁
匯編語言期末復習總結(完整版)_第3頁
匯編語言期末復習總結(完整版)_第4頁
匯編語言期末復習總結(完整版)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——匯編語言期末復習總結(完整版)〔習題1.24〕說明以下指令中源操作數的尋址方式?假使BX=2000H,DI=40H,給出DX的值或有效地址EA的值。

(1)movdx,[1234h]直接尋址,EA=1234H(3)movdx,bx寄放器尋址,DX=2000H

(6)movdx,[bx+di]基址變址尋址,EA=2040H

第2章8086的指令系統

〔習題2.1〕已知DS=2000H、BX=0100H、SI=0002H,存儲單元[20230H]~[20233H]依次存放12345678H,[21200H]~[21203H]依次存放2A4CB765H,說明以下每條指令執(zhí)行完后AX寄放器的內容。

(1)movax,1200hAX=1200H(2)movax,bxAX=0100H

(3)movax,[1200h]AX=4C2AH;偏移地址=1200h(4)movax,[bx]AX=3412H;偏移地址=bx=0100h

(5)movax,[bx+1100h]AX=4C2AH;偏移地址=bx+1100h=1200h

(6)movax,[bx+si]AX=7856H;偏移地址=bx+si=0100h+0002h=0102h(7)movax,[bx][si+1100h]AX=65B7H;偏移地址bx+si+1100h=0100h+0002h+1100h=1202h

〔習題2.2〕指出以下指令的錯誤

(1)movcx,dl兩操作數類型不匹配

(2)movip,axIP指令指針阻止用戶訪問

(3)moves,1234h馬上數不允許傳給段寄放器(DS、CS、SS、ES)(4)moves,ds段寄放器之間不允許傳送(5)moval,300兩操作數類型不匹配(6)mov[sp],ax目的操作數應為[SI](7)movax,bx+di源操作數應為[BX+DI](8)mov20h,ah馬上數不能作目的操作數

〔習題2.8〕請分別用一條匯編語言指令完成如下功能:

(1)把BX寄放器和DX寄放器的內容相加,結果存入DX寄放器。(2)用寄放器BX和SI的基址變址尋址方式把存儲器的一個字節(jié)與AL寄放器的內容相加,并把結果送到AL中。

(3)用BX和位移量0B2H的寄放器相對尋址方式把存儲器中的一個字和CX寄放器的內容相加,并把結果送回存儲器中。(4)用位移量為0520H的直接尋址方式把存儲器中的一個字與數3412H相加,并把結果送回該存儲單元中。

(5)把數0A0H與AL寄放器的內容相加,并把結果送回AL中。(1)ADDDX,BX

(2)ADDAL,byteptr[BX+SI](3)ADD[BX+0B2H],CX

(4)ADDWORDPTR[0520H],3412H(5)ADDAL,0A0H

〔習題2.10〕指出以下指令的錯誤:

(1)xchg[si],30hxchg的操作數不能是馬上數(2)popcs不應對CS直接賦值

(3)sub[si],[di]兩個操作數不能都是存儲單元(4)pushah堆棧的操作數不能是字節(jié)變量(5)adcax,dsadc的操作數不能是段寄放器(6)add[si],80h沒有確定是字節(jié)還是字操作(7)shl[si],1沒有指定指向數據的大?。?)rordx,alal應當換成cl

〔習題2.22〕假設AX和SI存放的是有符號數,DX和DI存放的是無符號數,請用比較指令和條件轉移指令實現以下判斷:(1)若DX>DI,轉到above執(zhí)行cmpdx,di

jaabove;=jnbeabove(2)若AX>SI,轉到greater執(zhí)行cmpax,si

jggreater;=jnlegreater(3)若CX=0,轉到zero執(zhí)行cmpcx,0

jzzero;=jcxzzero

〔習題2.25〕對下面要求,分別給出3種方法,每種方法只用一條指令。(1)使CF=0(2)使AX=0(1)解答:

clc(清零)

andax,ax(規(guī)律操作不會進位)orax,ax(2)解答:xorax,axandax,0movax,0

〔習題3.7〕假設myword是一個字變量,mybyte1和mybyte2是兩個字節(jié)變量,指出以下語句中的錯誤原因。

(1)movbyteptr[bx],10001000超出了一個字節(jié)范圍

(2)movbx,offsetmyword[si]寄放器的值只有程序執(zhí)行時才能確定,而offset是匯編過程計算的偏移地址,故無法確定,改為leabx,myword[si]

(3)cmpmybyte1,mybyte2兩個都是存儲單元,指令不允許

(4)moval,mybyte1+mybyte2變量值只有執(zhí)行時才確定,匯編過程不能計算(5)subal,myword字節(jié)量AL與字變量myword,類型不匹配

(6)jnzmywordJnz指令只有相對尋址方式,不支持間接尋址方式〔〔習題3.10〕畫圖說明以下語句分派的存儲空間及初始化的數據值:(1)byte_varDB’ABC’,10,10h,’EF’,3DUP(-1,?,3DUP(4))(2)word_varDW10h,-5,’EF’,3DUP(?)

(1)從低地址開始,依次是(十六進制表達):

4142430a104546ff-040404ff-040404ff-040404(2)從低地址開始,依次是(十六進制表達):1000FBFF4645------

〔習題3.11〕請設置一個數據段mydataseg,依照如下要求定義變量:(1)my1b為字符串變量:PersonalComputer(2)my2b為用十進制數表示的字節(jié)變量:20(4)my4b為用二進制數表示的字節(jié)變量:20(5)my5w為20個未賦值的字變量(6)my6c為100的常量

(7)my7c表示字符串:PersonalComputermydatasegsegment

my1bdb‘PersonalComputer’my2bdb20

my3bdb14h;20hmy4bdb00010100bmy5wdw20dup(?)

my6cequ100;my6c=100my7cequmydatasegends

第4章基本匯編語言程序設計

〔習題4.6〕編制一個程序,把變量bufX和bufY中較大者存入bufZ;若兩者相等,則把其中之一存入bufZ中。假設變量存放的是8位無符號數。.modelsmall.stack256.databufxdb?bufYdb?bufzdb?.code.startup

moval,bufXmovbl,bufYcmpal,bljanext

movbufZ,bljmpdone

next:movbufZ,aldone:.exit0End

大題

1.顯示HelloWorld字符串。.modelsmall;定義程序的存儲模型,一般程序采用小型模型.stack;堆棧段.data;數據段stringdb'HelloWorld!',0dh,0ah,'$';定義需要顯示的字符串.code;代碼段.startup;程序的起始點,建立DS、SS內容movdx,offsetstring;指定字符串在數據段的偏移地址movah,9int21h;調用功能調用顯示信息.exit0;程序終止點,返回DOSend;匯編終止2.COM程序實現任意鍵后響鈴.modeltiny.code.startupmovdx,offsetstringmovah,9;9號調用輸出字符串int21hmovah,01h;1號調用,從stdin讀取字符int21hmovah,02hmovdl,07hint21h;2號調用,向stdout輸出字符(07H-\\a響鈴).exit0stringdb'Pressanykeytocontinue!$';數據安排在不與代碼沖突的地方end3.設有一個64位的數據,要求將它算術左移8位(從高字節(jié)開始,從右向左左移8位).modelstmall.stack.dataqvardq1234567887654321h;dq表示4個字4*16=64bytes.code.startupmovcx,7movsi,6;1again:moval,byteptrqvar[si]movbyteptrqvar[si+1],al;si-1descsi;incsiloopagainmovbyteptrqvar[si+1],0;si4.計算1~100的和,將結果放入SUM中.modelstmall.stack.datasumdw?.code.startupxorax,axmovcx,100again:addax,cxloopagainmovsum,ax.exit0end5.把一個字符串中所有的大小改小寫,該字符串以’0’結尾。.modelstmall.stack.datastringdb'HELLOworld!',0.code.startupmovbx,offsetstringagain:moval,[bx]oral,aljzdonecmpal,'A'jbnextcmpal,'Z'janextoral,20hmov[bx],alnext:incbxjmpagaindone:.exit0end6.編制一個程序,把變量bufX和bufY中較大者存入bufZ;若兩者相等。則將其中之一存入bu

溫馨提示

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

評論

0/150

提交評論