logo资料库

四川大学汇编语言程序设计答案.pdf

第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
资料共38页,剩余部分请下载后查看
第2章作业答案
第4章作业答案
第5章作业答案
第6章作业答案
第7章作业答案
第8章作业答案
    课后答案网,用心为你服务!    大学答案 --- 中学答案 --- 考研答案 --- 考试答案  最全最多的课后习题参考答案,尽在课后答案网(www.khdaw.com)! Khdaw团队一直秉承用心为大家服务的宗旨,以关注学生的学习生活为出发点, 旨在为广大学生朋友的自主学习提供一个分享和交流的平台。  爱校园(www.aixiaoyuan.com) 课后答案网(www.khdaw.com) 淘答案(www.taodaan.com)  
1. 请将下列十进制数转换为二进制数,并统一使用 8 位二进制数表达。 (1)9 00001001 (2)25 00011001 (3)126 01111110 (4)207 11001111 (5)100 01100100 (6)10 00001010 (7)16 00010000 (8)92 01011100 (9)63 00111111 (10)255 11111111 2. 请将下列二进制数转换为十进制数。 (1)(00000001)2 (2)(01000010)2 1 66 (3)(10010011)2 147 (4)(01010101)2 (5)(01100100)2 85 100 (6)(10000000)2 128 (7)(11100111)2 (8)(00000011)2 231 3 (9)(01111111)2 127 3.请将下列八进制数或十六进制数转换为 8 位二进制数。 (1)(137)8 (2)(062)8 01011111 00110010 (3)(005)8 00000101 (4)(5A)16 (5)(39)16 01011010 00111001 (6)(1F)16 00011111
4.请将下列二进制数分别转换为八进制和十六进制数 (1)(01011010)2 (132)8 (5A)16 (2)(01100001)2 (141)8 (61)16 (3)(01110111)2 (167)8 (77)16 5.请将下列二进制数转换为 8 位补码。 (1)(+00110001)2 (2)(-00010011)2 00110001 11101101 (3)(-01010100)2 10101100 (4)(+00000000)2 (5)(-01110111)2 00000000 10001001 (6)(-01100101)2 10011011 6.请将下列 8 位补码转换为二进制数。(注:教材原题中方括号记法不当,在此纠正) (1)10010001 (2)00110010 -01101111 +00110010 (3)11100110 -00011010 (4)11111111 (5)11111001 -00000001 -00000111 (6)11000000 -01000000 7.请将下列十进制数转换为 8 位二进制数,作为 8 位无符号数编码完成相应运算,给出运 算结果,并且判断运算的有无溢出。 (1)56+32 00111000 + 00100000 0 01011000 最高位无进位,运算无溢出
(2)100+75 01100100 + 01001011 0 10101111 最高位无进位,运算无溢出 (3)123+8 01111011 + 00001000 0 10000011 最高位无进位,运算无溢出 (4)125+134 01111101 + 10000110 1 00000011 最高位有进位,运算有溢出 (5)200+105 11001000 + 01101001 1 00110001 最高位有进位,运算有溢出 (6)26+34 00011010 + 00100010 0 00111100 最高位无进位,运算无溢出 注:自行练习无符号数减法运算时的溢出判断,注意不能使用补码加法代替无符号数减法 来判断 8.请将下列十进制数转换为 8 位二进制补码,完成相应运算,给出运算结果,并且判断运 算有无溢出。
(1)-123+66 [-123]补=10000101 [66] 补=01000010 10000101 + 01000010 11000111 溢出分析:正+负,无溢出 (2)62-54 [62]补=00111110 [-54] 补=11001010 00111110 + 11001010 1 00001000 溢出分析:正+负,无溢出 (3)130+140 [130]补=010000010 [140] 补=010001100 分析:8 位补码表示范围为-128~127,需 9 位补码才能表示这两个带符号数,因此不能作补 码运算 (4)-175-90 [-175]补=101010001 分析:8 位补码表示范围为-128~127,需 9 位补码才能表示-175,因此不能作补码运算 (5)-78-9 [-78]补=10110010 [-9] 补=11110111
10110010 + 11110111 1 10101001 溢出分析:负+负=负,运算正确,无溢出 (6)66+75 [66] 补=01000010 [75]补=01001011 01000010 + 01001011 0 10001101 溢出分析:正+正=负,运算结果不是正确的 8 位补码,有溢出 注:补码加减运算溢出判断方法 1)正+负,无溢出 2)正+正=正,无溢出;正+正=负,溢出; 3)负+负=负,无溢出;负+负=正,溢出; 各种加减运算均可等价为以上三种情况 9.请简述 ASCII 码的概念,并说明该编码中的优越性。 答:ASCII 码为一种字符代码,它的实质是各种字符形状(点阵)的编号。该编码中,大小 写英文字母的编号是以字母顺序连续编排,便于字符处理程序设计;数字字符‘0’~‘9’ 的 ASCII 码为 31H~39H(十六进制记法),编码连贯且容易转换为对应的数值,与 BCD 码 间也具有方便的转换关系,使得数字字符串直接参与运算成为可能。 10.请简述 BCD 码的概念,并说明该编码的主要用途。 答:BCD 码是一种用于表述十进制数的二进制编码,它使用 4 个连续的二进制位表示一个 十进制位,并限制其合法范围为 0~9。BCD 码主要用于使用二进制运算指令实现十进制数 的运算,此功能需要结合二进制算术运算指令(加、减、乘、除)与 BCD 码运算调整指令 才能完成,需要在运算中的十六进制进、借位调整为十进制进、借位。
1.8086/8088 CPU 被划分哪两个功能模块?这样划分的目的是什么? 答:8086、8088CPU 内部被划分为 EU(Execute Unit)和 BIU(Bus Interface Unit)两个功 能模块。EU 为执行单元,其主要功能为对机器指令译码,按照时序生成各种控制信号来执 行指令或其它时序过程,按照指令的要求完成各种运算。该单元与系统总线没有直接的交互 操作。BIU 为总线接口单元,其主要功能为内存单元的物理地址计算,将控制信号、地址信 号、数据信号传递到系统总线,或从系统总线接收状态信号、数据信号,从内存中读取下一 条指令并保存在指令队列中。该单元与系统总线直接进行交互操作。将 CPU 划分这两个模 块的主要目的在于将取指令与执行指令两种具有独立性的操作分离,若 EU 当前执行的指令 不使用总线,则 BIU 可以在 EU 执行当前指令的同时通过总线从内存中读取下一条指令, 使当前指令的执行周期与下一条指令的取指周期在时间上形成重叠,从而提高程序执行的速 度。此划分方式为 CPU 最初级的流水线机制体现。 2.请简述逻辑地址、物理地址的概念,并说明二者间的转换关系。 答:逻辑地址与物理地址均为内存单元的地址表示形式,其中逻辑地址为 CPU 内部的地址 形式,物理地址为系统总线上的地址形式。系统总线所使用的物理地址提供对内存单元的直 接定位,8086、8088CPU 的地址总线为 20 条,即物理地址为 20 位,寻址范围为 220=1M 字 节。由于 8086、8088CPU 内部的寄存器均为 16 位,无法直接表示 20 位的物理地址,因此 使用由 16 位段基值和 16 位偏移量构成的逻辑地址形式,并且由 BIU 单元内的地址加法器 完成逻辑地址到物理地址的转换,转换方法如下: 段基值*16+偏移量=物理地址 CPU 通过总线访问内存单元时,所使用的是物理地址,但指令系统、程序设计中使用的一 定是逻辑地址。 3.8086/8088 CPU 中的寄存器被分为哪几个类别,它们分别的大致功能是什么? 答:8086、8088CPU 中的寄存器被划分为数据寄存器、地址指针寄存器、段寄存器、控制 寄存器几种类别,其中数据寄存器用于保存完成运算所需要的源数据、运算结果;地址指针 寄存器用于保存内存单元逻辑地址中的偏移量或偏移量分量;段寄存器用于保存内存单元逻 辑地址中的段基值;控制寄存器包括 IP(指令指针)与 FR(标志寄存器),无条件、条件 转移指令都通过修改(IP)实现程序流程转移,而 FR 中的标志位会影响条件转移指令的判 断,从而间接影响程序的执行流程。
4.IP 寄存器的功能是什么?(IP)在哪些情况下会被修改? 答:IP 是指令指针寄存器,其功能为提供 BIU 单元将要从内存读取的下一条指令的偏移量, 该寄存器固定与 CS 段寄存器搭配使用,形成下一条指令的完整物理地址。CPU 顺序执行内 存中的指令序列时,会不断修改(IP),使之指向下一条指令;除此之外,转移指令、循环 控制指令、子程序调用、返回指令、中断调用、返回指令都是通过修改(IP)来达到程序流 程转移的目的。 5.8086/8088 CPU 中的指令队列是如何工作的?它与 CPU 中的寄存器有何不同? 答:指令队列是 8086、8088CPU 中的一个重要部件,位于 BIU 单元内部,它是由总线控制 逻辑自动进行操作,用于存放由 BIU 通过总线读取的机器指令,EU 单元对指令译码时仅从 指令队列读取机器指令,不再访问总线。指令队列是一组存储单元,从物理结构上观察,它 与指令系统中能够使用的寄存器没有区别。但是,指令系统中的机器指令并不能直接对指令 队列实施控制,因为机器指令的执行在时间上处于指令的执行周期,而不是取指周期,取值 周期是由 CPU 自动执行的,与机器指令规定的功能无关。换言之,对于通常的寄存器,我 们的程序能够对它们实施直接控制,但却不能控制指令队列,它由 CPU 自动管理。 6.CF、OF 标志的含义是什么?它们分别在什么时候提供的才是有效的标志位信息? 答:CF(Carry Flag)标志的含义是无符号数进位标志,多数情况下用于标识最近的算术运 算(通常是加减运算)中,如果将操作数解释为无符号数,其运算结果有没有超出字节或字 (与操作数类型有关)的表示范围。CF 提供有效标志位信息的前提如下: 1)最近影响标志位的指令要影响 CF 标志 2)该指令对 CF 标志的影响是有意义的 3)程序员将该指令的操作数解释为完整的无符号数(若为超过 16 位的长操作数运算,操作 数可能不是完整的,其解释请参见第 5 章中的带进位加法指令,CF 对长补码运算的进位衔 接仍然有效) OF(Overflow Flag)标志的含义是带符号数溢出标志,多数情况下用于标识最近的算术运 算(通常是加减运算)中,如果将操作数解释为补码,其运算结果有没有超出字节或字(与 操作数类型有关)的表示范围。OF 提供有效标志位信息的前提如下: 1)最近影响标志位的指令要影响 OF 标志
分享到:
收藏