最近学习汇编,先从windows开始,选择《intel汇编语言程序设计》(第五版)作为参考。没有课后答案总觉得不踏实,在论坛找到了英文版的答案,自己翻译一遍作为巩固
(1)汇编器和连链接器是如何协同工作的?
答案:汇编器把汇编源代码转化为机器语言。链接器把汇编器长生的单独的文件组合成一个单独的可执行程序。
(2)学习汇编语言会在哪些方面增强你对操作系统的理解?
答案:学习汇编语言,可以加深你对应用程序是如何通过终端处理程序、系统调用和共享内存的方式和计算机操作系统交互的有更深的理解;也有助于理解操作系统是如何加载和执行应用程序的。
(3)当高级语言和机器语言对比时,一对多的关系表示什么意思?
答案:在一对多关系中,一条高级语言语句会被扩展成多条汇编语句或机器指令。
(4)请解释一下程序设计语言可移植性的概念。
答案:语言的可移植性是其编写的源程序可以在多种计算机系统上编译运行。
(5)Intel80x86系列处理器的汇编语言与Vax或者motorola 68x00等系统的汇编语言是否相同?
答案:它们是不同的。每种汇编语言都建立在一种处理器系列或特定的计算机系统上。
(6)举一个嵌入式系统应用的例子。
答案:例如,汽车燃料和点火系统,空调控制系统,加密系统,飞行控制系统,PDA,调制解调器,打印机和其他智能计算机外设。
(7)什么是设备驱动程序?
答案:设备驱动程序是把通用的操作系统指令转换为特定厂商的硬件设备可执行的具体操作动作的程序。
(8)在汇编语言和C++语言中,哪种语言对指针变量类型检查更为严格?
答案:C++不允许不同类型的指针互相赋值。汇编语言对指针没有这样的严格的限制。
(9)列举两种应用的例子,使用汇编语言比使用高级语言更加适合。
答案:汇编应用的领域:硬件设备驱动程序,嵌入式系统,要求直接访问硬件的计算机游戏等。
(10)为什么在编写直接访问某种品牌打印机的应用程序时,高级语言并不是理想的工具?
答案:高级语言不提供直接访问硬件的功能。即使提供了,晦涩编程技巧的应用可能会导致维护的困难。
(11)为什么通常不使用汇编语言编写大型的应用程序?
答案:汇编语言提供很少的结构支持,这导致代码结构的组织必须要由程序员来完成。而程序员水平的不同可能导致对现存代码的维护变得非常困难。
(12)挑战:参考本章前面相应的例子,将C++表达式X=(Y*4)+3转换为汇编语言的形式。
mov eax,Y
mov ebx,4
imul ebx
add eax,3
mov X,eax
(1)用自己的话描述虚拟机的概念
答案:计算机以层次方式构建,每个层次代表一个高层到低层指令集的转换。
(2)程序员为什么不用机器语言编写应用程序?
答案:因为那涉及大量的(硬件)细节,并且完全有数字组成,导致程序难于理解。
(3)(对/错)当用L1语言编写的解释程序运行的时候,其每条指令都由L0语言编写的程序解码并执行。
答案:对
(4)说明在处理不同虚拟机层次上的语言时使用的翻译技术。
答案:一个完整的L1程序通过一个L0程序(专门用于转换)处理,转换为可以直接在计算机硬件上运行的L0程序。
(5)为什么说intel IA-32处理器体系结构包含了一个虚拟机的例子?
答案:IA-32的虚拟86操作模式模拟最初IBM个人计算机使用的Intel 8086/8088处理器的体系结构。
(6)什么软件使编译好的java程序几乎可以再任何计算机上运行?
答案:java虚拟机
(7)按由低到高的顺序,说出本节中6个虚拟机层次的名字。
答案:数字逻辑,微结构,指令集结构,操作系统,汇编语言,高级语言。
(8)程序员为什么不用微代码编写应用程序?
答案:特殊的微结构命令通常是受保护的商业机密。还有,用微代码变成是不切实际的,因为完成一个初级操作就需要3或4条微指令。
(9)在图1.1所示的虚拟机中,机器语言被用在了哪个层次?
答案:指令集体系结构
(10)虚拟机汇编语言层的语句被翻译成哪个(或哪些)其他层次的语句?
答案:微结构层和指令集体系结构层
(1)解释术语LSB。
答案:Least significant bit (bit 0)最低有效位。
(2)解释术语MSB。
答案:Most sianificant bit(最高位)最高有效位。
(3)下列无符号二进制整数对应的十进制数是什么?
a.11111000 b.11001010 c.11110000
答案:a.248 b.202 c.240
(4)下列无符号二进制整数对应的十进制数是什么?
a.00110101 b.10010110 c.11001100
答案:a.53 b.150 c.204
(5)下面每对二进制整数的和分别是什么?
a.00001111+00000010 b.11010101+01101011 c.00001111+00001111
答案:a.0001 0001 b.1 0100 0000 c.0001 1110
(6)下面每对二进制整数的和分别是什么?
a.10101111+11011011 b.10010111+11111111 c.01110101+10101100
答案:a.1 1000 1010 b.1 1001 0110 c.1 0010 0001
(7)下列数据类型分别包含多少个字节?
a.字(word) b.双字(doubleword) c.八字节(quardword)
答案:a.2 b.4 c.8
(8)下列数据类型分别包含多少个数据位?
a.字(word) b.双字(doubleword) c.八字节(quardword)
答案:a.16 b.32 c.64
(9)为表示下列无符号整数,最少需要多少个二进制位?
a.65 b.256 c.32768
答案:a.7 b.9 c.16
(10)为表示下列无符号整数,最少需要多少个二进制位?
a.4095 b.65 534 c.2 134 657
答案:a.12 b.16 c.22
(11)下列二进制数字对应的十六进制数是什么?
a.1100 1111 0101 0111 b.0101 1100 1010 1101 c.1001 0011 1110 1011
答案:a.CF57 b.5CAD c.93EB
(12)下列二进制数字对应的十六进制数是什么?
a.0011 0101 1101 1010 b.1100 1110 1010 0011 c.1111 1110 1101 1011
答案:a.35DA b.CEA3 c.FEDB
(13)下列十六进制数对应的二进制数是什么?
a.E5B6AED7 b.B697C7A1 c.234B6D92
答案:a.1110 0101 1011 0110 1010 1110 1101 0111
b.1011 0110 1001 0111 1100 0111 1010 0001
c.0010 0011 0100 1011 0110 1101 1001 0010
(14)下列十六进制数对应的二进制数是什么?
a.0126F9D4 b.6ACDFA95 c.F69BDC2A
答案:a.0000 0001 0010 0110 1111 1001 1101 0100
b.0110 1010 1100 1101 1111 1010 1001 0101
c.1111 0110 1001 1011 1101 1100 0010 1010
(15)下列十六进制整数对应的无符号十进制数是什么?
a.3A b.1BF c.4096
答案:a.58 b.447 c.16534
(16)下列十六进制整数对应的无符号十进制数是什么?
a.62 b.1C9 c.6A5B
答案:a.98 b.457 c.27227
(17)下列有符号十进制整数对应的16位十六进制数是什么?
a.-26 b.-452
答案:a.FFE6 b.FE3C
(18)下列有符号十进制整数对应的16位十六进制数是什么?
a.-32 b.-62
答案:a.FFE0 b.FFC2
(19)下列16位十六进制数表示的是有符号整数,请将其转化为十进制数。
a.7CAB b.C123
答案:a.+31915 b.-16093
(20)下列16位十六进制数表示的是有符号整数,请将其转化为十进制数。
a.7F9B b.8230
答案:a.+32667 b.-32208
(21)下列有符号二进制数对应的十进制数是什么?
a.10110101 b.00101010 c.11110000
答案:a.-75 b.+42 c.-16
(22)下列有符号二进制数对应的十进制数是什么?
a.10000000 b.11001100 c.10110111
答案:a.-128 b.-52 c.-73
(23)下列有符号十进制整数对应的8位二进制数(补码)是什么?
a.-5 b.-36 c.-16
答案:a.1111 1011 b.1101 1100 c.1111 0000
(24)下列有符号十进制整数对应的8位二进制数(补码)是什么?
a.-72 b.-98 c.-26
答案:a.1011 1000 b.1001 1110 c.1110 0110
(25)ASCII大写字符X的十六进制值和十进制值分别是什么?
答案:58H ,88D
(26)ASCII大写字母M的十六进制值和十进制值分别是什么?
答案:4DH,77D
(27)为什么要发明Unicode?
答案:处理超过256个字符的国际字符集。
(28)挑战:用256位无符号整数能表示的最大值是多少?
答案:-1
(29)挑战:用256位有符号整数能表示的最大值是多少?
答案:+-1
(1)请表述如下的布尔表达式:。
答案:(not X)OR Y
(2)请表述如下的布尔表达式:。
答案:X AND Y
(3)布尔表达式的值是什么?
答案:T
(4)布尔表达式的值是什么?
答案:F
(5)布尔表达式的值是什么?
答案:T
(6)为描述的布尔函数创建一个真值表,列出所有可能的输入和输出。
答案:
A | B | |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
(7)为描述的布尔函数创建一个真值表,列出所有可能的输入和输出。
答案:
A | B | |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
(8)挑战:如果一个布尔函数有四个输入,那么气真是表需要多少行?
答案:16行
(9)挑战:有4个输入的多路复用器需要多少个选择位?
答案:2bit,值分别为:00,01,10,11