网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机系统第三章答案剖析.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机系统第三章答案剖析

习 题 ..’,不一致 (3)目的操作数不能是立即数寻址 (4)操作数位数超过16位,而长度后缀为16位的‘w’ (5)不能用8位寄存器作为目的操作数地址所在寄存器 (6)源操作数寄存器与目操作数寄存器长度不一致 (7)不存在ESX寄存器 (8)源操作数地址中缺少变址寄存器 5..]+8、R[ebp]+12、 R[ebp]+16。 (2)函数func的C语言代码如下: void func(int *xptr, int *yptr, int *zptr) { int tempx=*xptr; int tempy=*yptr; int tempz=*zptr; *yptr=tempx; *zptr = tempy; *xptr = tempz; } 7..:R[edx]←R[edx]+M[R[eax]]=0M[0x8049300] 因此,EDX中的内容改变为0根据表3.5可知,加法指令会影响OF、SF、ZF和CF标志。OF=0,ZF=0,SF=0,CF=1。 (2)指令功能为:R[ecx]←R[ecx]-M[R[eax]+R[ebx]]=0M[0x8049400] 因此,ECX中的内容改为0根据表3.5可知,减法指令会影响OF、SF、ZF和CF标志。OF=1,ZF=0,SF=1,CF=1(0=1。 (3)指令功能为:R[x]←R[bx] or M[R[eax]+R[ecx]*8+4],寄存器BX中内容改变。改变后的内容为以下运算的结果:0x0100 or M[0x8049384]=0100H or FF00H 因此,BX中的内容改为0xFF00。由3.3.3节可知,OR指令执行后OF=CF=0;因为结果不为0,故ZF=0;因为最高位为1,故SF=1。 (4)test指令不改变任何通用寄存器,但根据“与”操作改变标志R[dl] and 0x80 由3.3.3节可知,TEST指令执行后OF=CF=0;因为结果不为0,故ZF=0;因为最高位为1,故SF=1。 (5)指令功能为:M[R[eax]+R[edx]]←M[R[eax]+R[edx]]*32,即存储单元0x8049380中的内容改变为以下运算的结果:M[0x8049380]*32*32,也即只要将0x908f12a8左移5位即可得到结果。 1001 0000 1000 1111 0001 0010 1010 10005 =0001 0001 1110 0010 0101 0101 0000 0000 因此,指令执行后,单元0x8049380中的内容改变为 ←R[cx]-1,即CX寄存器的内容减一。 因此,指令执行后CX中的内容从0x0010变为0x000F。由表3.5可知,DEC指令会影响OF、ZF、SF,根据上述运算结果,得到OF=0,ZF=0,SF=0。 .]←M[R[ebp]+12],将y送ECX sall $8, %ecx //R[ecx]←R[ecx]8,将y*256送ECX movl 8(%ebp), %eax //R[eax]←M[R[ebp]+8],将x送EAX movl 20(%ebp), %edx //R[edx]←M[R[ebp]+20],将k送EDX imull %edx, %eax //R[eax]←R[eax]*R[edx],将x*k送EAX movl 16(%ebp), %edx //R[edx]←M[R[ebp]+16],将z送EDX andl $65520, %edx //R[edx]←R[edx] and 65520,将z0xFFF0送EDX addl %ecx, %edx //R[edx]←R[edx] + R[ecx],将z0xFFF0+y*256送EDX subl %edx, %eax //R[eax]←R[eax]-R[edx],将x*k-(z0xFFF0+y*256)送EAX 根据以上分析可知,第3行缺失部分为: 3 int v = x*k-(z0xFFF0+y*256) ; 10.]+20开始的4个字节为高32位字节,记为yh;R[ebp]+16开始的4个字节为低32位字节,记为yl。根据第4行为无符号数乘法指令,得知y的数据类型num_type为unsigned long long。 movl 12(%ebp), %eax //R[eax]←M[R[ebp]+12],将x送EAX movl 20(%ebp), %ecx //R[ecx]←M[R[ebp]+20],将yh送ECX imull %eax, %ecx //R[ecx]←R[ecx]

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档