INDEX
- * (star), 89, 273
- A Register, 69, 73-74
- Absolute assembly, 282-283
- Absolute load format, 234-236
- Absolute loaders, 234-244
- Absolute symbols, 247
- Abstract data types, 197
- Abstract instructions, 197
- Access time, 6
- Actual parameters, 201
- ADD (integer addition), 76-79, 119, 427
- Add time, 22-23
- Adders, 24
- Addition, 134-135
- Address, 8
- Addressing modes, 108, 381-382
- Aho, A., 343, 423
- ALF (alphanumeric constant), 94-95, 276, 294-295
- ALF statement assembly, 315
- Algol, 341, 218-219
- Alignment, 36
- Alphabetical order, 46
- ALU (arithmetic and logic unit), 11
- Amdahl 470V/6, 352
- Amdahl, G., 352
- AND (AND to a register), 128-129, 430
- Arguments, 203
- Arithmetic and logic unit (ALU), 11
- Arithmetic instructions, 73-74, 119-120, 427-428
- Arithmetic programming, 134-138
- Array indexing, 142-148
- Arrays, 142-148
- ASCII, 44-46, 365-366, 376, 378
- ASR-33 (TTY), 50, 51
- Assemblers, 82-84, 90-91, 266-322
- data structures, 267-273
- error handling, 309-311
- expression evaluation, 276
- initialization, 317-320
- input routines, 290-291
- listings, 280-281, 304-309
- load-and-go, 283
- macro, 326-336
- main loop, 312-317
- one-pass, 280
- operation, 90-91, 273-283
- pseudo-instructions, 91-96
- termination, 317-320
- two-pass, 277-279
- Assembly errors, 281-282
- Assembly language, 81-100, 420
- CDC 6600, 409-410
- expressions, 89
- HP 2100, 374-375
- IBM 360/370, 393-394
- Intel 8080, 418-419
- MIX, 84-100
- PDP-8, 361-362
- PDP-11, 384-385
- programming techniques, 132-159
- statement format, 85
- symbol definition, 87-90
- Asynchronous, 161
- Atomic Energy Commission, 352
- Auto-decrement, 382
- Auto-increment, 382
- Auto-indexing, 364
- Babbage, C., 411
- Barron, D., 263, 322, 423
- Base address of arrays, 142
- Base-displacement addressing, 391
- Basic, 341, 353
- Basili, V., 347, 423
- Batch systems, 345
- BCD (binary coded decimal), 13, 43, 57
- Bell, C., 423
- Bernstein, P., 345, 425
- Biased exponent, 35
- Biased notation, 28-29
- Binary
- Binary coded decimal (BCD), 13, 43
- Binary digit (Bit), 8, 14
- Binding time, 244
- Bipolar memory, 7
- Bit (binary digit), 8, 14
- Bit pattern, 8
- Bits per inch (bpi), 56
- Bits, significant, 16
- Blocking, 187-193
- Blocking factor, 189
- Boolean instructions, 129
- Bootstrap loaders, 262
- Brown, P., 336, 423
- BSS (block storage save), 249, 328
- Buffer, 162
- Buffering, 179-187
- Burroughs B5500, 396-402
- Burroughs computers, 353
- Burroughs Corporation, 353
- Byte-addressable memory, 378, 388
- Bytes, 10, 43, 69, 378, 388, 412
- Call by address, 216
- Call by name, 218-222
- Call by reference, 216-218
- Call by value, 215-216
- Call by value/result, 216
- Calling sequence, 203, 213
- Card punch, 52, 167
- Card reader, 53, 165
- Carry propagation, 15, 28
- Cartridges, 60
- Cassettes, 60
- Cathode-ray tube (CRT), 55, 345
- CCW (channel control word), 395-396
- CDC 3600, 34, 35, 352
- CDC 6600, 46, 403-410
- CDC computers, 352, 353
- Chaining, 257-258, 280, 395
- Channel, 50, 395-396, 402
- Channel command word (CCW), 395-396
- Channel programs, 395
- CHAR (convert to character code), 75, 76-79, 127-128, 168, 430
- Character code constants (ALF), 94-95
- Character codes, 42-48
- Character manipulation, 149-157
- Characteristic, 33
- Charge-coupled devices (CCD), 8
- Checksum, 238
- Cincinnati milacron, 354
- Clobbering a constant, 218
- Closed subroutines, 327
- CMP* (compare), 74, 121-122, 139-140, 428
- Cobol, 341, 343
- Coding, 132
- Collating sequence, 48
- Colon operator (:), 89, 115
- Column binary, 53
- Comment card, 85
- Comparing partial fields, 115
- Comparison indicator (CI), 70
- Comparison instructions, 74, 121-122, 428
- Compatible I/O devices, 42
- Compilers, 213-214, 341-343
- Complement, 25
- Compressed text, 335
- Computation unit, 2
- Compute-bound, 177
- Computer
- CON (constant definition), 92-93, 134, 276
- CON statement assembly, 315-317
- Condition code, 380, 414
- Conditional assembly, 336-340
- Conditional jumps, 122-123, 139-140
- Console, 48-50
- Console printer, 50
- Console typewriter, 49
- Constants, 97
- Control card interpreter, 345
- Control cards, 344-345
- Control characters, 44
- Control Data Corporation (CDC), 352
- Control switches, 49
- Control unit, 2, 62-65
- Conversion
- binary and decimal, 16-18
- binary and hexadecimal, 19
- binary and octal, 19
- octal and decimal, 21-22
- Conversions
- Conway, M ., 229, 423
- COPY program, 173-186
- Copy rule, 219
- Core planes, 5
- Coroutines, 229
- COSMAC, 412
- Cost of subroutines, 222-223
- CPU-bound, 177
- Cray Research Inc., 353
- Cray, S., 353
- CRAY-1, 353
- Cross reference table, 258
- Cross-assembler, 409
- CRT (cathode-ray tube), 55, 345
- Current page, 357, 370-371
- Cycle time, 5
- Cycle-stealing, 377
- Data general, 354, 412
- Datum, 354
- DEC* (decrement), 123-125, 141-142, 428
- Decimal
- addition, 13
- fractions, 31
- number representation, 13-14, 388
- Default values, 83
- Delimiters, 86
- Destructive readout, 5
- Device independent I/O, 344
- Digital Equipment Corporation (DEC), 10, 354, 368
- Direct access devices, 170
- Direct addressing, 108
- Direct memory access (DMA), 377, 385, 417, 420
- Disk, 58-59, 170-173
- Display lights, 48
- DIV (integer divide), 120, 136, 153, 428
- Division, 135-136
- DMA (direct memory access), 377, 385, 417, 420
- Donovan, J., 263, 322, 343, 345, 423, 424
- DOS/360, 352
- Double buffering, 186
- Double indexing, 111-112, 204
- Double indirection, 112
- Double precision floating point numbers, 35, 71
- Double-length registers, 30
- Doubly-defined symbols, 90
- DROP, 394
- Drop-through, 139, 145
- Drum, 87, 170-173
- Dynamic memory, 7
- Dynamic tables, 271
- EBCDIC, 46, 388
- Echo print, 50
- Eckhouse, R., 159, 193, 386, 423
- Effective address, 108
- Effective operand, 107
- END, 95-96, 276
- End of file, 174
- END statement assembly, 317
- End-around carry, 26
- ENDI (end IF), 339-340
- ENDM (end macro), 327
- ENN* (enter negative), 123-125, 428
- ENT* (enter), 123-125, 201, 428
- ENT (entry point), 250
- Entry point, 198, 248
- Epilogue, 201
- EQU (equivalence), 88, 95, 134, 175, 276
- EQU statement assembly, 314
- Error checking, 236-238, 281
- Error routines, 309-311
- Excess-M notation, 28-29
- Exchange macro (XCH), 330
- EXEC-8 operating system, 351
- Exponent, 33
- overflow, 37
- underflow, 37
- Expression evaluation, 276-277, 299-304
- Expressions, 89
- EXT (external), 249
- Extended arithmetic element (EAE), 361
- External BCD, 57
- External reference table, 256
- Externals, 248
- F field definition, 114-117
- FADD (floating point addition), 120-121, 430
- FCMP (floating point comparison), 120-121, 430
- FDIV (floating point division), 120-121, 430
- Field specifications, 114-117
- Fields, 146
- File directory, 344
- Files, 344
- Fixed-format, 85-87
- Fixed-head device, 171
- Fixed-point numbers, 31-33
- Flip-flop, 7
- Floating point
- Floppy disks, 60
- FLOT (convert integer to floating point), 120-121, 430
- Flow of an assembler, 273-283
- FMUL (floating point multiplication), 120-121, 430
- Formal parameters, 201
- Fortran, 214, 216-218, 341
- Forward references, 91, 134, 277-280
- Fraction representation, 31-39
- Free-format, 85-87
- FSUB (floating point subtraction), 120-121, 430
- Functions, 196-229
- GE computers, 353
- Gear, C., 66, 159, 193, 229, 322, 386, 423
- GECOS Operating System, 353
- General automation, 354
- General purpose macro processor, 336
- Global optimization, 79
- Global variables, 201-202
- Graham, R., 263, 322, 343, 423
- Gries, D., 343, 424
- Grishman, R., 410, 424
- Harris, 354
- Hash collision, 272
- Hashing, 271-273
- Hewlett-Packard Company (HP), 354, 369
- Hexadecimal
- Higher-level languages, 341-343
- High-order bits, 10
- HLT (halt), 75, 127, 430
- Hollerith, H., 53
- Hollerith punched card code, 46, 51-52
- Honeywell, 353, 354
- HP 2100, 38, 63, 354, 369-378
- HP computers, 354, 369
- Hsiao, D., 322, 424
- IBM 360/370, 34, 46, 263, 322, 336, 347, 387-396
- IBM, 53, 351-352
- IBM computers, 351-352
- IF (conditional assembly), 337-340
- IFD (if defined), 340
- Illegal opcodes, 90
- Immediate instructions, 74, 123-125, 428
- IN (start input), 125, 162, 165-166, 429
- INC* (increment), 123-125, 141, 428
- Index registers, 69, 108-110, 142-148, 183
- Indexed addressing, 108-110
- Indirect addressing, 110-114, 182-183, 356, 370, 382
- Ingermann, P., 229, 424
- In-line subroutines, 326
- Input parameters, 215
- Input/output (I/O), 41-61, 161-193, 420
- B5500, 402
- buffer, 162
- controller, 162
- devices, 48-61
- formatting, 168
- HP 2100, 375-378
- IBM 360/370, 394-396
- instructions, 74-75, 125-126, 429
- Intel 8080, 417-418
- overlap, 177
- PDP-11, 385-386
- PDP-8, 365-368
- programming, 161-193
- record lengths, 125-126
- record, 162
- system, 2, 41-61
- Instruction
- address, 62
- execution cycle, 62, 65
- execution times, 129-130
- format, 63
- lengths, 64
- modification, 151
- register (I), 62, 105
- repertoire, 63
- Instruction set, 63, 420
- Integer arithmetic instructions, 73-74, 119-120, 427-428
- Intel 8080, 354, 411-419
- Interactive systems, 345
- Interdata Corporation, 354
- Interface boards, 41
- Interfacing assembly language and higher-level languages, 214
- Interlock time, 130, 164
- Internal BCD, 57
- Interpreters, 343-344
- Inter-record gap, 56
- Interrupts, 367-368, 376-377, 394-395, 402, 417, 420
- Intersil IM6100, 354, 412
- I/O bound, 177, 279
- I/O (input/output), 41-61, 161-193, 420
- IOC (input/output control), 126, 162, 164, 169, 429
- J register, 69, 198
- JAE (jump if A even), 128-129, 430
- JAO (Jump if A odd), 128-129, 430
- JBUS (jump if busy), 125, 164, 429
- JE (jump if equal), 122, 139-140, 428
- JG (jump if greater), 122, 139-140, 428
- JGE (jump if greater or equal), 122, 139-140, 428
- JL (jump if less), 122, 139-140, 428
- JLE (jump if less or equal), 122, 139-140, 429
- JMP (jump), 123, 139-140, 428
- J*N (jump if negative), 123, 139-140, 429
- JNE (jump if not equal), 122, 139-140, 429
- J*NN (jump if non-negative), 123, 139-140, 429
- JNOV (jump on non-overflow), 74, 428
- J*NP (jump if non-positive), 123, 139-140, 429
- J*NZ (jump if non-zero), 123, 139-140, 429
- JOV (jump if overflow), 74, 138, 428
- J*P (jump if positive), 123, 139-140, 429
- JRED (jump if ready), 125, 164, 429
- JSJ (jump but save J register), 74, 123, 224, 428
- Jumps, 74, 122-123, 139-140, 428-429
- JXE (jump is X even), 128-129, 430
- JXO (jump if X odd), 128-129, 430
- J*Z (jump if zero), 123, 139-140, 429
- Kent, W., 336, 424
- Kernighan, B., 346, 424
- Keyboard, 49
- Keypunch, 52
- Keywords, 342
- Knuth, D., 100, 130, 159, 193, 229, 263, 273, 344, 348, 424
- Label definition, 311-312
- Large-scale integration (LSI), 411
- Latency time, 59, 171
- LD* (load), 77-79, 117-118, 427
- LD*N (load negative), 117-118, 427
- Lexical
- Library, 262-263, 213-214
- Line printer, 54, 167
- Linear search, 269, 297-299, 337
- Linkage editor, 259-261
- Linkers, 232-263
- Linking, 248
- Listings, 280-281, 304-309
- Literals, 97-98, 134
- Load negative operators (LD*N), 118
- Load-and-go assemblers, 283
- Loader code generation routines, 286-290
- Loader format, 234
- Loader record, 236
- Loaders, 232-263, 280
- Loading instructions, 73, 117-118, 427
- Loading partial fields, 115
- Local optimization, 79, 145-146
- Local symbols, 99-100
- Local variables, 201
- Location counter, 88, 273
- Lockheed Electronics, 354
- Logical organization of memory, 3, 8-10
- Logical record, 189
- Loops, 140-142
- Loose blocking, 189-190
- Low-order bits, 10
- LSI-11, 254, 412
- Machine instruction assembly, 313-314
- Machine language, 75-81
- MACR (macro definition), 327
- Macro
- MACRO-MIXAL, 327
- Macros, 326-336
- Madnick, S., 345, 424
- Magnetic
- bubbles, 8
- core memory, 3-7
- disk, 58-59, 170-173
- drum, 60, 170-173
- keyrecorder, 58
- tape, 56-58, 126, 168-170
- Mantissa, 33
- MAR (memory address register), 6, 105
- Mark sense readers, 55
- Master control program (MCP), 353, 397
- MCP (master control program), 353, 397
- MDR (memory data register), 6, 105
- Memory, 2, 3-10, 419-420
- address register (MAR), 6, 105
- B5500, 397-398
- CDC 6600, 404-407
- cycle time, 22
- data register (MDR), 6, 105
- HP 2100, 369-370
- IBM 360/370, 388-389
- Intel 8080, 412-413
- interleaving, 10
- map, 258
- MIX, 69
- PDP-8, 355-356
- PDP-11, 378-379
- MicroNOVA, 412
- Minus zero, 24
- MITS, 354
- MIX
- addressing modes, 108
- arithmetic instructions, 427-428
- assembly language (MIXAL), 84-100
- character code, 71
- computer system, iv-vi, 67-100, 104-130
- double indexing, 111-112
- double indirection, 112
- double precision floating point numbers, 71
- effective operand calculation, 107-114
- F field definition, 114-117
- field specifications, 114-117
- floating point instructions, 117
- floating point numbers, 70
- indirect addressing, 110-114
- input devices, 165-166
- instruction execution times, 129-130
- instruction execution, 104-108
- instruction interpretation, 104-108
- instruction set, 72-75, 426-431
- internal registers, 105, 106
- I/O devices, 71, 165-173
- memory, 69
- number representation, 70
- output devices, 166-168
- partial field specifications, 114-117
- postindexed indirection, 112
- preindexed indirection, 112
- registers, 69-70
- symbolic opcodes, 431-435, 436-440
- time unit, 129-130
- MIXAL, 84-100
- Mixing assembly and higher-level languages, 214
- Mnemonic opcodes, 73
- Modular computer systems, 354
- Morris, R., 273, 424
- MOS memory, 7
- Motivation for conditional assembly, 336-337
- Motorola M6800, 354, 412
- MOVE (move words in memory), 75, 127, 174, 430
- Moving-head device, 171
- MUL (integer multiplication), 119, 135, 428
- MULTICS operating system, 353
- Multiple
- Multiple-word arrays, 146-147
- Multiplication, 135
- Multiply-defined symbols, 90
- Multiprogramming, 345
- Negative
- Nested loops, 142
- Nested macros, 328-329
- Nested subroutines, 198
- Newell, A., 423
- NOP (no operation), 75, 101, 127, 430
- Normalized floating point numbers, 35-36
- Nova series computers, 354
- NUM (convert to numeric), 75, 127-128, 167-168, 429
- Number representation, 11-39
- Numbering of bits, 9
- Numbers, 11
- Numeral, 11
- Numeric opcodes, 436-440
- Octal digit, 18
- Octal number system, 18-21
- One-pass assemblers, 280
- One-pass loader, 256-258
- Ones' complement notation, 25-27, 29
- Opcode table, 267-270
- Opcodes, 426-440
- Open subroutines, 326
- Operating systems, 344-345
- Optical character readers, 55
- Optical memory, 60
- Optional fields, 83
- ORIG (define origin), 91-92, 134, 234, 248-249, 275
- ORIG statement assembly, 315
- ORR (or to a register), 128-129, 430
- OS/360, 352
- OUT (start output), 126, 162, 167-168, 429
- Output parameters, 216
- Overflow, 23, 26, 28, 37, 138, 149
- Overlapped I/O, 177-187
- Overlays, 261
- Overview, x
- Packed arrays, 149
- Pages, 356, 370
- PAL-III, 361
- Paper tape, 50-51
- Parameters, 196-229
- Parity, 45, 57
- Parsing, 342
- Partial field specifications, 114-117
- Pascal, 341
- Passing parameters
- PDP-11, 354, 378-386, 412
- PDP-8, 278, 354, 355-368, 412
- Pending interrupts, 377
- Peripheral devices, 42
- Physical organization of memory, 3-8
- Physical record, 189
- PL360, 347
- Place notation, 12
- Placement of loaders in memory, 237
- Plauger, P., 346, 424
- PL/I, 336, 341
- PL/MIX, 348
- Plotter, 55
- Polling, 366-367, 376
- POP (stack), 148-149
- Position independent code, 382
- Positional notation, 12
- Positive zero, 24
- Postindexed indirection, 112
- Postnormalization, 36
- Precision, 32-33, 34
- Preindexed indirection, 112
- Presser, L, 263, 424
- Prime, 354
- Priority interrupt system, 385-386, 376-377
- Procedures, 196-229
- Program
- Program counter (P), 62, 105
- Program counter relative addressing, 382
- Programming, 132
- Project MAC, 353
- Prologue, 201
- Pseudo-instructions, 91-96, 275-276
- PSW (program status word), 390, 394-395
- Punched cards, 51
- Pure code, 227
- PUSH (stack), 148-149
- Quote, 94
- Random access devices, 170
- Raytheon data systems, 354
- RCA, 353, 412
- Read-only memory (ROM), 7, 262
- Read-write cycle, 5
- Records, 56, 146, 162
- Recursive, 228
- Reentrant, 227-228
- Register
- Registers, 10, 419-420
- Relative addresses, 247
- Relocatable
- Relocation, 245-248
- Remington Rand, 351
- Repeating fractions, 32
- Replacement rule, 219
- Representation
- Reserved words, 342
- Restoring registers, 199-201
- Return address, 198-199
- ROM (read only memory), 7, 262
- Rosen, S., 424
- Rounding, 36
- Round-off error, 33
- Saving registers, 199-201
- Scientific data systems (SDS), 354
- Scientific notation, 33
- SDS computers, 354
- Searching an array, 145
- Sectors, 170
- Seek time, 59, 171
- Semantics, 341
- Semiconductor memory, 3, 7-8
- Sequential access, 168-170
- Serial reentrancy, 227
- Serially reentrant, 227
- Shift instructions, 75, 126-127, 429
- Siewiorek, D., 159, 193, 229, 322, 386, 424
- Sign and magnitude notation, 24-25, 29, 70
- Sign bit, 24
- Sign extension, 30
- Significant bits, 16
- Significant digits, 35
- SIMPL, 347
- Single precision numbers, 35
- SLA (shift left A), 126-127, 152, 429
- SLAX (shift left A and X), 126-127, 153, 429
- SLB (shift left bits), 128-129, 430
- SLC (shift left circular), 126-127, 153, 429
- Sloan, M., 66, 424
- Software, 1
- Space-time tradeoff, 145
- Special purpose computers, 62
- Speed
- of assembler, 321
- of core memory, 5
- of semiconductor memory, 7
- Sperry Rand, 351
- Sprocket holes, 50, 54
- SRA (shift right A), 126-127, 429
- SRAX (shift right A and X), 126-127, 136, 429
- SRB (shift right bits), 128-129, 252, 430
- SRC (shift right circular), 126-127, 429
- ST* (store), 77-79, 118-119, 427
- Stack, 148-149
- Standard calling sequences, 213
- Star (*), 89, 273
- Statement format, assembly language, 85
- Static
- Status lights, 48
- STJ (store J), 119, 198, 427
- Stone, H., 66, 159, 193, 229, 322, 386, 424
- Storage allocation, 79, 133-134, 142
- Storing
- Strachey, C., 336, 424
- Straight-line code, 140
- Strings, 94, 149
- Struble, G., 396, 424
- STZ (store zero), 119, 143-145, 427
- SUB (integer subtraction), 119, 135, 428
- Subroutines, 196-229
- Subtracters, 24
- Subtraction, 30, 135
- Summary, 10, 38-39, 61, 65-66, 100, 130, 159, 193, 229, 263, 322, 348, 419
- Supervisor calls, 394
- SWAP subroutine, 219-221
- Switch register, 48
- Switching time, 5
- Symbol definition, 87-90
- Symbol table, 87, 254, 270-273, 344
- Symbolic names, 83
- Symbolic opcodes, 73, 82, 426-440
- Synchronous, 161
- Syntax, 341
- Systems programming languages, 346-348
- Systems programs, 232-348
- Tab, 87
- Table enter routines, 294-299
- Table search routines, 294-299
- Tables, 146
- Tandem computers, 354
- Tanenbaum, A., 66, 424
- Tape, 50-51, 56-58, 126, 168-170
- Techniques for linking, 254-259
- Teletype printer, 167
- Teletype (TTY), 50, 55, 165
- Temporary variable, 136
- Ternary digits, 10
- Testing, 243-244
- Texas Instruments, 354
- Text editor, 346
- Text formatter, 346
- Thornton, J., 410, 424
- Thunk, 220-222
- Tight blocking, 190-191
- Time-sharing systems, 345
- Token, 157
- Top-down programming, 75-81, 133
- Tracks, 170
- Transfer time, 59, 171
- Transfer vector, 258
- Translators, 266
- Traps, 385-386
- True exponent, 35
- Truncation, 36
- Tsichritzis, D., 345, 425
- TTY (teletype), 50, 55, 165
- Turner, A., 347, 423
- Two-pass assemblers, 277-279
- Two-pass loader, 254-255
- Two's complement notation, 27-28, 29
- Typical memory sizes, 9
- Ullman, J ., 66, 263, 322, 343, 423, 425
- Unconditional jump, 123
- Undefined opcodes, 90
- Underflow stack, 149
- Univac computers, 351
- Unpacked arrays, 149
- Unpacking, 149-155
- Unsigned notation, 29
- Use table, 256
- USING, 394
- Variable number of parameters, 225
- Varian, 354
- Vectored interrupt system, 376, 385-386
- White, 263
- Wilkes, M., 345, 425
- Wirth, N., 347, 425
- Word, 8
- w-value, 92, 95, 96, 98
- X register, 69, 119-120, 171-173
- Xerox computers, 354
- Xerox Corporation, 354
- Xerox data systems (XDS), 354
- XOR (exclusive-or to A register), 128-129, 430
- Z80, 412
- Zero address machine, 398, 420
- Zero page, 356, 370-371
- Zilog corporation, 412