《计算系统基础》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:陈道蓄主编;王浩然,葛季栋编著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2013
  • ISBN:9787040367607
  • 页数:367 页
图书介绍:计算系统基础是一门可操作性很强的计算机概论课程,作者多年来主持南京大学软件工程专业和计算机专业第一门基础课程的教学,通过芯片到高级语言的计算系统构建课程,并将课程与教学改革的思路融入教材中。全书通过逐次介绍位、门电路、处理器环境、机器语言、汇编语言、routine到C语言的基本要素,给初学者建立起完整的计算系统的概念,并使得学生掌握面向过程的程序设计和结构化程序设计的基本技巧。本课程设计了一个虚拟机环境NUC-1,作为全书教学和实验的基本环境,使得本课程成为一门操作性、系统性俱强的计算机入门课程。

第1章 引言 1

1.1本书的目标 1

1.2计算机与计算机系统 1

1.3计算系统 3

1.4本书的结构 6

习题1 7

第2章 C语言程序设计简介 9

2.1高级程序设计语言 9

2.2高级语言程序翻译技术 9

2.3 C语言概述 10

2.4第一个例子:Hello World 11

习题2 16

第3章 类型和变量 18

3.1类型和变量 18

3.1.1 3种基本数据类型 18

3.1.2标识符 20

3.1.3作用域 21

3.2运算符 22

3.3附加主题 29

3.4问题求解:长度单位换算 32

习题3 33

第4章 结构化程序设计和控制结构 36

4.1结构化程序设计 36

4.2选择结构 38

4.2.1 if语句 38

4.2.2 if-else语句 40

4.3循环结构 43

4.3.1 while语句 43

4.3.2 for语句 44

4.3.3 do-while语句 47

4.4其他控制结构 47

4.4.1 switch语句 48

4.4.2 break和continue语句 51

4.5问题求解 51

4.5.1问题1:计算自然对数之底e的近似值 51

4.5.2问题2:找出100~200之间的素数 54

4.5.3问题3:计算字符串“int”出现的次数 56

习题4 58

第5章 测试和调试 63

5.1软件开发过程 63

5.2错误类型 64

5.3测试 67

5.4调试 69

5.5正确编程 72

习题5 73

第6章 数据的机器级表示 76

6.1位和数据类型 76

6.2整数数据类型 77

6.3二进制补码整数 79

6.4二进制-十进制转换 81

6.5算术运算 83

6.6逻辑运算 85

6.7其他表示法 89

6.7.1 ASCII码 89

6.7.2浮点数类型 91

6.7.3十六进制表示法 93

6.8 C语言中的数据类型 95

习题6 98

第7章 数字逻辑电路 101

7.1晶体管 101

7.2门电路 102

7.3组合逻辑电路 107

7.4基本存储元件 112

7.5存储器 114

7.6时序逻辑电路 117

7.6.1状态的概念 117

7.6.2有限状态机 118

7.6.3示例:交通灯控制器 119

7.7DLX子集的数据通路 122

习题7 124

第8章 冯·诺依曼模型 127

8.1基本组件 127

8.2 DLX——冯·诺依曼模型示例 129

8.3指令处理 131

8.4 DLX的有限状态机 135

习题8 137

第9章 指令集结构 139

9.1指令集结构概述 139

9.2算术/逻辑运算指令 143

9.2.1 I-类型运算指令 143

9.2.2 R-类型运算指令 146

9.3数据传送指令 147

9.3.1基址+偏移量模式 148

9.3.2示例 150

9.4控制指令 150

9.4.1条件分支 151

9.4.2示例:计算10个整数的和 152

9.4.3控制循环的两种方法 154

9.4.4示例:利用标志加一列数 154

9.4.5 J指令 155

9.4.6 TRAP指令 155

9.5 DLX数据通路 156

9.6 C语言的数据类型与计算机的ISA 157

习题9 159

第10章 机器语言程序设计 162

10.1解决问题 162

10.1.1实现3种结构的DLX控制指令 162

10.1.2示例:文档加密 163

10.2调试 167

10.2.1调试操作 167

10.2.2示例:调试器的使用 168

习题10 173

第11章 汇编语言 176

11.1汇编语言程序设计 176

11.2 DLX汇编语言 176

11.2.1指令 177

11.2.2伪操作 181

11.2.3示例:文档加密 183

11.3汇编过程 185

11.3.1一个“两趟”的过程 185

11.3.2第一趟:构建符号表 185

11.3.3第二趟:生成机器语言程序 187

11.4链接 189

11.4.1可执行映像 189

11.4.2链接器的主要工作 190

11.5编译:C-DLX 191

11.5.1一个简单的例子 191

11.5.2控制结构的例子 192

11.6栈——一种抽象数据类型 194

11.6.1两个实现栈的例子 195

11.6.2在存储器中实现栈 195

11.7为变量分配空间 197

11.7.1全局数据区和运行时栈 197

11.7.2 C语言源水平调试器 199

习题11 199

第12章 输入和输出 205

12.1 I/O基础 205

12.2键盘输入 207

12.3显示器输出 208

12.4内存映射I/O的数据通路 210

12.5 DLX键盘输入例程 211

习题12 214

第13章 自陷例程和中断 215

13.1 DLX自陷例程 215

13.1.1系统调用 215

13.1.2 TRAP机制 216

13.1.3 TRAP指令 217

13.1.4完整的机制 218

13.1.5 IN/OUT服务例程 219

13.1.6 HALT服务例程 222

13.1.7 PUTS服务例程 223

13.1.8寄存器的保存和恢复 225

13.2中断驱动的I/O 226

13.2.1中断驱动的I/O概述 226

13.2.2中断信号的产生 227

13.2.3中断服务例程 229

13.3 C中的I/O 235

13.3.1 I/O流 235

13.3.2 putchar和getchar 235

13.3.3 printf和scanf 237

习题13 239

第14章 子例程 243

14.1调用/返回机制 243

14.1.1 JAL(R)指令 244

14.1.2改进IN服务例程 245

14.2示例:两个多位整数加法 248

14.3库例程 255

14.3.1示例:计算直角三角形斜边长 255

14.3.2 C标准库 258

14.4子例程的测试与调试 258

习题14 259

第15章 函数 263

15.1函数 263

15.2 C语言中的函数 263

15.2.1带参数的函数 264

15.2.2示例:计算直角三角形斜边长 266

15.3 C函数在底层的实现 268

15.3.1运行时栈 268

15.3.2函数调用机制 270

15.3.3完整的调用实现 274

15.4问题求解 275

15.4.1问题1:小写转换为大写 276

15.4.2问题2:计算凸多边形的面积 277

15.5函数的测试与调试 279

15.6 C中的库函数 281

习题15 283

第16章 指针和数组 288

16.1指针 288

16.1.1声明指针变量 290

16.1.2指针运算符 291

16.1.3使用指针传递引用 292

16.1.4问题求解:计算商和除数 294

16.1.5空指针 296

16.2数组 296

16.2.1数组的声明和使用 296

16.2.2问题求解 297

16.2.3数组与指针之间的关系 301

16.2.4数组作为参数 301

16.2.5字符串 304

16.2.6示例:冒泡排序 307

16.2.7数组的常见错误 309

16.2.8二维数组 309

习题16 311

第17章 递归 315

17.1递归简介 315

17.2问题求解 317

17.2.1问题1:汉诺塔 317

17.2.2问题2:二分法查找 321

17.3递归在底层的实现 323

17.3.1示例:斐波纳契数列 323

17.3.2递归调用机制 324

习题17 327

附录 330

附录A 文件I/O 330

附录A.1 ASCII文件 331

附录A.2二进制文件 333

附录B 结构体 334

附录B.1结构体定义和变量声明 334

附录B.2结构体数组 338

附录C 动态数据结构 341

附录C.1动态存储分配 341

附录C.2链表 344

附录D DLX模拟器 352

附录D.1 DLX汇编语言编辑器 352

附录D.2 DLX模拟器 354

附录D.3链接多个目标文件 358

附录E 附录练习题 360

索引 362

参考文献 367