通用數(shù)據(jù)處理指令習(xí)題答案_第1頁
通用數(shù)據(jù)處理指令習(xí)題答案_第2頁
通用數(shù)據(jù)處理指令習(xí)題答案_第3頁
通用數(shù)據(jù)處理指令習(xí)題答案_第4頁
通用數(shù)據(jù)處理指令習(xí)題答案_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 通用數(shù)據(jù)處理指令3.1 簡答題(1)如何修改“MOV ESI, WORD PTR 250”語句使其正確?刪除“WORD PTR”即可(2)為什么說“XCHG EDX,CX”是一條錯誤的指令?源、目標(biāo)寄存器位數(shù)不同,不能用該指令進行數(shù)據(jù)交換(3)說IA-32處理器的堆?!跋蛳律L”是什么意思?入棧時堆棧指針寄存器做減法操作,指向低地址;出棧時堆棧指針寄存器做加法操作,指向高地址(4)都是獲取偏移地址,為什么指令“LEA EBX,ESI”正確,而指令“mov ebx,offset ESI”就錯誤?LEA指令時運行時計算地址,OFFSET是匯編時取地址。(5)執(zhí)行了一條加法指令后,發(fā)現(xiàn)ZF1

2、,說明結(jié)果是什么?表明運算結(jié)果為0(6)INC、DEC、NEG和NOT都是單操作數(shù)指令,這個操作數(shù)應(yīng)該是源操作數(shù)還是目的操作數(shù)?既是源操作數(shù),也是目的操作數(shù)(7)大小寫字母轉(zhuǎn)換使用了什么規(guī)律?大小寫字母轉(zhuǎn)換利用它們的ASCII碼相差20H(9)除法指令“DIV ESI”的被除數(shù)是什么?被除數(shù)64位,在EDX和EAX中,EDX保存高32位、EAX保存低32位(10)邏輯與運算為什么也稱為邏輯乘?運算規(guī)則類似于2進制乘法。3.2 判斷題(1)指令“MOV EAX,0”使EAX結(jié)果為0,所以標(biāo)志ZF1。錯,MOV指令不影響標(biāo)志(2)空操作NOP指令其實根本沒有指令。錯,(3)堆棧的操作原則是“先進后

3、出”,所以堆棧段的數(shù)據(jù)除了PUSH和POP指令外,不允許其他方式讀寫。錯(4)雖然ADD指令和SUB指令執(zhí)行后會影響標(biāo)志狀態(tài),但執(zhí)行前的標(biāo)志并不影響它們的執(zhí)行結(jié)果。對(5)80減90(8090)需要借位,所以執(zhí)行結(jié)束后,進位標(biāo)志CF1。對,減法時借位也用CF標(biāo)志反映(6)指令“INC ECX”和“ADD ECX,1”實現(xiàn)的功能完全一樣,可以互相替換。錯,INC 不影響CF位。(7)無符號數(shù)在前面加零擴展,數(shù)值不變;有符號數(shù)前面進行符號擴展,位數(shù)加長一位、數(shù)值增加一倍。錯,符號擴展也不改變數(shù)值大?。?)CMP 指令是目的操作數(shù)減去源操作數(shù),與SUB指令功能相同錯(9)邏輯運算沒有進位或溢出問題,

4、此時CF和OF沒有作用,所以邏輯運算指令將CF和OF設(shè)置為0錯(10)SHL指令左移一位,就是乘10。錯,左移一位,相當(dāng)于乘2。這里的位是二進制比特位3.3 填空題(1)指令“PUSH DS”執(zhí)行后,ESP會 _. 減 2 (2)指令“POP EDX”的功能也可以用MOV和ADD指令實現(xiàn),依次應(yīng)該是_和_指令。MOV EDX,ESP,ADD ESP,4(3)例子3-3 的TAB定義如果是1234567890,則顯示結(jié)果是 _78894111(4)進行8位二進制數(shù)加法:BAH6CH,8位結(jié)果是_,標(biāo)志PF_。如果進行16位二進制數(shù)加法:45BAH786CH,16位結(jié)果是_,標(biāo)志PF_。26H,0

5、,BE26H,0(5)已知AX98H,執(zhí)行“NEG AX”指令后,AX_,標(biāo)志SF_。68H,0(6)假設(shè)CL=98H,執(zhí)行“MOVZX DX,CL”后,DX = _,這稱為_。0098h,零位(7)假設(shè)CL=98H,執(zhí)行“MOVSX DX,CL”后,DX = _,這稱為_。ff98h,符號(8)指令“XOR EAX, EAX”和“SUB EAX, EAX”執(zhí)行后,EAX_,CFOF_。而指令“MOV EAX, 0”執(zhí)行后,EAX_,CF和OF沒有變化。0,0,0(9)例子3-9 的程序執(zhí)行結(jié)束后,變量qvar的內(nèi)容是_(10)欲將EDX內(nèi)的無符號數(shù)除以16,使用指令“SHR EDX, _”,

6、其中后一個操作數(shù)是一個立即數(shù)。4習(xí)題3.4請給每種組合各舉一個實例(1)mov reg, imm(2)mov mem, imm(3)mov reg, reg(4)mov mem, reg(5)mov seg, reg(6)mov reg, mem(7)mov seg, mem(8)mov reg, seg(9)mov mem, seg習(xí)題3.5操作數(shù)的組合通常符合邏輯,但是不能任意,指出下列指令的錯誤原因(1) mov ecx,dl位數(shù)不同(2)mov eip,axeip為專用寄存器(3)mov es,1234h段寄存器不能直接用imm賦值(4)mov es,ds段寄存器間不能相互賦值(5)m

7、ov al,300h位數(shù)不同(6)mov esi,45h類型不明確(7)mov eax,ebx+edi無該種尋址方式(8) mov 20h,al立即數(shù)不能做操作數(shù)習(xí)題3.6使用MOV指令實現(xiàn)交換指令“XCHG EBX,EDI”功能。解答:mov eax,ebxmov ebx,edimov edi,eax習(xí)題3.7什么是堆棧,它的工作原則是什么,它的基本操作有哪兩個,對應(yīng)指令是什么。主存儲器中的以“先進后出”規(guī)則訪問的內(nèi)存區(qū),入棧、出棧,push ,pop習(xí)題3.11執(zhí)行如下程序片斷,說明每條指令的執(zhí)行結(jié)果(1)mov eax,80hadd eax,3add eax,80hadc eax,3(2

8、)mov eax,100add ax,200(3)mov eax,100add al,200(包含256的進位含義:25644300)(4)mov al,7fhsub al,8sub al,80hsbb al,3解答:(1)mov eax,80h;EAX80Hadd eax,3;EAX83H,CF0,SF0add eax,80h;EAX103H,CF0,OF0adc eax,3;EAX106H,CF0,ZF0(2)mov eax,100;EAX100(64H)add ax,200;EAX300(12CH),CF0(3)mov eax,100;EAX100(64H)add al,200;EAX4

9、4(2CH),CF1(包含256的進位含義:25644300)(4)mov al,7fh;AL7FHsub al,8;AL77H,CF0,SF0sub al,80h;ALF7H,CF1,OF1sbb al,3;ALF3H,CF0,ZF0習(xí)題3.12給出下列各條指令執(zhí)行后al的值,以及CF、ZF、SF、OF和PF的狀態(tài)。Moval,89hAddal,alAddal,9dhCmpal,0bchSubal,alDecalIncal解答:Moval,89h;89h,不影響標(biāo)志位Addal,al;12h,cf=1,zf=0,sf=0,of=1,pf=1Addal,9dh;0afh,cf=0,zf=0,s

10、f=1,of=0,pf=1Cmpal,0bch;0afh,cf=1,zf=0,sf=1,of=0,pf=1Subal,al;0,cf=0,zf=1,sf=0,of=0,pf=1Decal;ffh,cf=0,zf=0,sf=1,of=0,pf=1Incal;0h,cf=0,zf=1,sf=0,of=0,pf=1習(xí)題3.13如下兩段程序執(zhí)行后,EDX.EAX寄存器對的值各是多少?(1)加法程序Movedx,11hMoveax,0b0000000hAddeax,040000000hAdcedx,0(2)減法程序Movedx,100hMoveax,64000000hSubeax,84000000hSb

11、bedx,0解答:(1)EDX=11EAX=0f0000000h(2)0ffh,0e00000000h習(xí)題3.14請分別用一條匯編語言指令完成如下功能:(1)把EBX寄存器和EDX寄存器的內(nèi)容相加,結(jié)果存入EDX寄存器。(2)用寄存器EBX和ESI的基址變址尋址方式把存儲器的一個字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL中。(3)用EBX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個雙字和ECX寄存器的內(nèi)容相加,并把結(jié)果送回存儲器中。(4)將32位變量VARD與數(shù)3412H相加,并把結(jié)果送回該存儲單元中。(5)把數(shù)0A0H與EAX寄存器的內(nèi)容相加,并把結(jié)果送回EAX中。解答:(1)把E

12、BX寄存器和EDX寄存器的內(nèi)容相加,結(jié)果存入EDX寄存器。add edx,ebx(2)用寄存器EBX和ESI的基址變址尋址方式把存儲器的一個字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL中。add al,ebx+esi(3)用EBX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個雙字和ECX寄存器的內(nèi)容相加,并把結(jié)果送回存儲器中。add bx+0b2h,cx(4)將32位變量VARD與數(shù)3412H相加,并把結(jié)果送回該存儲單元中。add varw,3412h(5)把數(shù)0A0H與EAX寄存器的內(nèi)容相加,并把結(jié)果送回EAX中。add eax,0a0h習(xí)題3.15有兩個64位無符號整數(shù)分別存放在變量

13、buffer1和buffer2中,定義數(shù)據(jù)并編寫代碼完成edx.eax<- buufer1 - buffer2的功能。解答:.dataBuffer1 qword?Buffer2qword?.codeMoveax,dword ptr buffer1Movedx,dword ptr buffer2 + 4Addeax,dword ptr buffer2Adcedx,dword ptr buffer2 + 4習(xí)題3.16執(zhí)行如下程序片斷,說明每條指令的執(zhí)行結(jié)果(1)mov esi,10011100b;ESI _Hand esi,80h;ESI _Hor esi,7fh;ESI _Hxor es

14、i,0feh;ESI _H(2)mov eax,1010b;EAX _B(可有前導(dǎo)0)shr eax,2;EAX _B,CF_shl eax,1;EAX _B,CF_and eax,3;EAX _B,CF_(3)mov eax,1011b;EAX _B(可有前導(dǎo)0)rol eax,2;EAX _B,CF_rcr eax,1;EAX _B,CF_or eax,3;EAX _B,CF_(4)xor eax,eax;EAX_,CF_,OF_;ZF_,SF_,PF_解答:(1)mov esi,10011100b;ESI 9CHand esi,80h;ESI 80Hor esi,7fh;ESI FFHx

15、or esi,0feh;ESI 01H(2)mov eax,1010b;EAX 1010B(可有前導(dǎo)0)shr eax,2;EAX 0010B,CF1shl eax,1;EAX 0100B,CF0and eax,3;EAX 0000B,CF0(3)mov eax,1011b;EAX 1011B(可有前導(dǎo)0)rol eax,2;EAX 101100B,CF0rcr eax,1;EAX 10110B,CF0or eax,3;EAX 10111B,CF0(4)xor eax,eax;EAX0,CF0,OF0;ZF1,SF0,PF1習(xí)題3.17給出下列各條指令執(zhí)行后ax的結(jié)果,以及狀態(tài)標(biāo)志CF、OF、

16、SF、ZF、PF的狀態(tài)。Movax,1470hAndax,axOrax,axXorax,axNotaxTestax,0f0f0h解答:Ax=1470h flags 不變Ax=1470hcf=of=0 sf=0 zf=0 pf=0Ax=1470h cf=of=0 sf=0 zf=0 pf=0Ax=0 cf=of=0 sf=0 zf=1 pf=1Ax=ffffh flags 不變Ax=ffffh cf=of=0 sf=1 zf=0 pf=1習(xí)題3.18舉例說明邏輯運算指令怎樣實現(xiàn)復(fù)位、置位和求反功能。解答:復(fù)位 使用邏輯與指令and ,例如將al寄存器 D0位復(fù)位,指令 and al,0feh置位

17、 使用邏輯或指令or ,例如將al寄存器 D0位置位,指令 or al,01求反 使用not指令,例如將ebx寄存器內(nèi)容求反,指令not ebx習(xí)題3.19編程將一個壓縮BCD碼變量(如92h)轉(zhuǎn)換為對應(yīng)的ASCII碼,然后調(diào)用dispc字程序(在輸入輸出字程序中)顯示。解答:.dataBcd1byte92hMoval,bcd1Shral,4Oral,30hCalldispcMoval,bcd1Andal,0fhOral,30hCalldispc習(xí)題3.20有4個32位有符號數(shù),分別保存在var1,var2,var3,var4變量中,閱讀如下程序片段,得出運算公式,并說明運算結(jié)果存于何處。Mo

18、veax,var1Imulvar2Movebx,var3Movecx,ebxSarecx,32Addeax,ebxAdcedx,ecxSubeax,540Sbbedx,0Idivvar4解答:(var1*var2)+var3-540)/var4,結(jié)果存于edx,eax中習(xí)題3.21如下程序片段實現(xiàn)EAX乘以某個數(shù)X的功能,請判斷X?請使用一條乘法指令實現(xiàn)上述功能。mov ecx, eaxshl eax, 3lea eax, eax+eax*8sub eax, ecx解答:8*8+8-171imul eax, 71習(xí)題3.22 請使用移位和加減法指令編寫一個程序片段計算:EAX×21,

19、假設(shè)乘積不超過32位。提示:21242220。解答:mov ebx,eax;EBXEAX×20shl ebx,2;EBXEAX×22add eax,ebx;EAXEAX×(2220)shl ebx,2;EBXEAX×24add eax,ebx;EAXEAX×(242220)習(xí)題3.23閱讀如下程序,為每條指令添加注釋,指出其功能或作用,并說明這個程序運行后顯示的結(jié)果。如果將程序中的寄存器間接尋址替換為寄存器相對尋址,如何修改程序?.data Num byte 6,7,7,8,3,0,0,0Tab byte 67783000.codeMovecx

20、,lengthof num;Movesi,offset num;Movedi,offset tab;Again:Moval,esi;Xchgal,edi;Movesi,al;CalldispcAddesi,1;Addedi,1;Loopagain解答:.data Num byte 6,7,7,8,3,0,0,0Tab byte 67783000.codeMovecx,lengthof num;ecx賦值為num數(shù)組長度Movesi,offset num;esi賦值為num偏移地址Movedi,offset tab;edi賦值為tab字符串偏移地址Again:Moval,esi;讀取num元素到a1Xchgal,edi;互換al與tab元素Movesi,al;al存入num數(shù)組相應(yīng)單元CalldispcAddesi,1;指向num下一元素Addedi,1;指向下一字符Loopagain結(jié)果:67783000修改程序:Movecx,lengthof numXoresi,es

溫馨提示

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

評論

0/150

提交評論