1 “我们的问题” 1
1.1 我们如何着手? 1
1.2 为什么要研究这个问题? 2
1.3 问题的更进一步描述 3
1.3-1 控制器的输入 4
1.3-2 控制器的输出 5
1.4 问题的解法 6
1.5 设计的步骤 7
1.5-1 我们要解决什么样的问题? 7
1.5-2 规格 8
1.5-3 发展 10
1.5-4 实际化 13
1.5-5 测试 14
1.5-6 操作 14
1.6 设计周期 15
1.7 我们如何进行 16
1.8 习题 17
2 微处理机 19
2.1 简短的历史 19
2.2 结构 20
2.2-1 文纽曼结构 20
2.2-2 微处理机的结构 23
2.2-3 指令处理 25
2.2-4 堆叠 26
2.3 指令 27
2.3-1 指令种类 28
2.3-2 指令格式 34
2.3-3 定址模式 34
2.4 微算机的其它部份 36
2.4-1 记忆体 36
2.4-2 输入及输出 37
2.4-3 汇流排 38
2.5 程式规划:基本构成概念 39
2.5-1 顺序 40
2.5-2 条件 41
2.5-3 重覆 42
2.6 摘要 43
2.7 习题 44
3 简单的程式与MC68000 49
3.1 MC 68000的特性 51
3.1-1 68000的资源 52
3.1-2 程式规划的模式 54
3.1-3 资料型态 57
3.1-4 定址模式 58
3.1-5 指令集 59
3.2 顺序的例子 62
3.2-1 例题一:将25加到D0中的位元组 63
3.2-2 例题二:两个字相加 65
3.2-3 例题三:两字相加之另一例 66
3.2-4 例题四:三个暂存器中的字相加 68
3.2-5 例题五:将三个在记忆体中的长字相加 70
3.2-6 例题六:乘以5 71
3.2-7 例题七:对记忆体中做减法 72
3.2-8 例题八:字的除法 73
3.3 算术与数值 74
3.3-1 不带正负号的数量 75
3.3-2 二的补数 78
3.3-3 例题九:再将25加到D0中的位元组 81
3.3-4 例题十:字的除法(不带正负号数量) 82
3.4 条件 84
3.4-1 例题十一:重做将D0中的位元组与25相加 86
3.4-2 例题十二:字的比较 87
3.4-3 例题十三:分支程式 88
3.4-4 例题十四:字的选择 90
3.5 摘要 91
3.6 习题 92
4 简单的程式与iAPX 86/10 97
4.1 iAPX 86/10的特性 98
4.1-1 iAPX 86/10的资源 99
4.1-2 程式规划模式 101
4.1-3 资料型态 104
4.1-4 定址模式 105
4.1-5 指令集 105
4.2 顺序的例题 109
4.2-1 例题一:将25加到AL中的位元组 110
4.2-2 例题二:两个字相加 110
4.2-3 例题三:两字相加之另一例 112
4.2-4 例题四:将三个暂存器中的字相加 113
4.2-5 例题五:将记忆体中的三个长字相加 113
4.2-6 例题六:乘以5 114
4.2-8 例题八:字的除法 115
4.2-7 例题七:从记忆体中做减法 115
4.3 算术与数 116
4.3-1 不带正负号的量 117
4.3-2 二的补数 117
4.3-3 例题九:将25加到AL中的位元组 117
4.3-4 例题十:位元组除法(不带正负号的量) 117
4.4 条件 118
4.4-1 例题十一:将25加到AL中的位元组之另一例 120
4.4-2 例题十二:字的比较 121
4.4-3 例题十三:程式分支 122
4.4-4 例题十四:字的选择 123
4.5 摘要 124
4.6 习题 124
5 含回路的程式 129
5.1 简单回路例题 131
5.1-1 例题一:延迟 131
5.1-2 例题二:另一个延迟 132
5.1-3 例题三:执行18次回路 133
5.1-4 例题四:将记忆体中的十个字相加 135
5.1-5 例题五:将记忆体中的十个字相加 137
5.1-6 例题六:将记忆体中的十个字相加 141
5.1-7 例题七:将记忆体中的十个字相加(iAPX 86/10) 144
5.1-8 例题八:搜寻最大值 145
5.2 根据我的方式来做:品质 147
5.2-1 例题九:计算系数 148
5.2-2 例题十:再度计算系数 149
5.2-3 差异处为何? 151
5.3 含有其他出口的回路 153
5.3-1 例题十一:找寻阵列中的第一个$0D 153
5.3-2 例题十二:再找第一个$0D 156
5.3-3 例题十三:加总直到结束记号 158
5.3-4 例题十四:加总直到结束记号(iAPX 86/10) 160
5.4 摘要 163
5.5 习题 165
6 输入/输出控制 169
6.1 I/O控制的方法 170
6.1-1 程式控制的I/O 170
6.1-2 中断驱动I/O 171
6.1-3 直接记忆体存取I/O 173
6.1-4 使用哪一个? 173
6.2 有关中断的一些字汇 174
6.3 MC 68000的中断 175
6.3-1 MC 68000的中断处理 175
6.3-2 MC 68000的自向量 177
6.4 MC 68000的例题 178
6.4-1 例题一:脉波计数器 179
6.4-2 例题二:以中断方式做脉波计数器 182
6.4-3 例题三:输入下一个字元 184
6.4-4 例题四:数字的输入 185
6.5 中断与堆叠 188
6.6-1 例题五:ASCII字母的输入及输出 193
6.6 更进一步的MC 68000例题 193
6.6-2 例题六:送出含同位元的资料 195
6.6-3 例题七:时钟 197
6.7 iAPX 86/10的中断 199
6.7-1 iAPX 86/10的中断处理 200
6.7-2 例题八:送出含同位元的资料(iAPX 86/10) 201
6.7-3 例题九:时钟 204
6.8 摘要 207
6.9 习题 208
7 程式的分段 213
7.1 模组及其他的区块 214
7.2 设计的例题 216
7.3 在组合语言中的技巧 222
7.4 例题 223
7.4-1 例题二:长字的加总 223
7.4-2 例题三:间接式传递的加总 224
7.4-3 例题四:求平均值 226
7.4-4 例题五:再一次求平均值 226
7.4-5 例题六:再一次求出平均值 229
7.4-6 例题七:寻找ASCII字元 232
7.4-7 例题八:二进数平方根 234
7.4-8 例题九:再一次求平均值 239
7.5 LINK及UNLK 241
7.5-1 LINK及UNLK的功能 241
7.5-2 使用LINK及UNLK 244
7.5-3 例题十:汉诺宜塔 246
7.5-4 LINK-UNLK的一些说明 253
7.5-5 iAPX 86/10的Link及Unlink 254
7.6 摘要 257
7.7 习题 258
8 平行介面 263
8.1-1 类比讯号 264
8.1 讯号 264
8.1-2 数位讯号 265
8.2 MC 68000汇流排 267
8.3 Motorola的周边介面配接器(PIA) 272
8.3-1 PIA的结构 273
8.3-2 PIA的连接 276
8.3-3 PIA的程式规划 278
8.3-4 MC 6821 PIA的细节 280
8.3-5 标准的PIA配置 284
8.3-6 应考虑的PIA电气问题 285
8.3-7 例题一:PIA的配置 285
8.4 平行介面的例题 288
8.4-1 例题二:一个简单的开关 288
8.4-2 例题三:电话型的键盘 294
8.4-3 例题四:键盘格子 299
8.4-4 例题五:再次的处理格子键盘 304
8.4-5 例题六:多个七段式显示器 307
8.5 摘要 310
8.6 习题 311
9 串列式介面 315
9.1 串列通讯 317
9.2 iAPX 86/10的汇流排 321
9.2-1 iAPX 86/10的汇流排线 322
9.2-2 iAPX 86/10的最小模式 324
9.2-3 iAPX 86/10的最大模式 325
9.3 Intel 8251A串列式介面 326
9.3-1 8251A的结构 327
9.3-2 8251A的连接 331
9.3-3 8251A的暂存器 333
9.3-4 8251A的程式规划 338
9.4 8251A的例题 338
9.4-1 例题一:接收一个字元 339
9.4-2 例题二:接收一个含同位元的字元 342
9.4-3 例题三:经由ISR接收字元 344
9.4-4 例题四:重新传回修改过的字元 346
9.4-5 例题五:送出讯息 349
9.5 摘要 352
9.6 习题 353
10 资料结构 357
10.1 位元处理 358
10.1-1 例题一:改变位元0 358
10.1-2 例题二:清除低位的半个位元组 359
10.1-3 例题三:整组位元的组合 360
10.1-4 例题四:交换半个位元组 361
10.2 二进码十进数 362
10.2-1 例题五:输入ASCII数字 363
10.2-2 例题六:包装BCD的加法 365
10.2-3 例题七:未包装BCD的加法 368
10.2-4 例题八:未包装BCD的乘法 371
10.2-5 例题九:未包装BCD的除法 373
10.3 字元及字串 374
10.3-1 例题十:字串的输入 375
10.3-2 例题十一:字串长度 378
10.3-3 例题十二:字串拷贝 379
10.3-4 例题十三:字串序连 382
10.3-5 例题十四:取字串的左边 383
10.3-6 例题十五:取字串的右边 385
10.3-7 例题十六:取出字串的中间部份 387
10.3-8 例题十七:子字串 389
10.4 浮点数 392
10.4-1 例题十八:取得浮点数 395
10.4-2 例题十九:储存浮点数 397
10.4-3 例题二十:浮点数正规化 398
10.4-4 例题二十一:浮点数相加 400
10.4-5 例题二十二:浮点数相乘 403
10.5 阵列 405
10.5-1 例题二十三:阵列的加总 405
10.5-2 例题二十四:阵列搜寻 407
10.5-3 例题二十五:二元搜寻 411
10.6 摘要 415
10.7 习题 416
11 完成我们的问题 421
11.1 设计步骤之复习 421
11.2 我们所要解的是什么问题? 422
11.3 规格 422
11.4 设计 425
11.4-1 显示器 426
11.4-2 键盘 429
11.4-3 温度感测器 430
11.4-4 时间源 431
11.4-5 类比-数位转换 431
11.4-6 交流矽控整流器控制 432
11.4-7 PIA接线之使用情形 433
11.4-8 零件明细表 434
11.4-9 资料结构 435
11.5 实际化 438
11.5-1 主程式 439
11.5-2 显示资料 444
11.5-3 读取按键 445
11.5-4 周期及温度 447
11.5-5 时间 453
11.5-6 系统的其余部份 457
11.6 测试 471
11.7 操作 472
11.8 摘要 473
11.9 习题 473
附录A:MC 68000指令集 475
附录B:MC 68000指令集摘要 493
附录C:iAPX 86/10指令集 500
附录D:iAPX 86/10指令集摘要 515
附录E:ASCII码 520
索引 521