标题：嵌入式软件基础：C语言与汇编的融合
图书信息
出版社: 高等教育出版社; 第1版 (2008年4月1日)
外文书名: Fundamentals of Embedded Software: Where C and Assembly Meet
平装: 234页
正文语种: 简体中文
开本: 16
ISBN: 7040161052
条形码: 9787040161052
尺寸: 23.5 x 18.8 x 0.9 cm
重量: 381 g
作者简介
作者：(美)刘易斯 译者：陈宗斌
内容简介
《嵌入式软件基础:C语言与汇编的融合(翻译版)》是对高等院校本科二年级计算机组成原理与汇编语言程序设计的传统教材的全新替代版。《嵌入式软件基础:C语言与汇编的融合(翻译版)》以实践中最常运用的方式讲解汇编语言——实现小型、快速或特殊目的的例程，这些例程由主程序（高级语言编写，如C）调用。通过运用嵌入式软件环境，《嵌入式软件基础:C语言与汇编的融合(翻译版)》介绍多线程程序设计、可抢占式系统与非可抢占式系统、共享资源和调度，从而为操作系统、实时系统、计算机网络及基于多处理器的设计等后续课程提供了坚实的基础。
《嵌入式软件基础:C语言与汇编的融合(翻译版)》适用于高等院校工科各专业本科嵌入式计算机系统程序设计、C语言程序设计及汇编语言程序设计类课程，也可供相关技术人员学习参考。
目录
序言
第1章 导论
1.1 什么是嵌入式系统
1.2 嵌入式软件设计目标有何独特之处
1.3 “实时”意味着什么
1.4 “多任务”意味着什么
1.5 嵌入式处理器的功能有多强
1.6 使用哪些编程语言
1.7 什么是“实时内核”
1.8 如何构建独特的嵌入式应用程序
1.9 典型的嵌入式程序有多大
1.10 本书中使用的软件
习题
第2章 数据表示
2.1 固定精度的二进制数字
2.1.1 按位记数制
2.1.2 二进制一十进制转换
2.1.3 十进制一二进制转换
2.1.4 计数
2.1.5 固定精度和翻转
2.1.6 十六进制表示
2.2 整数的二进制表示
2.2.1 带符号整数
2.2.2 同一个值的正的表示和负的表示
2.2.3 解释2的补码数的值
2.2.4 关于范围和溢出的进一步说明
2.2.5 2的补码和硬件复杂性
2.3 实数的二进制表示
2.3.1 定点表示
2.3.2 使用通用的16.16格式的定点表示
2.3.3 使用通用的32.32格式的定点表示
2.3.4 浮点表示
2.4 文本的ASCII表示
2.5 二进制编码的十进制表示
习题
第3章 充分利用C语言
3.1 整型数据类型
3.2 混合数据类型
3.3 有用的typedef和define
3.4 操纵内存中的位
3.4.1 测试位
3.4.2 设置、清除和反转位
3.4.3 提取位
3.4.4 插入位
3.5 操纵：I/O端口中的位
3.5.1 只写I/O端口
3.5.2 通过读/写区分的端口
3.5.3 通过顺序访问区分的端口
3.5.4 通过写入数据中的位区分的端口
3.6 访问内存映射的I/O设备
3.6.1 通过指针访问数据
3.6.2 数组、指针和“取地址”运算符
3.7 结构
3.7.1 打包的结构
3.7.2 位域
3.8 变型访问
3.8.1 强制转换对象的地址
3.8.2 使用共用体
习题
第4章 程序员眼中的计算机结构
4.1 内存
4.2 中央处理器
4.2.1 运算器
4.2.2 其他寄存器
4.2.3 控制器
4.3 输入/输出
4.4 Intel架构介绍
4.4.1 指令格式
4.4.2 指令操作数
4.4.3 操作数限制
4.4.4 寄存器
4.4.5 栈
4.5 Intel实模式架构
4.5.1 分段寻址
4.5.2 寻址模式
4.6 Intel保护模式架构：
4.6.1 段寄存器和全局描述符表
4.6.2 平坦内存模型
4.6.3 寻址模式
4.7 操作数与地址长度覆盖前缀
4.8 Intel数据操纵指令
4.8.1 数据移动、栈和I/O指令
4.8.2 算术指令
4.8.3 按位指令
4.8.4 移位指令
习题
第5章 C语言与汇编语言的融合
5.1 用汇编语言编程
5.2 寄存器使用约定
5.3 寻址选项的典型应用
5.3.1 访问地址为常量的数据
5.3.2 访问地址为变量的数据
5.4 指令序列
5.4.1 复合条件
5.4.2 If－Then－Else语句
5.4.3 建立循环
5.4.4 带字符串指令的更快的循环
5.5 过程调用和返回
5.6 参数传递
5.7 获取参数
5.8 一切都是按值传递
5.9 临时变量
习题
第6章 输入/输出编程
6.1 IntelI/O指令
6.2 同步、传送速率和等待时间
6.3 轮询的等待循环
6.4 中断驱动的I/O
6.4.1 硬件响应
6.4.2 中断服务例程
6.4.3 可编程中断控制器
6.4.4 缓冲区与队列
6.4.5 用汇编语言编写中斯服务例程
6.4.6 用C语言编写中断服务例程
6,4.7 不可屏蔽的中断
6.4.8 软件中断
6.4.9 异常
6.5 直接存储器存取
6.5.1 双缓冲
6.6 几种方法的比较
习题
第7章 并发软件
7.1 前台/后台系统
7.1.1 线程状态和串行化
7.1.2 管理等待时间
7.1.3 防止中断越界
7.1.4 将工作转移到后台
7.2 多线程编程
7.2.1 独立线程的并发执行
7.2.2 环境切换
7.2.3 非抢先式(协作式)多任务处理
7.2.4 抢先式多任务
7.3 共享资源和临界区
7.3.1 禁用中断
7.3.2 禁用任务切换
7.3.3 自旋锁
7.3.4 互斥对象
7.3.5 信号量
习题
第8章 调度
8.1 线程状态
8.2 挂起线程
8.3 环境切换
8.4 循环调度
8.5 基于优先级的调度
8.5.1 优先级倒置
8.5.2 优先级继承协议
8.5.3 优先级最高限度协议
8.6 分配优先级
8.6.1 截止期限驱动的调度
8.6.2 速率单调调度
8.7 死锁
8.8 监视计时器
习题
第9章 内存管理
9.1 C语言中的对象
9.2 作用域
9.2.1 进一步认识局部作用域
9.2.2 进一步认识全局作用域
9.3 生存期
9.4 自动分配
9.4.1 存储类“寄存器”
9.5 静态分配
9.6 用于区分静态与自动的3个程序
9.6.1 对象创建
9.6.2 对象初始化
9.6.3 对象析构
9.7 动态分配
9.7.1 内存碎片
9.7.2 内存分配池
9.8 可变大小的自动分配
9.8.1 可变大小的数组
9.9 递归函数与内存分配
习题
第10章 共享内存
10.1 识别共享对象
10.1.1 共享全局数据
10.1.2 共享私有数据
10.1.3 共享函数
10.2 可重入函数
10.3 只读数据
10.3.1 类型限定符const
10.4 应避免的编码习惯
10.4.1 在局部静态对象中保持内部状态的函数
10.4.2 返回局部静态对象地址的函数
10.5 访问共享内存
10.5.1 处理器字长的影响
10.5.2 只读和只写访问
10.5.3 类型限定符volatile
习题
第11章 系统初始化
11.1 内存布局
11.2 CPU
11.2.1 建立平坦内存模型
11.2.2 切换到保护模式
11.3 C运行时环境
11.3.1 从ROM复制到RAM户
11.3.2 将未初始化数据置
11.3.3 建立堆
11.4 系统计时器
11.4.1 计时器0：计时器滴答信号
11.4.2 计时器1：内存刷新
11.4.3 计时器2：扬声器频率
11.5 中断系统
11.5.1 初始化IDT
11.5.2 初始化8259PIC
11.5.3 安装新的中断服务例程
附录A 配书光盘上的内容
附录B DJGPPC/C++编译器
附录C NAsM汇编器
附录D 编程项目
附录E Libepe库
附录F 引导加载程序
附录G 词汇表