1.汇编编译器和链接器是如何协同工作的?
汇编编译器将汇编语言转换成机器语言,汇编编译器也可以生成源代码列表文件,包括行号,内存地址,源代码语句,程序中使用的符号及变量的交叉引用列表,链接器把编译器创建的多个文件合并链接成可运行程序。
2.学习汇编语言会在哪些地方增强你对操作系统的理解?(答案不明确)
- 熟悉计算机体系结构
- 基本的布尔逻辑概念以及如何应用于程序设计和硬件设计
- IA-32如何管理内存,如果使用保护模式,实模式以及虚拟模式
- 高级语言编译器如何将高级语言翻译成汇编和机器语言。
- 高级语言如何在机器语言层次实现算术表达式,循环和逻辑结构。
- 数据的表示方式,包括有符号和无符号整数,实数以及字符数据
- 机器语言的调试技巧会提高
- 了解程序是如何通过中断服务程序,系统调用,共享内存区与操作系统进行交互的以及操作系统如何加载和运行应用程序
3.在高级语言和机器语言的对比中,一对多的关系是什么意思?
一条简单的高级语言指令会被扩展成多条机器语言指令。
4.请解释下程序设计语言可移植性概念。
一种语言的程序语言代码可以在多种计算机系统上编译运行,那么它就是可移植的。
5.intel 80X86系列处理器的汇编语言与VAX或者motorala 68x00等系统的汇编是否相同?
不相同,汇编语言和CPU指令集是密切关联的,每种CPU体系对应不同的汇编。
6.举一个嵌入式系统应用的例子
汽车的燃油控制和点火系统,空调系统,安全系统,飞行控制系统,手持计算机,调至解调器,打印机以及其他计算机外围智能设备。
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