第1章 组合语言程式计划之绪论(INTRODUCTION TO ASSEMBLY LANGUAGE PROGRAMMING) 1
指令的意义 1
计算机程式 2
程式计划之问题 3
使用八进位或是用十六进位 3
指令码的简字符号 5
组译程式 7
组译程式其他的性能 8
组合语言的缺点 9
高阶层语言 10
高阶层语言的优点 11
高阶层语言的缺点 12
微处理机的高阶层语言 14
你要采用那一种阶层的语言? 16
未来的发展如何? 17
为什么要写这本书? 17
第2章 组译程式(ASSEMBLERS) 19
组译程式的性能 19
组译程式的指令 19
标记 21
组译程式的运算码(简字符号) 23
DATA假指令 24
假指令 24
EQUATE(或EQUALS)假指令 26
ORIGIN假指令 28
RESERVE假指令 29
HOUSEKEEP ING假指令 30
有标记的假指令 31
位址栏与运算元栏 31
条件式组合 34
巨集 34
注解 36
组译程式的类型 37
误差讯息 39
载入程式 40
第3章 8080A与8085的组合语言指令集(THE 8080A AND 8085 ASSEMBLY LANGUAGE INSTRUCTION SETS) 41
CPU的暂存器以及状态旗号 42
8080A与8085的记忆器定址法 44
缩写 48
状态旗号 49
指令的简字符号 50
指令的目的码 50
指令的执行的时间与指令码 50
ACI-把即时资料与进位旗号加入累积器之中 60
ADC-把暂存器或记忆器之内容与进位旗号加入累积器之中 61
ADD-把暂存器或记忆器之内容加入累积器之中 63
ADI-把即时资料加入累积器之中 64
ANA-把暂存器或记忆器之内容与累积器作AND运算 65
ANI-把即时资料与累积器作AND运算 67
CALL-召用在运算元中所标示的副常式 69
CC-若进位旗号等於1,则召用在运算元中所标示的副常式 70
CM-若正负号旗号等於1,则召用在运算元中所标示的副常式 70
CMA-把累积器之内容变为补数(1的补数) 71
CMC-把进位旗号变为补数 72
CMP-把暂存器或累积器之内容与累积器作比较 73
CNC-若进位旗号等於0,则召用在运算元之中所标示的副常式 75
CNZ-若零值旗号等於0,则召用在运算元中所标示的副常式 76
CP-若正负体旗号等於0,则召用在运算元中所标示的副常式 76
CPE-若同位旗号等於1,则召用在运算元中所标示的副常式 77
CPI-把累积器之内容与即时资料作比较 78
CPO-若同位旗号等於0,则召用在运算元中所标示的副常式 79
CZ-若零值旗号等於1,则召用在运算元中所标示的副常式 80
DAA-把累积器之内容作十进位调整 81
DAD-把一对暂存器之内容,加入H与L暂存器之中 82
DCR-把暂存器或记忆器之内容减值 83
DCX-把一对暂存器之内容减值 85
DI-制止中断 86
EI-允许中断 87
HLT-暂停 88
IN-把资料输入累积器之中 89
INR-把暂存器或记忆器之内容增值 90
INX-把一对暂存器之内容增值 92
JC-有进位时跳越 93
JM-在负号时跳越 94
JMP-跳越至运算元所标示的副常式 94
JNC-在没有进位时跳越 95
JNZ-若零值旗号等於0时跳越 96
JP-若正负号为正时跳越 96
JPO-若同位为奇时跳越 97
JPE-若同位为偶时跳越 97
JZ-若零值旗号等於1时跳越 98
LDA-用直接定址法把记忆器中的资料载入累积器之中 99
LDAX-把暂存器配对所定址的记忆器位置之内容载入累积器之中 100
LHLD-把资料记忆器之内容直接载入H与L暂存器之中 101
LXI-把即时的16位元资料载入一对暂存器之中 102
MOV-移动资料 103
MVI-把即时资料载入暂存器或记忆器之中 105
NOP-没有动作 107
ORA-把暂存器或记忆器之内容与累积器作OR运算 108
ORI-把即时资料与累积器作OR运算 110
OUT-把资料从累积器中输出去 111
PCHL-跳越至由HL所定址的指令 112
POP-从堆叠器的顶层读取资料 113
PUSH-把资料写入堆叠器的顶层 114
RAL-把累积器之内容经过进位旗号向左旋转 115
RAR-把累积器之内容经过进位旗号向右旋转 116
RC-若进位旗号等於1时归回 117
RET-从副常式归回 118
RIM-读取中断罩幕 119
RLC-把累积器之内容向左旋转 120
RNC-若进位旗号等於0时归回 121
RM-若正负号旗号等於1时归回 121
RNZ-若零值旗号等於0时归回 122
RP-若正负号旗号等於0时归回 123
RPE-若同位旗号等於1时归回 124
RPO-若同位旗号等於0时归回 124
RRC-把累积器之内容向右旋转 125
RST-重新开始 126
RZ-若零值旗号等於1时归回 127
SBB-把暂存器或记忆器之内容与借位从累积器中减去 128
SBI-把即时资料与借位从累积器中减去 130
SIM-置定中断罩幕 131
SHLD-用直接定址法把H与L暂存器之内容存入记忆器之中 131
SPHL-把H与L暂存器之内容载入堆叠指引器中 133
STA-用直接定址法把累积器之内容储存至记忆器之中 134
STAX-把累积器之内容储存到由一对暂存器所定址的记忆器位置之中 135
STC-置定进位旗号 136
SUB-把暂存器或记忆器之内容从累积器中减去 137
SUI-把即时资料从累积器中减去 139
XCHG-把DE暂存器以及HL暂存器之内容互相交换 140
XRA-把暂存器或记忆器之内容与累积器作XOR运算 141
XRI-把即时资料与累积器作XOR运算 142
XTHL-把堆叠器顶层之内容与HL互相交换 144
标记 145
假指令 145
INTEL 8080A与8085组译程式的变换 145
组译程式的栏之结构 145
有标记的假指令 147
位址 147
条件式组合 149
巨集 149
BNPF格式 150
第4章 简单的程式(SIMPLE PROGRAMS) 151
例题的一般格式 151
习题的要点 152
1的补数 154
例题 154
8位元加法 155
向左移位一个位元 156
把四个MSBs遮除 157
把一个记忆器位置之内容清除 158
语句分解 159
在两个数目中寻找较大者 160
16位元加法 162
平方值表 164
16位元的1之补数 166
8位元减法 167
2的补数 167
习题 167
向左移位2个位元 168
把四个LSBs遮除 168
把一个记忆器位置的所有位元均置为1 168
语句组合 168
在两个数目中寻找较小者 168
24位元加法 169
平方值的和 169
16位元的2之补数 170
第5章 简单的程式循环(SIMPLE PROGRAM LOOPS) 171
资料的和 173
例题 173
16位元资料的和 176
负值元素的数目 178
寻找最大值 180
辨明一个二进位分数 183
习题 185
资料的核对和 185
16位元资料的和 185
一列数目中正数、负数与零的个数 186
寻找最小值 186
计算位元为1的个数 186
第6章 字元码资料(CHARACTER-CODED DATA) 188
例题 189
一串字元的长度 189
寻找第一个非空格字元 193
把前端的零用空格取代 196
在ASCII字元加上偶同位 199
图型匹配 202
习题 205
电传打字机讯息的长度 205
寻找最後一个非空格字元 205
截取十进位字串成为整数形态 206
字串的比较 207
核对ASCII字元中的偶同位 207
例题 209
十六进位变换为ASCII 209
第7章 码的变换(CODE CONVERSION) 209
十进位变换为7节 212
ASCII变换为十进位 215
BCD变换为二进位 217
ASCII字串变换为二进位数目 218
7节变换为十进位 221
十进位变换为ASCII 221
ASCII变换为十六进位 221
习题 221
二进位变换为BCD 222
二进位数目变换为ASCII字串 222
第8章 算术问题(ARITHMETIC PROBLEMS) 223
例题 223
复准度加法 223
十进位加法 226
8位元二进位乘法 229
8位元二进位除法 233
自身核对数-DOUBLE ADD DOUBLE,MOD 10 238
十进位减法 242
复准度减法 242
习题 242
8位元与16位元的二进位乘法 243
定了正负号的二进位除法 244
自身核对数-ALIGNED 1,3,7 MOD 10 244
第9章 表与序列(TABLES AND LISTS) 246
例题 246
在序列中加入单元 246
核对一个按次序排列的序列 249
用资料取代一链 252
8位元之分类 255
使用跳越表的键 258
习题 261
从序列中移出单元 261
在一个按次序排列的序列中加入单元 261
在链式序列中加入元素 262
16位元之分类 262
使用一个按次序的跳越表 263
第10章 副常式(SUBROUTINES) 264
副常式的说明书 266
例题 267
十六进位变换为ASCII 267
一串字元的长度 271
在ASCII字元中加入偶同位 274
图型匹配 277
复准度加法 281
习题 284
ASCII字元变换成十六进位 284
一串电传打字机讯息的长度 284
核对ASCI I字元中的偶同位 285
字串的比较 285
十进位减法 286
第11章 输入/输出(INPUT/OUTPUT) 287
定时之间隔(延迟器) 293
延迟常式 296
例题 297
延迟程式 297
按钮(或SPST开关) 299
双位置开关(或SPDT开关) 304
多位置开关 308
单-LED 315
7节LED显示管 318
开或关的按钮 325
用软体来抑制开关的弹跳 325
习题 325
对旋转式开关的控制 326
用指示灯记录开关的位置 326
在一个7节显示管上计数 327
更复杂的I/O装置 327
例题 331
未编码的键盘 331
编了码的键盘 338
数位至类比变换器 342
类比至数位变换器 347
电传打字机(TTY) 351
从一个编了码的键盘读取一个句子 360
习题 360
从一个未编码的键盘上,区分各键之闭合 360
可变振幅的方波产生器 361
类比读数的平均 362
每秒传输30个字元的终端机 362
第12章 中断处理(INTERRUPTS) 363
8080的中断处理系统 365
再启始(RST)指令 366
8085的中断处理系统 369
8214有优先次序的中断控制单元 370
8259可规划式的中断控制器 373
启动中断 375
例题 375
键盘控制的中断 379
印字机控制的中断 382
由实时间时脉所控制的中断 383
电传打字机控制的中断 388
更通用的中断服务常式 390
习题 392
测试控制的中断 392
键盘控制的中断 392
电传打字机所控制的中断 393
印字机控制的中断 393
实时间时脉所控制的中断 393
第13章 问题定义与程式设计(PROBLEMS DEFINITION AND PROGRAM DESIGN) 394
各步骤的定义 396
问题定义 398
输入之定规 398
输出之定规 398
处理部 399
处理错误 399
人为因素 400
对开关的反应 401
例题 401
用开关的记忆载入器 403
核验终端机 406
问题定义的回顾 411
程式设计 411
作流程图 412
例题 414
对开关的反应 414
用开关的记忆载入器 414
信用卡核验终端机 415
模组式程式 420
用开关的记忆载入器 422
例题 422
对开关的反应 422
核验终端机 423
模组式程式计划的回顾 424
结构式程式计划 424
例题 429
对开关的反应 429
用开关的记忆载入器 430
信用卡核验终端机 431
结构式程式计划的回顾 435
由上至下设计 436
对开关的反应 437
例题 437
用开关的记忆载入器 438
业务终端机 439
由上至下设计的回顾 440
问题定义与程式设计的回顾 442
参考资料 443
第14章 除错与测试(DEBUGGING AND TESTING) 444
简单的除错工具 444
较高等的除错工具 450
用核对表来除错 453
寻找错误 454
十进位变换为7节 458
除错之例题 458
按渐减的顺序分类 462
测试之绪论 469
测试之工具 469
选择测试之资料 470
测试之例题 472
分类之程式 472
自身核对数 472
测试之预防 472
结论 473
自身说明之程式 474
第15章 列说明书与重新设计(DOCUMENTATION AND RE-DESIGN) 474
注解 475
加注解的例题 477
复准度加法 477
电传打字机的输出 479
流程图作为说明书 480
结构式程式作为说明书 481
记忆器图 481
参数与定义表 482
库存常式 483
资料的和 484
程式库之例题 484
十进位变换为7节 485
十进位数目之和 486
整体的说明书 487
重新设计 488
重新组织以使用较少的记忆器 489
重新组织以使用较少的时间 490
大部的重新组织 491
参考资料 492
第16章 计划之范例(SAMPLE PROJECTS) 493
计划1:数位式计秒表 493
计划2:数位式温度计 506