计算机系统基础第三章答案
计算机系统结构第3章部分习题参考答案

第3章 部分习题参考答案3.2 (题目略)【解】overlap o i cpu T T T T -+=/,其中T overlap 的最大值为T cup 。
由题意可得当CPU 速度提高4倍后,T =30/4+20-30/4=20(s)。
(注:T overlap 为CPU 和I/O 重叠执行的时间)3.7 (题目略)【解】(1)处理机响应各中断源的中断请求的先后次序与它们的中断优先级一样:D 1D 2D 3D 4D 5;实际的中断处理次序为:D 1D 2D 3D 4D 5。
(2)处理机响应各中断源的中断请求的先后次序与它们的中断优先级一样:D 1D 2D 3D 4D 5;实际的中断处理次序为: D 4D 5 D 3 D 2D 1。
(3)处理机响应各中断源的中断服务请求和实际运行中断服务程序过程的示意图如下:(4)处理机响应各中断源的中断服务请求和实际运行中断服务程序过程的示意图如下:3.9 (题目略)【解】字节多路通道适用于连接大量像光电机等字符类低速设备。
这些设备传送一个字中断请求D 3,D 4,D 5时间tD 1, D 2 中断请求主程序中断服务程序 D 1,D 2,D 3,D 4,D 5 时间t符(字节)的时间很短,但字符(字节)间的等待时间很长。
通道“数据宽度”为单字节,以字节交叉方式轮流为多台设备服务,使效率提高。
字节多路通道可有多个子通道,同时执行多个通道程序。
数组多路通道适合于连接多台像磁盘等高速设备。
这些设备的传送速率很高,但传送开始前的寻址辅助操作时间很长。
通道“数据宽度”为定长块,多台设备以成组交叉方式工作,以充分利用并尽量重叠各台高速设备的辅助操作时间。
传送完K个字节数据,就重新选择下个设备。
数组多路通道可有多个子通道,同时执行多个通道程序。
选择通道适合于连接像磁盘等优先级高的高速设备,让它独占通道,只能执行一道通道程序。
通道“数据宽度”为可变长块,一次将N个字节全部传送完,在数据传送期只选择一次设备。
计算机基础第三章习题答案

第三章习题答案1、局域网规划原则:网络设计者对整个网络的轮廓有了大致了解,规划人员应该从尽量降低成本、尽可能提高资源利用率等因素出发,本着先进性、安全性、可靠性、开放性、可扩充性和最大限度资源共享的原则,进行网络规划。
2、星型结构和总线-星型结构的区别在于服务器与接线器之间的连接方式不同。
星型结构是第1级集线器连接多个集线器和服务器。
第2级集线器连接客户机。
总线-星型结构是第1级总线连接多个集线器和服务器。
第2级集线器连接客户机。
星型拓扑结构的优点是:网络结构简单,管理和集中控制方便,组网容易;网络延迟短,误码率低;缺点是:网络共享能力较差,通信线路利用率不高,中央节点负担过重;可同时使用双绞线、同轴电缆及光纤等多种物理介质。
总线布局的优点是:结构简单灵活,非常便于扩充;可靠性高,网络响应速度快;设备量少、价格低、安装使用方便;共享资源能力强,便于广播式工作,即一个节点发送所有节点都可接收。
缺点是:由于总线有一定的负载能力,因此,总线长度有一定限制,一条总线只能连接一定数量的节点。
3、高级网络设计除了包含简单网络设计需要的需求分析、设备选择和结构设计等问题外,还包含如何选择新型硬件和技术组建高速和大规模网络等内容。
4、场地规划,网络设备规划,操作系统和应用软件的规划,网络管理的规划,资金规划5、答案略6、需求分析对项目的成功与否有关当局整个网络设计的成功与否起着重要的作用。
因此,分析人员应该注意下面的内容。
分析人员要使用符合客户语言习惯的表达,需求讨论集中于业务需求和任务,因此要使用术语。
分析人员应将业务术语讲述给客户,而客户不一定要懂得计算机专业术语。
分析人员要了解客户的业务及目标,只有分析人员更好地了解客户的业务,才能使产品更好地满足需要。
如果是更新网络,那么分析人员应使用一下目前的旧网络,有利于他们明白目前网络是怎样工作的,其流程情况以及可改进之处。
网络分析人员必须编写需求分析报告,应将从客户那里获得的所有信息进行整理,以区分业务需求及规范、功能需求、质量目标、解决方法和其他信息。
计算机系统(课后习题答案)

嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的 控制系统。
【1-6】冯·诺伊曼计算机的基本设计思想是什么? [答案]
采用二进制形式表示数据和指令。指令由操作码和地址码组成。 将程序和数据存放在存储器中,计算机在工作时从存储器取出指令加以执行,自动完 成计算任务。这就是“存储程序”和“程序控制”(简称存储程序控制)的概念。 指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移 指令实现。 计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定 了 5 部分的基本功能。
【2-6】将下列压缩 BCD 码转换为十进制数: (1)10010001 (2)10001001 (3)00110110
[答案] (1)91 (2)89 (3)36 (4)90
(4)10010000
【2-7】将下列十进制数用 8 位二进制补码表示: (1)0 (2)127 (3)-127 (4)-57
“计算机系统基础”习题解答
第 1 章 计算机系统概述
【1-1】简答题 (1)计算机字长(Word)指的是什么? (2)处理器的“取指-译码-执行周期”是指什么? (3)总线信号分成哪 3 组信号? (4)外部设备为什么又称为 I/O 设备? (5)Windows 的控制台窗口与模拟 DOS 窗口有什么不同? [答案] (1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。 (2)指令的处理过程。处理器的“取指—译码—执行周期” 是指处理器从主存储器 读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作 (简称执行)的过程。 (3)总线信号分成 3 组,分别是数据总线、地址总线和控制总线。 (4)因为外设以输入(Input)和输出(Output)形式与主机交换数据。 (5)Windows 的控制台窗口是基于 32/64 位 Windows 操作系统,模拟 DOS 窗口是基于 16 位 DOS 操作系统。
第3章答案(操作系统基础)

习题三一、选择题1. 计算机操作系统属于。
A. 应用软件B. 系统软件C. 工具软件D. 文字处理软件2. 操作系统负责管理计算机的。
A. 程序B. 作业C. 资源D. 进程3. 在计算机系统中配置操作系统的主要目的是。
A. 增强计算机系统的功能B. 提高系统资源的利用率C. 提高系统的运行速度D. 合理组织系统的工作流程,以提高系统吞吐量4. 操作系统对处理机的管理实际上是对。
A. 存储器管理B. 虚拟存储器管理C. 运算器管理D. 进程管理5. 允许多个用户以交互方式使用计算机的操作系统称为。
A. 批处理操作系统B. 分时操作系统C. DOS操作系统D. 个人计算机操作系统6. 允许多个用户将若干个作业提交给计算机系统集中处理的操作系统称为。
A. 批处理操作系统B. 分时操作系统C. 多处理器操作系统D. 微机操作系统7. 以下不属于操作系统关心的主要问题是。
A. 管理计算机裸机B. 设计、提供用户程序与计算机硬件系统的接口C. 管理计算机中的信息资源D. 高级程序设计语言的编译8. 在设计实时操作系统时,首先要考虑的是。
A. 灵活性和可适应性B. 交互性和响应时间C. 周转时间和系统吞吐量D. 实时性和可靠性9. 操作系统通过对进程进行管理。
A. 进程B. 进程控制块C. 进程启动程序D. 进程控制区10. 在下列系统中属于实时信息系统是。
A. 计算机激光照排系统B. 民航售票系统C. 办公自动化系统D. 火箭飞行控制系统11. 下面关于并发性的正确论述是。
A. 并发性是指若干事件在同一时刻发生B. 并发性是指若干事件在不同时刻发生C. 并发性是指若干事件在同一时间间隔内发生D. 并发性是指若干事件在不同时间间隔内发生12. 在3.x版本以前的MS-DOS是操作系统。
第3章操作系统基础·2·A. 单用户单任务B. 单用户多任务C. 多用户单任务D. 多用户多任务13. MS-DOS和Windows XP都是由开发的。
大学计算机基础试题及答案第三章

、题目1正确获得分中的分标记题目~题干CPU主要由运算器和控制器组成,下列说法正确的是()…选择一项:a. 控制器直接控制计算机系统的输入与输出操作b. 运算器主要负责分析指令,并根据指令要求作相应的运算—c. 控制器主要负责分析指令,并根据指令要求作相应的运算d. 运算器主要负责完成对数据的运算,包括算术运算和逻辑运算正确反馈|正确答案是:运算器主要负责完成对数据的运算,包括算术运算和逻辑运算题目2正确[获得分中的分标记题目题干?下列存储器中,访问速度最慢的是()选择一项:a. ROM¥b. RAMc. Cached. 硬盘正确>反馈正确答案是:硬盘题目3~正确获得分中的分标记题目…题干计算机的内存储器相比外储存器()选择一项:(a. 读/写速度快正确b. 存储容量大c. 价格便宜%d. 读/写速度慢反馈正确答案是:读/写速度快~题目4正确获得分中的分@标记题目题干下列叙述正确的是()|选择一项:a. 指令由操作数和操作码两部分组成正确b. 计算机语言是完成某一任务的指令集¥c. 计算机的一个字长总等于两个字节d. 常用xxMB表示计算机的速度反馈)正确答案是:指令由操作数和操作码两部分组成题目5正确~获得分中的分标记题目题干/目前微型计算机中采用的逻辑元件是()选择一项:&a. 大规模和超大规模集成电路正确b. 中规模集成电路c. 小规模集成电路d. 分立元件》反馈正确答案是:大规模和超大规模集成电路~题目6正确获得分中的分标记题目}题干微型计算机中,运算器的主要功能是进行()&选择一项:a. 逻辑运算和算术运算正确b. 复杂方程的求解c. 算术运算·d. 逻辑运算反馈正确答案是:逻辑运算和算术运算<题目7正确获得分中的分:标记题目题干。
下列存储器中,存取速度最快的是()选择一项:a. 光盘存储器]b. 内存储器正确c. 硬磁盘存储器d. 软磁盘存储器反馈[正确答案是:内存储器题目8|正确获得分中的分标记题目"题干下列打印机中,打印效果最佳的一种是()选择一项:}a. 喷墨打印机b. 激光打印机正确c. 点阵打印机d. 热敏打印机<反馈正确答案是:激光打印机.题目9正确获得分中的分标记题目~题干微型计算机中,不属于控制器功能的是()】选择一项:a. 传输各种控制信号b. 产生各种控制信息]c. 存储各种控制信息d. 输出各种信息正确反馈-正确答案是:输出各种信息题目10正确.获得分中的分标记题目题干>微型计算机配置高速缓存是为了解决()之间的速度不匹配问题。
计算机操作系统第三章答案

第三章处理机调度与死锁一、单项选择题K操作系统中的作业管理是一种(A )oA.宏观的高级管理B.宏观的低级管理C.系统刚开始加电D.初始化引导完成2、作业调度又称为[1A],它决定将哪些在外存储器上的处于[2D]状态的作业调入主机内存。
系统经作业调度程序选中一个或多个作业后,就为它们分配必要的内存、设备及软资源。
然后控制权就交给了 [3B],由 [3]将它们变为一个或一组[4C],并[5A]。
供选择的答案:[11: A、高级调度B、低级调度C、中级调度D、进程调度[2]: A、就绪B、阻塞C、提交D、后备[3]: A、存储管理模块B、处理机管理模块C、文件管理模块D、设备管理模块[4]: A、指令B、子程序C、进程D、程序段⑸:A、把它们挂到就绪队列上B、为它们分配处理机C、把它们挂到后备队列上D、为它们分配设备)中。
A、处于后备状态的作业存放在(3.A•外存B.内存和B D.扩展内存4、在操作系统中,JCB是指(A )oA.作业控制块B.进程控制块C.文件控制块D.程序控制块5、作业在系统中存在与否的唯一标志是(C)。
A.源程序B.作业说明书C.作业控制块D.目的程序6、按照作业到达的先后次序调度作业,排队等待时间最长的作业被优先调度,这是指(A)调度算法。
A.先来先服务法B.短作业优先法C.时间片轮转法D.优先级法7、在批处理系统中,周转时间是(B )oA.作业运行时间B.作业等待时间和运行时间之和C.作业的相对等待时间D.作业被调度进入内存到运行完毕的时间8、为了对紧急进程或重要进程进行调度,调度算法应采用(B)oA.先来先服务法B.优先级法C.短作业优先法D.时间片轮转法9、操作系统中,(A)负责对进程进行调度。
A.处理机管理B.作业管理C.高级调度管理D.存储和设备管理.10、如果系统中所有作业是同时到达的,则使作业平均周转时间最短的作业调度算法是短作业优先调度算法。
1K系统出现死锁的原因是(C )oA.计算机系统发生了重大故障B.有多个封锁的进程同时存在C.若干进程因竞争资源而无休止地等待着,不释放已占有的资源D.资源数大大少于进程数,或进程同时申请的资源数大大超过资源总数12、设系统中有n个进程并发,共同竞争资源X,且每个进程都需要m个X资源,为使该系统不会发生死锁,资源x至少要有(C)(A) n*m+1 (B) n*m+n (C) n*m+1 -n (D)无法预计 13、选出不正确的两条叙述(BE)OA、死锁是指因相互竞争资源使得系统中有多个阻塞进程的情况;B、若系统中并发运行的进程和资源之间满足互斥条件、占有且申请、不可抢占和环路条件,则可判定系统中发生了死锁;C、在对付死锁的策略中,解除死锁通常都是和检测死锁配套使用;D、产生死锁的原因可归结为竞争资源和进程推进顺序不当;E、在死锁的解决方法中,由于避免死锁采用静态分配资源所以对资源的利用率不高14、死锁预防是保证系统不进入死锁状态的静态策略,其解决方法是破坏产生死锁的四个必要条件之一。
大学计算机基础第3章课后习题答案

习题33-1选择题1-5 A C B B A 6-10 C D B A C 11-15 D D C C B 16-20 B C C D D 21 A3-2填空题:1. CPU的时钟频率2.算术逻辑部件、控制逻辑部件、寄存器组和内部总线3.微处理器、内存储器、总线、输入/输出接口4.静态随机存储器和动态随机存储器5. 数据总线、地址总线、控制总线6. 操作系统7. Universal Serial Bus8. 系统软件应用软件3-3思考题1. 在微型计算机系统中,从局部到全局存在3个层次:微处理器→微型计算机→微型计算机系统,这是3个不同的概念,但它们之间又有着密切的联系。
微型计算机(Microcomputer)以微处理器为核心,微型计算机系统(Microcomputer System)以微型计算机为主体,再配以相应的外部设备和软件,它是完整的计算机系统,具有实用意义,可以正常工作。
2. 微处理器主要性能指标①字长②外频③主频④倍频系数⑤缓存⑥多核心处理器⑦生产工艺⑧超线程技术3. 按照存储器在计算机中的作用,可分为内存储器和外存储器。
内存用于存放计算机当前正在执行的程序和相关数据,CPU可以直接对它进行访问。
内存储器按其工作方式的不同,又分为随机存取存储器(RAM)、只读存储器(ROM)和高速缓冲存储器。
RAM是指在CPU运行期间既可读出信息也可写入信息的存储器,但断电后,写入的信息会丢失。
ROM是只能读出信息而不能由用户写入信息的存储器,断电后,其中的信息也不会丢失。
Cache是用来存放当前内存中频繁使用的程序块和数据块。
外存储器,又叫辅助存储器,简称外存。
用于存放暂时不用的程序和数据,不能直接和CPU进行数据交换。
当CPU 需要执行外存中的某些程序和数据时,外存中存储的程序和数据必须先送入内存,才能被计算机执行。
常见的外存储器有软盘、硬盘、光盘和优盘等。
4. 外存储器(硬盘、光盘、U盘等);输入设备(键盘、鼠标、扫描仪、数码相机等);输出设备(显示器、打印机、绘图仪等);其他设备(网卡、声卡、调制解调器、视频卡等)。
计算机系统结构 第三章练习 答案

计算机系统结构第三章练习答案计算机系统结构-第三章练习答案第三章练习(1)一、单项选择题以下问题的四个备选答案中,只有一个是正确的。
请在问题后面的括号中填写正确答案的标签(a~d)。
1.程序员编写程序时使用的访存地址是()。
a、物理地址B.有效地址C.逻辑地址D.主存地址2.虚拟存储器通常采用的地址映像是(d)。
a、完全关联、组关联和直接图像B.直接图像C.组关联图像D.完全关联图像3.不属于堆栈型替换算法是()。
a、最近使用最少的替换算法B.先进先出替换算法C.最优替换算法d.近期最久未使用替换算法4.提高虚拟内存主存命中率的方法是()。
a.采用lfu替换算法并增大页面数b.采用fifo替换算法并增大页面c.采用fifo 替换算法并增大页面数d.采用lru替换算法并增大页面5.虚拟内存主要用于解决()问题。
a.便于程序的“访存操作”b.扩大存储系统的容量和提高存储系统的速度c.提高存储系统的速度d.扩大存储系统的容量6.独立于虚拟内存的等效访问速度为()。
a.辅存的容量b.主存的容量c.页面替换算法d.访存页地址流二、填空1.使二级存储系统的等效访问速度接近于第一级存储器访问速度的依据是程序的(局部它包括两个方面(时间局部性)和(空间局部性)。
2.程序的空间局部性意味着程序通常是(按顺序)存储和执行的,程序使用的数据通常是(群集)聚或集中)存储的。
3.假设T1和T2分别是CPU访问M1和M2中的信息所需的时间,H是命中M1的概率,则由m1和m2构成的二级存储系统的等效访问时间应当表示为(h*t1+(1-h)*t2)。
4.存储器速度性能可以采用存储器的(频宽)衡量,它是存储器单位时间能够访问的信息量5.虚拟存储器的存储管理方式有(页式)、(段式)和(段页式)三种。
6.页式虚拟存储器把(程序“虚拟”)空间和(主存储器“物理实”)空间都分成相同样大小的页面。
7.当两个虚拟空间的页面需要加载相同的主存页面时,称之为(实页面冲突或页面争用)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.参考答案:表3.12 题5用表src_type dst_type 机器级表示char int movsbl %al, (%edx)int char movb %al, (%edx)int unsigned movl %eax, (%edx)short int movswl %ax, (%edx)unsigned char unsigned movzbl %al, (%edx)char unsigned movsbl %al, (%edx)int int movl %eax, (%edx)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+y8.参考答案:(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=10=1。
(3)指令功能为:R[bx]←R[bx] or M[R[eax]+R[ecx]*8+4],寄存器BX 中内容改变。
改变后的内容为以下运算的结果:0x0100 or M[0x8049384]=0100Hor 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=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 00001000 0000and 0000 0001 0000 0000 1111 1111 0000 00001111 1111 0000 0000or 0000 0000 0000 0000 0000 0000 0001 0000 0111 1111 1111 1111 1111 1111 1111 1000 0 1000 0000 0000 0000 0000 0000 0000 1000+ 0000 0000 0000 0000 0000 0000 1000 0000 1111 1111 1111 1111 1111 1111 1111 0000 1 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 送EDXandl $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行缺失部分为:3int 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 送ECXimull %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-EAXleal (%ecx, %edx), %edx// R[edx ]←R[ecx]+R[edx],将y l *x 的高32位与y h *x 的低32位相加后送EDX movl 8(%ebp), %ecx //R[ecx ]←M[R[ebp]+8],将d 送ECXmovl %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)jb 指令中F6H 是偏移量,故其转移目标地址为:0x8048390+2+0xf6=0x8048488。
movl 指令的机器代码有10个字节,前两个字节是操作码等,后面8个字节为两个立即数,因为是小端方式,所以,第一个立即数为0804A800H ,即汇编指令中的目的地址0x804a800,最后4个字节为立即数00000001H ,即汇编指令中的常数0x1。
0000 0000 0001 0000 1111 1111 1111 1111 1 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中标志用完,然后再执行另一次逻辑判断并根据条件进行转移的操作。