计算机系统第三章答案

合集下载

计算机操作系统三章习题答案

计算机操作系统三章习题答案

第三章处理机调度与死锁``030110011020101进程调度是从选择一个进程投入运行。

A.就绪队列B.等待队列C.作业后备队列D.提交队列``030110011020100A``030110022020101支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,下列选项中,不是引起操作系统选择新进程的直接原因。

A.运行进程的时间片用完B.运行进程出错C.运行进程要等待某一时件发生D.有新进程进入就绪状态``030110022020100D``030110032020101下列因素中,不一定是引起进程调度的因素。

A.一个进程运行完毕B.运行进程被阻塞C.一个高优先级进程被创建D.实时调度中,一个紧迫的任务到来``030110032020100C``030110042020101若进程P一旦被唤醒就能投入运行,则系统可能是。

A.非抢占式调度方式,进程P的优先级最高B.抢占式调度方式,就绪队列上的所有进程的优先级皆比P低C.就绪队列为空队列D.抢占式调度方式,P的优先级高于当前运行的进程``030110042020100D``030110051020101在批处理系统中,周转时间是指。

A.作业运行时间B.作业等待时间和运行时间之和C.作业的相对等待时间D.作业被调度进入内存到运行完毕的时间``030110051020100B``030110062020101下列各项中,不是进程调度时机的是。

A.现运行的进程正常结束或异常结束B.现运行的进程从运行态进入就绪态C.现运行的进程从运行态进入等待态D.有一进程从等待态进入就绪态``030110062020100D``030210012020201现有3个同时到达的作业J1、J2、J3,它们的执行时间分别为T1、T2和T3,且T1<T2<T3。

系统按单道方式运行且采用短作业优先算法,则平均周转时间为。

A.T1+T2+T3 B.(T1+T2+T3)/3 C.(3T1+2T2+T3)/3D.(T1+2T2+3T3)/3``030210012020200C``030210022020101下列算法中,操作系统用于作业调度的算法是。

计算机操作系统慕课版第三章课后答案

计算机操作系统慕课版第三章课后答案

计算机操作系统慕课版第三章课后答案
1、高级调度与低级调度的主要任务是什么?为什么引入中级调度?
(1)、高级调度的主要任务是将外存的作业调入内存,又称作业调度。

低级调度的主要任务数为内存中处于就绪态的作业分配处理机。

(2)、为了提高内存的利用率与系统吞吐量。

ps:(中级调度是将作业调出掉回,高级调度是掉入,作业一次掉入,多次掉回,所以中级调度频次更高)
2、何谓作业和JCB?
作业是一组程序与数据和作业说明书,是高级调度的基本单位。

JCB是作业控制块,是作业存在的表示,包含管理,调度所需的全部信息。

ps:(对作业的控制是JCB和作业说明书一起的)
3、在什么情况下需要使用JCB?JCB通常包含了哪些内容?(1)作业进入系统。

(2)包含系统对作业调度,管理的全部信息。

4、在作业调度中应如何确定接纳多少作业和接纳哪些作业?
取决于多道程序度和调度算法。

5、试说明低级调度的主要功能?
从就绪队列中根据调度算法选择一个进程分配处理机。

6、简述引起进程调度的原因?
时间片完了、阻塞了、运行完了、被抢占了。

7、在抢占式调度算法中,应遵循的原则?
优先级、短进程优先、时间片原则。

8、在选择调度算法时应该遵循哪些规则?
公平性、资源利用率、平衡性、强制执行
9、何谓静态优先级?何谓动态优先级?确定优先级的依据是什么?
(1)、静态优先级创建进程时就确定,动态优先级随着时间与环境变化而改变。

(2)、用户要求,进程对cpu io等资源的要求,进程类型。

计算机操作系统三章习题答案

计算机操作系统三章习题答案

第三章处理机调度与死锁``0301进程调度是从选择一个进程投入运行。

A.就绪队列B.等待队列C.作业后备队列D.提交队列``0301A``0301支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,下列选项中,不是引起操作系统选择新进程的直接原因。

A.运行进程的时间片用完B.运行进程出错C.运行进程要等待某一时件发生D.有新进程进入就绪状态``0301D``0301下列因素中,不一定是引起进程调度的因素。

A.一个进程运行完毕B.运行进程被阻塞C.一个高优先级进程被创建D.实时调度中,一个紧迫的任务到来``0301C``0301若进程P一旦被唤醒就能投入运行,则系统可能是。

A.非抢占式调度方式,进程P的优先级最高B.抢占式调度方式,就绪队列上的所有进程的优先级皆比P低C.就绪队列为空队列D.抢占式调度方式,P的优先级高于当前运行的进程``0301D``0301在批处理系统中,周转时间是指。

A.作业运行时间B.作业等待时间和运行时间之和C.作业的相对等待时间D.作业被调度进入内存到运行完毕的时间``0301B``0301下列各项中,不是进程调度时机的是。

A.现运行的进程正常结束或异常结束B.现运行的进程从运行态进入就绪态C.现运行的进程从运行态进入等待态D.有一进程从等待态进入就绪态``0301D``0302现有3个同时到达的作业J1、J2、J3,它们的执行时间分别为T1、T2和T3,且T1<T2<T3。

系统按单道方式运行且采用短作业优先算法,则平均周转时间为。

A.T1+T2+T3 B.(T1+T2+T3)/3 C.(3T1+2T2+T3)/3D.(T1+2T2+3T3)/3``0302C``0302下列算法中,操作系统用于作业调度的算法是。

A.先来先服务算法B.先进先出算法C.最先适应算法D.时间片轮转算法``0302A``0302在作业调度中,排队等待时间最长的作业被优先调度,这是指调度算法。

计算机系统概论第三章测验及答案

计算机系统概论第三章测验及答案

第三章测验一、判断1. 文档不属于软件,所以不重要。

()2. 软件学是专门研究软件开发的学科。

()3. 通常把计算机软件分为系统软件和应用软件。

()4. 所谓系统软件就是购置计算机时,计算机供应厂商所提供的软件。

()5. 当前流行的操作系统是Windows系列及Office系列。

()6. Word属于系统软件,因为它在多个行业、部门中得到广泛的使用。

()7. Oracle是一数据库软件,属于系统软件。

()8. “软件工程”的概念出现在计算机软件发展的第三阶段。

()9. 一般只有硬件、没有软件的计算机被称为“裸机”。

()10. 计算机操作系统自举完成后,操作系统的所有程序常驻内存。

()11. Windows操作系统可以在任意的计算机上安装。

()12. Linux操作系统是Unix简化后的新版本。

()13. 机器语言程序是直接运行在裸机上的最基本的系统软件。

()14. 汇编语言是面向机器指令系统的机器语言。

()15. 计算机硬件就是组成计算机的各种物理设备的总称。

()16. 同一个程序在解释方式下的运行效率比在编译方式下的运行效率低。

()17. 编译程序仅是指从高级语言到机器语言的翻译程序。

()18. 在设计程序时一定要选择一个时间代价和空间代价都是最小的算法,而不用考虑其它问题。

()19. 离散数学的主要研究对象是连续的数据结构。

()20. 数据结构的内容包括数据的逻辑结构、存储结构以及在这些数据上定义的运算的集合。

()21. 链接表是以指针方式表示的“线性表结构”。

()22. 程序与算法不同,程序是问题求解规则的一种过程描述。

()23. 软件产品的设计报告、维护手册和用户使用指南等不属于计算机软件。

()24. 支持多用户、多任务处理和图形用户界面是Windows的特点。

()25. 程序设计语言按其级别可以分为硬件描述语言、汇编语言和高级语言三大类。

()26. 源程序通过编译处理可以一次性地产生高效运行的目标程序,并把它保存在外存储器上,可供多次执行。

第3章 计算机硬件系统 习题与答案

第3章 计算机硬件系统 习题与答案

第三章习题(P90-92)一、复习题1.计算机由哪几部分组成,其中哪些部分组成了中央处理器?答:计算机硬件系统主要由运算器、控制器、存储器、输入设备、输出设备等五部分组成其中,运算器和控制器组成中央处理器(CPU)。

(P72)2.试简述计算机多级存储系统的组成及其优点。

答:多级存储系统主要包括:高速缓存、主存储器和辅助存储器。

把存储器分为几个层次主要基于下述原因:(1)合理解决速度与成本的矛盾,以得到较高的性能价格比。

(2)使用磁盘、磁带等作为外存,不仅价格便宜,可以把存储容量做得很大,而且在断电时它所存放的信息也不丢失,可以长久保存,且复制、携带都很方便。

(P76-P77)3.简述Cache的工作原理,说明其作用。

答:Cache的工作原理是基于程序访问的局部性的。

即主存中存储的程序和数据并不是CPU每时每刻都在访问的,在一段时间内,CPU只访问其一个局部。

这样只要CPU当前访问部分的速度能够与CPU匹配即可,并不需要整个主存的速度都很高。

Cache与虚拟存储器的基本原理相同,都是把信息分成基本的块并通过一定的替换策略,以块为单位,由低一级存储器调入高一级存储器,供CPU使用。

但是,虚拟存储器的替换策略主要由软件实现,而Cache的控制与管理全部由硬件实现。

因此Cache效率高并且其存在和操作对程序员和系统程序员透明,而虚拟存储器中,页面管理虽然对用户透明,但对程序员不透明;段管理对用户可透明也可不透明。

Cache的主要作用是解决了存储器速度与CPU速度不匹配的问题,提高了整个计算机系统的性能。

(P79)4.描述摩尔定律的内容,并说明其对于计算机的发展具有怎样的指导意义。

答:摩尔定律(Moore law)源于1965年戈登·摩尔(Gordon Moore,时任英特尔(Intel)公司名誉董事长)的一份关于计算机存储器发展趋势的报告。

根据他对当时掌握的数据资料的整理和分析研究,发现了一个重要的趋势:每一代新芯片大体上包含其前一代产品两倍的容量,新一代芯片的产生是在前一代产生后的18-24个月内。

《深入理解计算机系统》第三版第三章家庭作业答案

《深入理解计算机系统》第三版第三章家庭作业答案

《深⼊理解计算机系统》第三版第三章家庭作业答案简述相信⼤部分⼈在做这些题的时候,因为书中没有给答案,⽽去⽹上找参考答案,⽐如那些⾼阅读量的博客和git 。

当然,我也是这样,但他们的答案中还是有好多错误,⽐如3.59他们⼏乎都没讲清楚提⽰中的公式怎么来的,3.60中对移位操作中对%cl 的读取,等等。

希望读者们在阅读这些⽂章时,要带着⾃⼰的思想和疑问去理解,⽽不是⼀味地觉得答案就肯定是对的,当然,本⽂有任何错误,也欢迎各位指出。

3.58long decode2(long x,long y,long z){y = y - z;x = x * y;y <<= 63;y >>= 63;return y ^ x;}y 先左移63位,再右移63位,如果之前y 是奇数,那么y 的⼆进制全是1;y 是偶数,那么y 的⼆进制全是0.3.59⾸先讲解⼀下,提⽰⾥的公式x =264∗x h +x l x =264∗xh +xl ,之所以可以这么写是因为符号拓展,以4位⼆进制int 为例:1111的补码数,为-1.将其进⾏符号拓展后为1111 1111,其值也为-1,但这⾥可以将1111 1111写为⾼位1111的补码数 * 2424 + 低位1111的⽆符号数:即-1 * 2424 + 15 = -1.原理:%rdx 和%rax 的⼆进制连起来表⽰这个数,既然连起来了,符号位就跑到了%rdx 的最⾼位了,除符号位权值为负外,其余位的权值均为正。

所以,⾼位寄存器%rdx 当做补码数,低位寄存器%rax 当做⽆符号数。

因为符号位现在在⾼位寄存器那⼉呢,所以⾼位寄存器当做补码数了;⽽低位寄存器的每⼀位的权值现在都是正的了,所以低位寄存器要当做⽆符号数。

所以x l xl 为T 2U (x )T2U(x)即x 的⼆进制表⽰作为⽆符号数。

x l xl 与x x 有相同的位级表⽰。

x h xh ,当原数符号位为1,64位⼆进制位上全为1,其值为-1;当原数符号位为0时,64位⼆进制位上全为0,其值为0。

计算机系统结构-第三章(习题解答)

计算机系统结构-第三章(习题解答)

计算机系统结构-第三章(习题解答)1. 什么是存储系统?对于一个由两个存储器M 1和M 2构成的存储系统,假设M1的命中率为h ,两个存储器的存储容量分别为s 1和s 2,存取时间分别为t 1和t 2,每千字节的成本分别为c 1和c 2。

⑴ 在什么条件下,整个存储系统的每千字节平均成本会接近于c 2? ⑵ 该存储系统的等效存取时间t a 是多少?⑶ 假设两层存储器的速度比r=t 2/t 1,并令e=t 1/t a 为存储系统的访问效率。

试以r 和命中率h 来表示访问效率e 。

⑷ 如果r=100,为使访问效率e>0.95,要求命中率h 是多少?⑸ 对于⑷中的命中率实际上很难达到,假设实际的命中率只能达到0.96。

现在采用一种缓冲技术来解决这个问题。

当访问M 1不命中时,把包括被访问数据在内的一个数据块都从M 2取到M 1中,并假设被取到M 1中的每个数据平均可以被重复访问5次。

请设计缓冲深度(即每次从M 2取到M 1中的数据块的大小)。

答:⑴ 整个存储系统的每千字节平均成本为:12s 1s 2c 2s 1s 1c 2s 1s 2s 2c 1s 1c c ++⨯=+⨯+⨯=不难看出:当s1/s2非常小的时候,上式的值约等于c2。

即:s2>>s1时,整个存储器系统的每千字节平均成本会接近于c2。

⑵ 存储系统的等效存取时间t a 为:2t )h 1(1t h t a ⨯-+⨯=⑶r)h 1(h 1t )h 1(t h t t t e 211a 1⨯-+=⨯-+⨯==⑷ 将数值代入上式可以算得:h>99.95% ⑸通过缓冲的方法,我们需要将命中率从0.96提高到0.9995。

假设对存储器的访问次数为5,缓冲块的大小为m 。

那么,不命中率减小到原来的1/5m ,列出等式有:m596.0119995.0--= 解这个方程得:m=16,即要达到⑷中的访问效率,缓冲的深度应该至少是16(个数据单位)。

计算机操作系统(第四版)课后习题答案第三章

计算机操作系统(第四版)课后习题答案第三章

第三章处理机调度‎与死锁1,高级调度与‎低级调度的‎主要任务是‎什么?为什么要引‎入中级调度‎?【解】(1)高级调度主‎要任务是用‎于决定把外‎存上处于后‎备队列中的‎那些作业调‎入内存,并为它们创‎建进程,分配必要的‎资源,然后再将新‎创建的进程‎排在就绪队‎列上,准备执行。

(2)低级调度主‎要任务是决‎定就绪队列‎中的哪个进‎程将获得处‎理机,然后由分派‎程序执行把‎处理机分配‎给该进程的‎操作。

(3)引入中级调‎度的主要目‎的是为了提‎高内存的利‎用率和系统‎吞吐量。

为此,应使那些暂‎时不能运行‎的进程不再‎占用宝贵的‎内存空间,而将它们调‎至外存上去‎等待,称此时的进‎程状态为就‎绪驻外存状‎态或挂起状‎态。

当这些进程‎重又具备运‎行条件,且内存又稍‎有空闲时,由中级调度‎决定,将外存上的‎那些重又具‎备运行条件‎的就绪进程‎重新调入内‎存,并修改其状‎态为就绪状‎态,挂在就绪队‎列上,等待进程调‎度。

3、何谓作业、作业步和作‎业流?【解】作业包含通‎常的程序和‎数据,还配有作业‎说明书。

系统根据该‎说明书对程‎序的运行进‎行控制。

批处理系统‎中是以作业‎为基本单位‎从外存调入‎内存。

作业步是指‎每个作业运‎行期间都必‎须经过若干‎个相对独立‎相互关联的‎顺序加工的‎步骤。

作业流是指‎若干个作业‎进入系统后‎依次存放在‎外存上形成‎的输入作业‎流;在操作系统‎的控制下,逐个作业进‎程处理,于是形成了‎处理作业流‎。

4、在什么情冴‎下需要使用‎作业控制块‎J CB?其中包含了‎哪些内容?【解】每当作业进‎入系统时,系统便为每‎个作业建立‎一个作业控‎制块JCB‎,根据作业类‎型将它插入‎到相应的后‎备队列中。

JCB 包含的内容‎通常有:1) 作业标识2‎)用户名称3‎)用户账户4‎)作业类型(CPU繁忙‎型、I/O芳名型、批量型、终端型)5)作业状态6‎)调度信息(优先级、作业已运行‎)7)资源要求8‎)进入系统时‎间9) 开始处理时‎间10) 作业完成时‎间11) 作业退出时‎间12) 资源使用情‎况等5.在作业调度‎中应如何确‎定接纳多少‎个作业和接‎纳哪些作业‎?【解】作业调度每‎次接纳进入‎内存的作业‎数,取决于多道‎程序度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题3.参考答案:〔1〕后缀:w,源:基址+比例变址+偏移,目:寄存器〔2〕后缀:b,源:寄存器,目:基址+偏移〔3〕后缀:l,源:比例变址,目:寄存器〔4〕后缀:b,源:基址,目:寄存器〔5〕后缀:l,源:立即数,目:栈〔6〕后缀:l,源:立即数,目:寄存器〔7〕后缀:w,源:寄存器,目:寄存器〔8〕后缀:l,源:基址+变址+偏移,目:寄存器4.参考答案:〔1〕源操作数是立即数0xFF,需在前面加‘$’〔2〕源操作数是16位,而长度后缀是字节‘b’,不一致〔3〕目的操作数不能是立即数寻址〔4〕操作数位数超过16位,而长度后缀为16位的‘w’〔5〕不能用8位寄存器作为目的操作数地址所在寄存器〔6〕源操作数寄存器与目操作数寄存器长度不一致〔7〕不存在ESX寄存器〔8〕源操作数地址中缺少变址寄存器5.参考答案:6.参考答案:〔1〕xptr、yptr和zptr对应实参所存放的存储单元地址分别为:R[ebp]+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.参考答案:〔1〕R[edx]=x〔2〕R[edx]=x+y+4 〔3〕R[edx]=x+8*y 〔4〕R[edx]=y+2*x+12 〔5〕R[edx]=4*y 〔6〕R[edx]=x+y 8.参考答案:〔1〕指令功能为:R[edx]←R[edx]+M[R[eax]]=0x 00000080+M[0x8049300],寄存器EDX 中内容改变。

改变后的内容为以下运算的结果:00000080H+FFFFFFF0H因此,EDX 中的内容改变为0x00000070。

根据表3.5可知,加法指令会影响OF 、SF 、ZF 和CF 标志。

OF=0,ZF=0,SF=0,CF=1。

〔2〕指令功能为:R[ecx]←R[ecx]-M[R[eax]+R[ebx]]=0x00000010+M[0x8049400], 寄存器ECX 中内容改变。

改变后的内容为以下运算的结果:00000010H -80000008H因此,ECX 中的内容改为0x80000008。

根据表3.5可知,减法指令会影响OF 、SF 、ZF 和CF 标志。

OF=1,ZF=0,SF=1,CF=1 0=1。

〔3〕指令功能为:R[b x]←R[bx]orM[R[eax]+R[ecx]*8+4],寄存器BX 中内容改变。

改变后的内容为以下运算的结果:0x0100 or M[0x8049384]=0100HorFF00H因此,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=0x908f12a8*32,也即只要将0x908f12a8左移5位即可得到结果。

1001 0000 1000 1111 0001 0010 1010 1000<<5=0001 0001 1110 0010 0101 0101 0000 0000因此,指令执行后,单元0x8049380中的内容改变为0x11e25500。

显然,这个结果是溢出的。

但是,根据表3.5可知,乘法指令不影响标志位,也即并不会使OF=1。

1000 0000 1000 0000 1000 0000and 0000 0001 0000 0000 1111 1111 0000 0000 1111 1111 0000 0000or 0000 0000 0000 0000 0000 0000 0001 0000 0111 1111 1111 1111 1111 1111 1111 10000 1000 0000 0000 0000 0000 0000 0000 1000 + 0000 0000 0000 0000 0000 0000 1000 0000 1111 1111 1111 1111 1111 1111 1111 00001 0000 0000 0000 0000 0000 0000 0111 0000 +〔6〕指令功能为:R[cx] ←R[cx]-1,即CX 寄存器的内容减一。

因此,指令执行后CX 中的内容从0x0010变为0x000F 。

由表3.5可知,DEC 指令会影响OF 、ZF 、SF ,根据上述运算结果,得到OF=0,ZF=0,SF=0。

9.参考答案:movl 12(%ebp), %ecx //R[ecx ]←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,将z&0xFFF0送EDX addl %ecx, %edx //R[edx ]←R[edx] + R[ecx],将z&0xFFF0+y*256送EDX subl %edx, %eax //R[eax ]←R[eax]-R[edx],将x*k-(z&0xFFF0+y*256)送EAX 根据以上分析可知,第3行缺失部分为: 3 int v = x*k-(z&0xFFF0+y*256) ; 10.参考答案:从汇编代码的第2行和第4行看,y 应该是占8个字节,R[ebp]+20开始的4个字节为高32位字节,记为y h ;R[ebp]+16开始的4个字节为低32位字节,记为y l 。

根据第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],将y h 送ECX imull %eax, %ecx //R[ecx ]←R[ecx]*R[eax],将y h *x 的低32位送ECX mull 16(%ebp) //R[edx]R[eax]←M[R[ebp]+16]*R[eax],将y l *x 送EDX-EAX leal(%ecx, %edx), %edx// R[edx ]←R[ecx]+R[edx],将y l *x 的高32位与y h *x 的低32位相加后送EDXmovl 8(%ebp), %ecx//R[ecx ]←M[R[ebp]+8],将d 送ECX movl %eax, (%ecx) //M[R[ecx]]←R[eax],将x*y 低32位送d 指向的低32位 movl %edx, 4(%ecx) //M[R[ecx]+4]←R[edx],将x*y 高32位送d 指向的高32位 11.参考答案:根据第3.3.4节得知,条件转移指令都采用相对转移方式在段内直接转移,即条件转移指令的转移目标地址为:〔PC 〕+偏移量。

〔1〕因为je 指令的操作码为01110100,所以机器代码7408H 中的08H 是偏移量,故转移目标地址为:0x804838c+2+0x8=0x8048396。

call 指令中的转移目标地址0x80483b1=0x804838e+5+0x1e ,由此,可以看出,call 指令机器代码中后面的4个字节是偏移量,因IA-32采用小端方式,故偏移量为0000001EH 。

call 指令机器代码共占5个字节,因此,下条指令的地址为当前指令地址0x804838e 加5。

〔2〕指令中F6H 是偏移量,故其转移目标地址为:0x8048390+2+0xf6=0x8048488。

movl 指令的机器代码有10个字节,前两个字节是操作码等,后面8个字节为两个立即数,因为是小端方式,所以,第一个立即数为0804A800H ,即汇编指令中的目的地址0x804a800,最后4个字节为立即数00000001H ,即汇编指令中的常数0x1。

0000 0000 0001 0000 1111 1111 1111 11111 0000 0000 0000 1111 +〔3〕jle指令中的7EH为操作码,16H为偏移量,其汇编形式中的0x80492e0是转移目的地址,因此,假定后面的mov指令的地址为x,则x满足以下公式:0x80492e0=x+0x16,故x=0x80492e0-0x16=0x80492ca。

〔4〕jmp指令中的E9H为操作码,后面4个字节为偏移量,因为是小端方式,故偏移量为FFFFFF00H,即-100H=-256。

后面的sub指令的地址为0x804829b,故jmp指令的转移目标地址为0x804829b+0xffffff00=0x804829b-0x100=0x804819b。

12.参考答案:〔1〕汇编指令的注解说明如下:1 movb 8(%ebp), %dl//R[dl]←M[R[ebp]+8],将x送DL2 movl 12(%ebp), %eax//R[eax]←M[R[ebp]+12],将p送EAX3 testl %eax, %eax//R[eax]and R[eax],判断p是否为04 je .L1 //若p为0,则转.L1执行5 testb $0x80, %dl//R[dl] and 80H,判断x的第一位是否为06 je .L1 //若x>=0,则转.L1执行7 addb %dl, (%eax) //M[R[eax]]←M[R[eax]]+R[dl],即*p+=x8 .L1:因为C语言if语句中的条件表达式可以对多个条件进行逻辑运算,而汇编代码中一条指令只能进行一种逻辑运算,并且在每条逻辑运算指令生成的标志都是存放在同一个EFLAGS寄存器中,所以,最好在一条逻辑指令后跟一条条件转移指令,把EFLAGS中标志用完,然后再执行另一次逻辑判断并根据条件进行转移的操作。

相关文档
最新文档