數(shù)據(jù)表示和尋址習題答案_第1頁
數(shù)據(jù)表示和尋址習題答案_第2頁
數(shù)據(jù)表示和尋址習題答案_第3頁
數(shù)據(jù)表示和尋址習題答案_第4頁
數(shù)據(jù)表示和尋址習題答案_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章 數(shù)據(jù)表示和尋址2.1 簡答題(2)字符“'F'”和數(shù)值46H作為MOV指令的源操作數(shù)有區(qū)別嗎?沒有,因為字符“'F'”的ASCII碼就是數(shù)值46H(3)為什么可以把指令“MOV EAX, (3467H)*3”中的數(shù)值表達式看成是常量?匯編程序在匯編過程中對數(shù)值表達式計算,得到一個確定的數(shù)值,故稱數(shù)值表達式為常量(4)匯編語言為什么規(guī)定十六進制數(shù)若以AF開頭,需要在前面加個0?以便與標識符區(qū)別,因為標識符要求以字母(或特殊符號)開頭(7)為什么將查找操作數(shù)的方法稱為數(shù)據(jù)尋“址”方式?指令的操作數(shù)需要通過存儲器地址或I/O地址,才能查找到數(shù)據(jù)本身,故稱數(shù)據(jù)尋

2、址方式(8)為什么變量VAR在指令“MOV EAX, VAR”中表達直接尋址?因為這里的變量名VAR實際上表達了從變量所存放的主存單元,即地址2.2 判斷題(1)對一個正整數(shù),它的原碼、 反碼和補碼都一樣,也都與無符號數(shù)的編碼一樣。對(2)常用的BCD碼為8421 BCD碼,其中的8表示D3位的權重。對(3)排序一般按照ascii碼值大小,從小到大升序排列是,小寫字母排在大寫字母之前。錯(4)用“BYTE”和“DWORD”定義變量,如果初值相同,則占用的存儲空間也一樣多。錯。用BYTE只占一個存儲單元,而DWORD要占4個存儲單元(5)TYPE DX的結果是一個常量,等于2。對(6)IA-32

3、處理器采用小端方式存儲多字節(jié)數(shù)據(jù)。對(7)某個雙字變量存放于存儲器地址0403H 0406H中,對齊了地址邊界。錯(8)立即數(shù)尋址只會出現(xiàn)在源操作數(shù)中。對(9)存儲器尋址方式的操作數(shù)當然在主存了。對(10)指令“MOV EAX, VAR+2”與“MOV EAX, VAR2”功能相同。對,僅是不同的形式罷了2.3 填空題(1)計算機中有一個“01100001”編碼。如果把它認為是無符號數(shù),它是十進制數(shù)_;如果認為它是BCD碼,則表示真值_;又如果它是某個ASCII碼,則代表字符_。97,61,小寫字母a(2)C語言用“n”表示讓光標回到下一行首位,在匯編語言中需要輸出兩個控制字符:一個是回車,其

4、ASCII碼是_,它將光標移動到當前所在行的首位;另一個是換行,其ASCII碼是_,它將光標移到下一行。0DH(13),0AH(10)(3)定義字節(jié)變量的偽指令助記符是_,獲取變量名所具有的偏移地址的操作符是_。BYTE,OFFSET(4)數(shù)據(jù)段有語句“H8843 Dword 99008843h”,代碼段指令“mov cx,word ptr h8843”執(zhí)行后,cx=( )。8843(5)用DWORD定義一個變量XYZ,它的類型是( ),用“type XZY”會得到數(shù)值為( )。如果將其以字變量使用,應該用( )說明。雙字,4,word ptr(6)數(shù)據(jù)段有語句“ABC BYTE 1,2,3”

5、,代碼段指令“mov cl,abc+2”執(zhí)行后,cl = ( ). 3(7)除外設數(shù)據(jù)外的數(shù)據(jù)尋址方式有3類,分別稱為 (),()和()。立即尋址,寄存器尋址,存儲器尋址(8)指令“MOV EAX, OFFSET MSG”的目的操作數(shù)和源操作數(shù)分別采用_和_尋址方式。寄存器尋址,立即數(shù)尋址(9)已知ESI04000H,EBX20H,指令“MOV EAX, ESI+EBX*2+8”中訪問的有效地址是_。04000H20H×2804048H(10)用EBX作為及地址指令,默認采用()段寄存器指向的數(shù)據(jù)段,如果采用BP、EBP或SP、ESP作為基地址指針,默認使用()段寄存器指向堆棧。DS

6、,SS習題2.10按照如下要求定義變量或符號常量:(1) my1b為字符串變量:Personal Computermy1bbyte 'Personal Computer'(2) my2b為用十進制數(shù)表示的字節(jié)變量:20my2bbyte 20(3) my3b為用十六進制數(shù)表示的字節(jié)變量:20my3bbyte 14h(4) my4b為用二進制數(shù)表示的字節(jié)變量:20my4bbyte 00010100b按照如下要求定義變量或符號常量:(5) my5w為20個未賦值的字變量my5wword 20 dup(?)(6) my6c為100的常量my6c= 100(7) my7c表示字符串:Pe

7、rsonal Computermy7cequ <Personal Computer>習題2.14按照如下輸出格式,在屏幕上顯示ASCII表編程在數(shù)據(jù)段直接構造這樣的表格、填寫相應ASCII代碼值(不是字符本身),然后使用字符串顯示子程序DISPMSG實現(xiàn)顯示.dataTablebyte 3 dup(20h), |0 1 2 3 4 5 6 7 8 9 A B C D E F', 13,10byte dup(-),+,31 dup (-), 13,10Byte'20|',20h,20h,21h,20h,22h,20h,23h,20h, 24h,20h,25h,

8、20h,26h,20h,27h,20h,28h,20h,29h,20hbyte 2ah,20h,2bh,20h,2ch,20h,2dh,20h,2eh,20h, 2fh,20h,13,10byte '30 |',30h,20h,31h,20h,32h,20h,33h,20h, 34h,20h,35h,20h,36h,20h,37h,20h,38h,20h,39h,20hbyte 3ah,20h,3bh,20h,3ch,20h,3dh,20h,3eh,20h, 3fh,20h,13,10byte 0ca='2'cas=20hbyte ca,'0 |'

9、;,cas,20h,cas+1,20h,cas+2,20h, cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20hbyte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h, cas+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h,13,10cas=cas+10hca=ca+1byte ca,'0 |',cas,20h,cas+1,20h,cas+2,20h, cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20

10、hbyte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h, cas+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h,13,10習題2.15數(shù)據(jù)段有如下定義:vardword 12345678h現(xiàn)以字節(jié)為單位按地址從低到高的順序,寫出這個變量內(nèi)容。var變量的內(nèi)容:78H、56H、34H、12H并說明如下指令的執(zhí)行結果:mov eax,var;EAX12345678Hmov bx,word ptr var;BX5678Hmov cx,word ptr var+2;CX1234Hmov dl,byte ptr var

11、;DL78Hmov dh,byte ptr var+3;DH12H習題2.17說明源操作數(shù)的尋址方式(1)mov edx,1234h立即數(shù)(2)mov edx,vard直接(3)mov edx,ebx寄存器(4)mov edx,ebx寄存器間接(5)mov edx,ebx+1234h寄存器相對(6)mov edx,vardebx寄存器相對(7)mov edx,ebx+edi基址變址(8)mov edx,ebx+edi+1234h相對基址變址(9)mov edx,vardesi+edi相對基址變址(10)mov edx,ebp*4帶比例尋址第三章3.1 簡答題(1)如何修改“MOV ESI, W

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

13、單操作數(shù)指令,這個操作數(shù)應該是源操作數(shù)還是目的操作數(shù)?既是源操作數(shù),也是目的操作數(shù)(7)大小寫字母轉換使用了什么規(guī)律?大小寫字母轉換利用它們的ASCII碼相差20H(9)除法指令“DIV ESI”的被除數(shù)是什么?被除數(shù)64位,在EDX和EAX中,EDX保存高32位、EAX保存低32位(10)邏輯與運算為什么也稱為邏輯乘?運算規(guī)則類似于2進制乘法。3.2 判斷題(1)指令“MOV EAX,0”使EAX結果為0,所以標志ZF1。錯,MOV指令不影響標志(2)空操作NOP指令其實根本沒有指令。錯,(3)堆棧的操作原則是“先進后出”,所以堆棧段的數(shù)據(jù)除了PUSH和POP指令外,不允許其他方式讀寫。錯(

14、4)雖然ADD指令和SUB指令執(zhí)行后會影響標志狀態(tài),但執(zhí)行前的標志并不影響它們的執(zhí)行結果。對(5)80減90(8090)需要借位,所以執(zhí)行結束后,進位標志CF1。對,減法時借位也用CF標志反映(6)指令“INC ECX”和“ADD ECX,1”實現(xiàn)的功能完全一樣,可以互相替換。錯,INC 不影響CF位。(7)無符號數(shù)在前面加零擴展,數(shù)值不變;有符號數(shù)前面進行符號擴展,位數(shù)加長一位、數(shù)值增加一倍。錯,符號擴展也不改變數(shù)值大?。?)CMP 指令是目的操作數(shù)減去源操作數(shù),與SUB指令功能相同錯(9)邏輯運算沒有進位或溢出問題,此時CF和OF沒有作用,所以邏輯運算指令將CF和OF設置為0錯(10)SH

15、L指令左移一位,就是乘10。錯,左移一位,相當于乘2。這里的位是二進制比特位3.3 填空題(1)指令“PUSH DS”執(zhí)行后,ESP會 _. 減 2 (2)指令“POP EDX”的功能也可以用MOV和ADD指令實現(xiàn),依次應該是_和_指令。MOV EDX,ESP,ADD ESP,4(3)例子3-3 的TAB定義如果是1234567890,則顯示結果是 _78894111(4)進行8位二進制數(shù)加法:BAH6CH,8位結果是_,標志PF_。如果進行16位二進制數(shù)加法:45BAH786CH,16位結果是_,標志PF_。26H,0,BE26H,0(5)已知AX98H,執(zhí)行“NEG AX”指令后,AX_,

16、標志SF_。68H,0(6)假設CL=98H,執(zhí)行“MOVZX DX,CL”后,DX = _,這稱為_。0098h,零位(7)假設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í)行結束后,變量qvar的內(nèi)容是_(10)欲將EDX內(nèi)的無符號數(shù)除以16,使用指令“SHR EDX, _”,其中后一個操作數(shù)是一個立即數(shù)。4習題3.4請給每種組合各舉一個實例(1)m

17、ov 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習題3.5操作數(shù)的組合通常符合邏輯,但是不能任意,指出下列指令的錯誤原因(1) mov ecx,dl位數(shù)不同(2)mov eip,axeip為專用寄存器(3)mov es,1234h段寄存器不能直接用imm賦值(4)mov es,ds段寄存器間不能相互賦值(5)mov al,300h位數(shù)不同(6)mov esi,45h類型不明確(7)m

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

19、dd 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;EAX44(2CH),CF1(包含256的進位含義:25644300)(4)mov

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

21、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習題3.13如下兩段程序執(zhí)行后,EDX.EAX寄存器對的值各是多少?(1)加法程序Movedx,11hMoveax,0b0000000hAddeax,040000000hAdcedx,0(2)減法程序Movedx,100hMoveax,64000000hSubeax,84000000hSbbedx,0解答:(1)EDX=11EAX=0f0000000h(2)0f

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

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

24、t;- buufer1 - buffer2的功能。解答:.dataBuffer1 qword?Buffer2qword?.codeMoveax,dword ptr buffer1Movedx,dword ptr buffer2 + 4Addeax,dword ptr buffer2Adcedx,dword ptr buffer2 + 4習題3.16執(zhí)行如下程序片斷,說明每條指令的執(zhí)行結果(1)mov esi,10011100b;ESI _Hand esi,80h;ESI _Hor esi,7fh;ESI _Hxor esi,0feh;ESI _H(2)mov eax,1010b;EAX _B(

25、可有前導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(可有前導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 FFHxor esi,0feh;ESI 01H(2)mov eax,1010b;E

26、AX 1010B(可有前導0)shr eax,2;EAX 0010B,CF1shl eax,1;EAX 0100B,CF0and eax,3;EAX 0000B,CF0(3)mov eax,1011b;EAX 1011B(可有前導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習題3.17給出下列各條指令執(zhí)行后ax的結果,以及狀態(tài)標志CF、OF、SF、ZF、PF的狀態(tài)。Movax,1470hAndax,axOrax,a

27、xXorax,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習題3.18舉例說明邏輯運算指令怎樣實現(xiàn)復位、置位和求反功能。解答:復位 使用邏輯與指令and ,例如將al寄存器 D0位復位,指令 and al,0feh置位 使用邏輯或指令or ,例如將al寄存器 D0位置位,指令 or al,0

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

29、xSarecx,32Addeax,ebxAdcedx,ecxSubeax,540Sbbedx,0Idivvar4解答:(var1*var2)+var3-540)/var4,結果存于edx,eax中習題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習題3.22 請使用移位和加減法指令編寫一個程序片段計算:EAX×21,假設乘積不超過32位。提示:21242220。解答:mov ebx,eax

30、;EBXEAX×20shl ebx,2;EBXEAX×22add eax,ebx;EAXEAX×(2220)shl ebx,2;EBXEAX×24add eax,ebx;EAXEAX×(242220)習題3.23閱讀如下程序,為每條指令添加注釋,指出其功能或作用,并說明這個程序運行后顯示的結果。如果將程序中的寄存器間接尋址替換為寄存器相對尋址,如何修改程序?.data Num byte 6,7,7,8,3,0,0,0Tab byte 67783000.codeMovecx,lengthof num;Movesi,offset num;Movedi,offset tab;Again:Moval,esi;Xchgal,edi;Movesi,al;CalldispcAddesi,1;Addedi,1;L

溫馨提示

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

評論

0/150

提交評論