summaryrefslogtreecommitdiff
path: root/miniany/doc/www.osdata.com_topic_language_asm_address.txt
blob: ce2a78c9515f10a8100490c212de0056f1390926 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
                                                       [1][tsosdragon.jpg]
                                                                     music

   [2]OSdata.com: assembly language

                                 OSdata.com

                              Assembly Language

                     address space and addressing modes

                                   summary

       This web page examines addressing modes in assembly language.
   Specific examples of addressing modes from various processors are used
   to illustrate the general nature of assembly language.

                 free computer programming text book project

                    If you like the idea of this project,
                       then please donate some money.
                       [3]more information on donating

   [4]Google
   _______________________________
   Search

       See also [5]memory for a review of basics about memory.

   Now building a [6]For those with high speed connections, the very large
                  single file [7]summary is still on line.
     * [8]table of contents for assembly language section
     * [9]address space
     * [10]address modes

     * [11]absolute address
     * [12]immediate data
     * [13]inherent address
     * [14]register direct
     * [15]register indirect

     * [16]address register indirect
     * [17]address register indirect with postincrement
     * [18]address register indirect with predecrement
     * [19]address register indirect with preincrement
     * [20]address register indirect with postdecrement
     * [21]address register indirect with displacement

     [22]base register

     [23]register indirect with index register
     * [24]address register indirect with index register
     * [25]address register indirect with index register and displacement
     * [26]absolute address with index register

     [27]memory indirect
     * [28]memory indirect post indexed
     * [29]memory indirect pre indexed

     [30]program counter relative
     * [31]program counter indirect with displacement
     * [32]program counter indirect with index and displacement
     * [33]program counter memory indirect postindexed
     * [34]program counter memory indirect preindexed

     [35]further reading: books on assembly language

     [36]related software

     [37]further reading: websites

                                address space

       Address space is the maximum amount of memory that a processor can
   address. Some processors use a multi-level addressing scheme, with main
   memory divided into segments or pages and some or all instructions
   mapping into the current segment(s) or page(s).
     * MIX: 4000 words of storage

                               From [38]memory.

         Main storage is also called memory or internal memory (to
     distinguish from external memory, such as hard drives).

         RAM is Random Access Memory, and is the basic kind of internal
     memory. RAM is called “random access” because the
     processor or computer can access any location in memory (as
     contrasted with sequential access devices, which must be accessed in
     order). RAM has been made from reed relays, transistors, integrated
     circuits, magnetic core, or anything that can hold and store binary
     values (one/zero, plus/minus, open/close, positive/negative,
     high/low, etc.). Most modern RAM is made from integrated circuits.
     At one time the most common kind of memory in mainframes was
     magnetic core, so many older programmers will refer to main memory
     as core memory even when the RAM is made from more modern
     technology. Static RAM is called static because it will continue to
     hold and store information even when power is removed. Magnetic core
     and reed relays are examples of static memory. Dynamic RAM is called
     dynamic because it loses all data when power is removed. Transistors
     and integrated circuits are examples of dynamic memory. It is
     possible to have battery back up for devices that are normally
     dynamic to turn them into static memory.

         ROM is Read Only Memory (it is also random access, but only for
     reads). ROM is typically used to store thigns that will never change
     for the life of the computer, such as low level portions of an
     operating system. Some processors (or variations within processor
     families) might have RAM and/or ROM built into the same chip as the
     processor (normally used for processors used in standalone devices,
     such as arcade video games, ATMs, microwave ovens, car ignition
     systems, etc.). EPROM is Erasable Programmable Read Only Memory, a
     special kind of ROM that can be erased and reprogrammed with
     specialized equipment (but not by the processor it is connected to).
     EPROMs allow makers of industrial devices (and other similar
     equipment) to have the benefits of ROM, yet also allow for updating
     or upgrading the software without having to buy new ROM and throw
     out the old (the EPROMs are collected, erased and rewritten
     centrally, then placed back into the machines).

                                address modes

       The basic addressing modes are: register direct, moving date to or
   from a specific register; register indirect, using a register as a
   pointer to memory; program counter-based, using the program counter as
   a reference point in memory; absolute, in which the memory addressis
   contained in the instruction; and immediate, in which the data is
   contained in the instruction. Some instructions will have an inherent
   or implicit address (usually a specific register or the memory contents
   pointed to by a specific register) that is implied by the instruction
   without explicit declaration.

       One approach to processors places an emphasis on flexibility of
   addressing modes. Some engineers and programmers believe that the real
   power of a processor lies in its addressing modes. Most addressing
   modes can be created by combining two or more basic addressing modes,
   although building the combination in software will usually take more
   time than if the combination addressing mode existed in hardware
   (although there is a trade-off that slows down all operations to allow
   for more complexity).

       In a purely othogonal instruction set, every addressing mode would
   be available for every instruction. In practice, this isn’t the
   case.

       Virtual memory, memory pages, and other hardware mapping methods
   may be layered on top of the addressing modes.

                              absolute address

       In absolute address mode, the effective address in memory is part
   of the instruction. Some processors have full and short versions of
   absolute addressing (with short versions only pointing to a limited
   area in memory, normally starting at memory location zero). Unless
   overridden by hardware for virtual memory mapping, programs that use
   this address mode can not be moved in memory.

                               From [39]memory.

         The most basic form of memory access is absolute addressing, in
     which the program explicitely names the address that is going to be
     used. An address is a numeric label for a specific location in
     memory. The numbering system is usually in bytes and always starts
     counting with zero. The first byte of physical memory is at address
     0, the second byte of physical memory is at address 1, the third
     byte of physical memory is at address 2, etc. Some processors use
     word addressing rather than byte addressing. The theoretical maximum
     address is determined by the address size of a processor (a 16 bit
     address space is limited to no more than 65536 memory locations, a
     32 bit address space is limited to approximately 4 GB of memory
     locations). The actual maximum is limited to the amount of RAM (and
     ROM) physically installed in the computer.

         A programmer assigns specific absolute addresses for data
     structures and program routines. These absolute addresses might be
     assigned arbitrarily or might have to match specific locations
     expected by an operating system. In practice, the assembler or
     complier determines the absolute addresses through an orderly
     predictable assignment scheme (with the ability for the programmer
     to override the compiler’s scheme to assign specific operating
     system mandated addresses).

         This simple approach takes advantage of the fact that the
     compiler or assembler can predict the exact absolute addresses of
     every program instruction or routine and every data structure or
     data element. For almost every processor, absolute addresses are the
     fastest form of memory addressing. The use of absolute addresses
     makes programs run faster and greatly simplifies the task of
     compiling or assembling a program.

         Some hardware instructions or operations rely on fixed absolute
     addresses. For example, when a processor is first turned on, where
     does it start? Most processors have a specific address that is used
     as the address of the first instruction run when the processer is
     first powered on. Some processors provide a method for the start
     address to be changed for future start-ups. Sometimes this is done
     by storing the start address internally (with some method for
     software or external hardware to change this value). For example, on
     power up the Motorola 680x0, the processor loads the interrupt stack
     pointer with the longword value located at address 000 hex, loads
     the program counter with the longword value located at address 004
     hex, then starts execution at the frshly loaded program counter
     location. Sometimes this is done by reading the start address from a
     data line (or other external input) at power-up (and in this case,
     there is usually fixed external hardware that always generates the
     same pre-assigned start address).

         Another common example of hardware related absolute addressing
     is the handling of traps, exceptions, and interrupts. A processor
     often has specific memory addresses set aside for specific kinds of
     traps, exceptions, and interrupts. Using a specific example, a
     divide by zero exception on the Motorola 680x0 produces an exception
     vector number 5, with the address of the exception handler being
     fetched by the hardware from memory address 014 hex.

         Some simple microprocessor operating systems relied heavily on
     absolute addressing. An example would be the [40]MS-DOS expectation
     that the start of a program would always be located at absolute
     memory address x100h (hexadecimal 100, or decimal 256). A typical
     compiler or assembler directive for this would be the ORG directive
     (for “origin”).

         The key disadvantage of absolute addressing is that multiple
     programs clash with each other (expecting to use the same absolute
     memory locations for different and competing purposes).

     * MIX: two byte absolute addresses if I field is zero
     * Motorola 680x0, 68300: 16 bit short and 32 bit long versions;
       syntax: xxx.W or xxx.L

                               immediate data

       In immediate data address mode, the actual data is stored in the
   instruction. The sizes allowed for immediate data vary by processor and
   often by instruction (with some instructions having specific implied
   sizes).
     * Motorola 680x0, 68300: byte (8 bit), word (16 bit), and long word
       (32 bit) versions; sign extended; syntax: #xxx

                              inherent address

       Many instructions will have one or more inherent or implicit
   addresses. These are addresses that are implied by the instruction
   rather than explicitly stated. The two most common forms of inherent
   address are either a specific register or a memory location designated
   by the contents of a specific register.

                               register direct

       In register direct address mode, the source and/or destination is a
   register.

       Many processors distinguish between data and address register
   operations (note, in some cases a general purpose register can act as
   eeither an address or data register).

       In data register direct operations, flags are typically set or
   cleared. Data that is smaller than the register may be sign extended or
   zero filled to fill the entire register, or may be placed only in the
   portion of the register necessary for the size of the data, leaving the
   rest of the register unchanged.
     * Motorola 680x0, 68300: 32 bit data registers; data register direct
       operations set or clear flags; byte (8 bit), word (16 bit), and
       long versions (32 bit), only the low order portion of a destination
       register is changed; syntax: Dn

       In register to register (RR) operations, data is transferred from
   one register to another register or an instruction uses a source and
   destination register.
     * IBM 360/370: two byte instructions with a source and a destination
       register; 32 bit data registers; sets or clear flags; full word (32
       bit) transfers; syntax: source, destination (as just a hexadecimal
       number or as a symbolic name)
     * Motorola 680x0, 68300: instructions with a source and a destination
       register; 32 bit data registers; sets or clears flags; byte (8
       bit), word (16 bit), and long versions (32 bit), only the low order
       portion of a destination register is changed; syntax: Dn, Dn

       In address register direct operations, flags are not normally set
   or cleared. The address is usually sign extended to the full address
   size of the processor.
     * Motorola 680x0, 68300: 32 bit address registers; address register
       direct operations do not modify flags; word (16 bit) and long
       versions (32 bit, 24 bits for the original 68000), word-size
       operands are sign-extended to 32 bits; syntax: An

                              register indirect

       In register indirect address mode, the contents of the designated
   register are used as a pointer to memory. Variations of register
   indirect include the use of post- or pre- increment, post- or pre-
   decrement, and displacements.

       In address register indirect operations, the designated register is
   used as a pointer to memory.
     * Motorola 680x0, 68300: syntax: (An)

       In address register indirect with postincrement operations, the
   designated register is used as a pointer to memory, and then the
   register is incremented by the size of the operation. This is useful
   for a loop where the same or similar operations are performed on
   consecutive locations in memory. This address mode can be combined with
   a complimentary predecrement mode for stack and queue operations.
     * Motorola 680x0, 68300: syntax: (An)+

       In address register indirect with predecrement operations, the
   designated register is decremented by the size of the operations, and
   then the designated register is used as a pointer to memory. This is
   useful for a loop where the same or similar operations are performed on
   consecutive locations in memory. This address mode can be combined with
   a complimentary postincrement mode for stack and queue operations.
     * Motorola 680x0, 68300: syntax: -(An)

       In address register indirect with preincrement operations, the
   designated register is incremented by the size of the operations, and
   then the designated register is used as a pointer to memory. This is
   useful for a loop where the same or similar operations are performed on
   consecutive locations in memory. This address mode can be combined with
   a complimentary postdecrement mode for stack and queue operations.

       In address register indirect with postdecrement operations, the
   designated register is used as a pointer to memory, and then the
   register is decremented by the size of the operation. This is useful
   for a loop where the same or similar operations are performed on
   consecutive locations in memory. This address mode can be combined with
   a complimentary preincrement mode for stack and queue operations.

       In address register indirect with displacement operations, the
   contents of the designated register are modified by adding or
   subtracting a dispacement integer, then used as a pointer to memory.
   The displacement integer is stored in the instruction, and if shorter
   than the length of a the processor’s address space (the normal
   case), sign-extended before addition (or subtraction).
     * Motorola 680x0, 68300: 16 bit displacement integers, sign-extended
       to 32 bits; syntax: d(An)

                               base registers

                               From [41]memory.

         Base pointers (sometimes called segment pointers or page
     pointers) are special hardware registers that point to the start (or
     base) of a particular page or segment of memory. Programs can then
     use an absolute address within a page and either explicitly add the
     absolute address to the contents of a base pointer or rely on the
     hardware to add the two together to form the actual effective
     address of the memory access. Which method was used would depend on
     the processor capabilities and the operatign system design. Hiding
     the base pointer from the application program both made the program
     easier to compile and allowed for the operating system to implement
     program isolation, data/code isolation, protected memory, and other
     sophisticated services.

         As an example, the Intel 80x86 processor has a code segment
     pointer, a data segment pointer, a stack segment pointer, and an
     extra segment pointer. When a program is loaded into memory, an
     operating system running on the Intel 80x86 sets the segment
     pointers with the beginning of the pages assigned for each purpose
     for that particular program. If a program is swapped out, when it
     gets swapped back in, the operating system sets the segment pointers
     to the new memory locations for each segment. The program continues
     to run, without being aware that it has been moved in memory.

                    register indirect with index register

       In a register indirect with index register mode, two registers are
   added together to form the effective address of a pointer to memory.
   These are sometimes called the base register and index register. Many
   processors will have limits on which registers can be used for the base
   register and/or which registers can be used for the index register.

       In address/base register indirect with index register operations,
   the contents of the index register are added to the contents of the
   base address register to form an effective address in memory. Some
   processors allow for designating that less than the full size of the
   index register be used in the computation, with the designated low
   order portion of the index register being sign-extended for the
   effective address computation. Some processors require that a
   designated low order portion of the index register be used in the
   computation, with the designated low order portion of the index
   register being sign-extended for the effective address computation.

       In address/base register indirect with index register and
   displacement operations, the contents of the index register are added
   to the contents of the base address register and then an integer
   displacement is added or subtracted to form an effective address in
   memory. Some processors allow for designating that less than the full
   size of the index register be used in the computation, with the
   designated low order portion of the index register being sign-extended
   for the effective address computation. Some processors require that a
   designated low order portion of the index register be used in the
   computation, with the designated low order portion of the index
   register being sign-extended for the effective address computation. The
   integer displacement is stored in the instruction, and if shorter than
   the length of a the processor’s address space (the normal case),
   sign-extended before addition (or subtraction).
     * Motorola 680x0, 68300: 8 bit, 16 bit, or 32 bit displacement
       integer; index register component can be word (16 bit) or long (32
       bit) and can have a scale factor of 0, 1, 2, 4, or 8; syntax:
       d(An,Xn.s)

                    absolute address with index register

       In absolute address with index register operations, the contents of
   an index register are added to an absolute address to form an effective
   address in memory.
     * MIX: two byte absolute addresses with contents of one of five index
       registers

                               memory indirect

       In memory indirect address mode, a location in memory contains a
   value that is used as a pointer (with or without additional effective
   address computations) to another location in memory.

       In memory indirect postindexed operations, the processor calculates
   an intermediate memory address using a base register and a base
   displacement. The processor accesses the designated memory location,
   and adds the contents of the index register and an outer displacement
   to the memory value to yield the effective address. If either
   displacement and/or the index register is shorter than the length of a
   the processor’s address space (the normal case), each is
   sign-extended before addition (or subtraction). Base and outer
   displacements are stored in the instruction.
     * Motorola 680x0, 68300: 8 bit, 16 bit, or 32 bit base and outer
       displacement integers; index register component can be word (16
       bit) or long (32 bit) and can have a scale factor of 0, 1, 2, 4, or
       8; syntax: ([bAn], Xn.s, od)

       In memory indirect preindexed operations, the processor calculates
   an intermediate memory address using a base register, a base
   displacement, and an index register. The processor accesses the
   designated memory location, and adds an outer displacement to the
   memory value to yield the effective address. If either displacement
   and/or the index register is shorter than the length of a the
   processor’s address space (the normal case), each is sign-extended
   before addition (or subtraction). Base and outer displacements are
   stored in the instruction.
     * Motorola 680x0, 68300: 8 bit, 16 bit, or 32 bit base and outer
       displacement integers; index register component can be word (16
       bit) or long (32 bit) and can have a scale factor of 0, 1, 2, 4, or
       8; syntax: ([bAn, Xn.s], od)

                          program counter relative

       In program counter indirect addressing, the program counter is used
   as a reference for the effective address computation. This is most
   commonly used for short branching relative to the current program
   counter, allowing for object code that can be placed anywhere in
   memory.

                               From [42]memory.

         One approach for making programs relocatable is program counter
     relative addressing. Instead of branching using absolute addresses,
     branches (including subroutine calls, jumps, and other kinds of
     branching) were based on a relative distance from the current
     program counter (which points to the address of the currently
     executing instruction). With PC relative addreses, the program can
     be loaded anywhere in memory and still work correctly. The location
     of routines, subroutines, functions, and constant data can be
     determined by the positive or negative distance from the current
     instruction.

         Program counter relative addressing can also be used for
     determining the address of variables, but then data and code get
     mixed in the same page or segment. At a minimum, mixing data and
     code in the same segment is bad programming practice, and in most
     cases it clashes with more sophisticated hardware systems (such as
     protected memory).

       In program counter indirect with displacement operations, the
   effective address is the sum of the address in the program counter and
   the displacement integer stored in the instruction. If the displacement
   integer is shorter than the length of a the processor’s address
   space (the normal case), it is sign-extended before addition (or
   subtraction).
     * Motorola 680x0, 68300: 16 bit displacement integer; syntax: dPC

       In program counter indirect with index and displacement operations,
   the effective address is the sum of the address in the program counter,
   the contents of the index register, and the displacement integer stored
   in the instruction. If the displacement integer or designated portion
   of the index register is shorter than the length of a the
   processor’s address space (the normal case), each is sign-extended
   before addition (or subtraction).
     * Motorola 680x0, 68300: 8 bit, 16 bit, or 32 bit displacement
       integer; index register component can be word (16 bit) or long (32
       bit) and can have a scale factor of 0, 1, 2, 4, or 8; syntax:
       dPC,Xn

       In program counter memory indirect postindexed operations, the
   processor calculates an intermediate indirect memory address by adding
   a base displacement to the contents of the program counter. The value
   accessed at this memory location is added to the scaled contents of the
   index register and the outer displacement to yield the effective
   address. If either the base or outer displacement integer or designated
   portion of the index register is shorter than the length of a the
   processor’s address space (the normal case), each is sign-extended
   before addition (or subtraction).
     * Motorola 680x0, 68300: 8 bit, 16 bit, or 32 bit base and outer
       displacement integers; index register component can be word (16
       bit) or long (32 bit) and can have a scale factor of 0, 1, 2, 4, or
       8; syntax: ([dPC],Xn.s,od)

       In program counter memory indirect preindexed operations, the
   processor calculates an intermediate indirect memory address by adding
   a base displacement and scaled contents of an index register to the
   contents of the program counter. The value accessed at this memory
   location is added to the outer displacement to yield the effective
   address. If either the base or outer displacement integer or designated
   portion of the index register is shorter than the length of a the
   processor’s address space (the normal case), each is sign-extended
   before addition (or subtraction).
     * Motorola 680x0, 68300: 8 bit, 16 bit, or 32 bit base and outer
       displacement integers; index register component can be word (16
       bit) or long (32 bit) and can have a scale factor of 0, 1, 2, 4, or
       8; syntax: ([dPC,Xn.s],od)

     Now building a [43]For those with high speed connections, the very
               large single file [44]summary is still on line.

                      free music player coding example

       Programming example: I am making heavily documented and explained
   open source PHP/MySQL code for a method to play music for free —
   almost any song, no subscription fees, no download costs, no
   advertisements, all completely legal. This is done by building a
   front-end to YouTube (which checks the copyright permissions for you).

       View music player in action: [45]www.musicinpublic.com/.

       Create your own copy from the [46]original source code/ (presented
   for learning programming). Includes how to run this from your own
   computer if you don’t have a web site.

  OSdata.com is used in more than 300 colleges and universities around the
                                    world

                           [47]Read details here.
         Some or all of the material on this web page appears in the
      [48]free downloadable college text book on computer programming.
     __________________________________________________________________

                       [49]return to table of contents
                   [50]free downloadable college text book

                             [51]view text book
                                  HTML file

    Because I no longer have the computer and software to make PDFs, the
    book is available as an HTML file, which you can convert into a PDF.
     __________________________________________________________________

                                                     [52]Tweets by @osdata

       A web site on dozens of operating systems simply can’t be
   maintained by one person. This is a cooperative effort. If you spot an
   error in fact, grammar, syntax, or spelling, or a broken link, or have
   additional information, commentary, or constructive criticism, please
   e-mail [53]Milo. If you have any extra copies of docs, manuals, or
   other materials that can assist in accuracy and completeness, please
   send them to Milo, PO Box 1361, Tustin, CA, USA, 92781.

       [54]Click here for our privacy policy.
     __________________________________________________________________

                       [55]previous page [56]next page
                       [57]previous page [58]next page

                                [59]home page

                                two levels up

   [60]special topics

                                one level up

     * [61]programming languages
     * [62]Ada
     * [63]ALGOL
     * [64]C
     * [65]C++
     * [66]COBOL
     * [67]FORTRAN
     * [68]Java
     * [69]Pascal
     * [70]Perl
     * [71]PL/I

                                 peer level

     * [72]intro to assembly language
     * [73]data representation and number systems
     * [74]registers
     * [75]executable instructions
     * [76]data and address movement
     * [77]integer arithmetic
     * [78]floating arithmetic
     * [79]binary coded decimal
     * [80]advanced math
     * [81]data conversion
     * [82]logical operations
     * [83]shift and rotate
     * [84]bit and bit field manipulation
     * [85]character and string
     * [86]table operations
     * [87]high level language support
     * [88]program control and condition codes
     * [89]input/output
     * [90]system control
     * [91]coprocessor and multiprocessor
     * [92]trap generating

                 free computer programming text book project

     Building a free downloadable text book on computer programming for
     university, college, community college, and high school classes in
                            computer programming.

                    If you like the idea of this project,
                       then please donate some money.
                             send donations to:
                                    Milo
                                 PO Box 1361
                          Tustin, California 92781

                       Supporting the entire project:

       If you have a business or organization that can support the entire
   cost of this project, please contact [93]Pr Ntr Kmt (my church)

                      [94]more information on donating
         Some or all of the material on this web page appears in the
      [95]free downloadable college text book on computer programming.
     __________________________________________________________________

     I do the news as an unpaid volunteer for [96]KOCI 101.5 FM, Newport
                Beach/Costa Mesa (also available on the web)
     __________________________________________________________________

   [97]Google
   _______________________________
                                   Search

                             Made with Macintosh

       This web site handcrafted on [98]Macintosh [mac.gif] computers
   using [99]Tom Bender’s Tex-Edit Plus [texedit.gif] and served
   using [100]FreeBSD [freebsdm.gif] .

                       [101]Viewable With Any Browser
     __________________________________________________________________

       Names and logos of various OSs are trademarks of their respective
   owners.

       Copyright © 2000, 2001 [102]Milo

       Created: February 14, 2001 (from asm.htm)

       Last Updated: March 17, 2001
     __________________________________________________________________

                      [103]return to table of contents
                  [104]free downloadable college text book

                      [105]previous page [106]next page
                      [107]previous page [108]next page

   Quantcast

References

   1. http://www.ThisSideofSanity.com/tshirt/osdata.html
   2. https://www.osdata.com/index.htm
   3. https://www.osdata.com/pledge.html
   4. http://www.google.com/
   5. https://www.osdata.com/system/physical/memory.htm
   6. https://www.osdata.com/topic/milo/milo.html>freeemulatorandassemblylanguageproigramminglessons</a>.</p><palign=
   7. https://www.osdata.com/topic/language/asm.htm
   8. https://www.osdata.com/topic/language/asm/asmintro.htm
   9. https://www.osdata.com/topic/language/asm/address.htm#addressspace
  10. https://www.osdata.com/topic/language/asm/address.htm#addressmodes
  11. https://www.osdata.com/topic/language/asm/address.htm#absoluteaddress
  12. https://www.osdata.com/topic/language/asm/address.htm#immediatedata
  13. https://www.osdata.com/topic/language/asm/address.htm#inherent
  14. https://www.osdata.com/topic/language/asm/address.htm#registerdirect
  15. https://www.osdata.com/topic/language/asm/address.htm#registerindirect
  16. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirect
  17. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirectwithpostincrement
  18. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirectwithpredecrement
  19. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirectwithpreincrement
  20. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirectwithpostdecrement
  21. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirectwithdisplacement
  22. https://www.osdata.com/topic/language/asm/address.htm#baseregister
  23. https://www.osdata.com/topic/language/asm/address.htm#registerindirectwithindex
  24. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirectwithindexregister
  25. https://www.osdata.com/topic/language/asm/address.htm#addressregisterindirectwithindexregisteranddisplacement
  26. https://www.osdata.com/topic/language/asm/address.htm#absolutewithindex
  27. https://www.osdata.com/topic/language/asm/address.htm#memoryindirect
  28. https://www.osdata.com/topic/language/asm/address.htm#memoryindirectpostindexed
  29. https://www.osdata.com/topic/language/asm/address.htm#memoryindirectpreindexed
  30. https://www.osdata.com/topic/language/asm/address.htm#programcounterindirect
  31. https://www.osdata.com/topic/language/asm/address.htm#programcounterindirectwithdisplacement
  32. https://www.osdata.com/topic/language/asm/address.htm#programcounterindirectwithindexanddisplacement
  33. https://www.osdata.com/topic/language/asm/address.htm#programcountermemoryindirectpostindexed
  34. https://www.osdata.com/topic/language/asm/address.htm#programcountermemoryindirectpreindexed
  35. https://www.osdata.com/topic/language/asm/asmintro.htm#books
  36. https://www.osdata.com/topic/language/asm/asmintro.htm#relatedsoftware
  37. https://www.osdata.com/topic/language/asm/asmintro.htm#websites
  38. https://www.osdata.com/system/physical/memory.htm
  39. https://www.osdata.com/system/physical/memory.htm
  40. https://www.osdata.com/topic/oses/msdos.htm
  41. https://www.osdata.com/system/physical/memory.htm
  42. https://www.osdata.com/system/physical/memory.htm
  43. https://www.osdata.com/topic/milo/milo.html>freeemulatorandassemblylanguageproigramminglessons</a>.</p><palign=
  44. https://www.osdata.com/topic/language/asm.htm
  45. http://www.musicinpublic.com/
  46. http://www.osdata.com/music/musicplayer.html
  47. http://www.OSdata.com/traffic.htm
  48. https://www.osdata.com/book.html
  49. https://www.osdata.com/book.html#toc
  50. https://www.osdata.com/book.html
  51. http://www.osdata.com/progbook/programmingindex.html
  52. https://twitter.com/osdata
  53. https://www.osdata.com/email.htm
  54. https://www.osdata.com/privacy.htm
  55. https://www.osdata.com/topic/language/asm/compositeregister.htm
  56. https://www.osdata.com/topic/language/asm/datamove.htm
  57. https://www.osdata.com/topic/language/asm/compositeregister.htm
  58. https://www.osdata.com/topic/language/asm/datamove.htm
  59. https://www.osdata.com/index.htm
  60. https://www.osdata.com/topic/topic.htm
  61. https://www.osdata.com/topic/language/program.htm
  62. https://www.osdata.com/topic/language/ada.htm
  63. https://www.osdata.com/topic/language/algol.htm
  64. https://www.osdata.com/topic/language/c.htm
  65. https://www.osdata.com/topic/language/cplus.htm
  66. https://www.osdata.com/topic/language/cobol.htm
  67. https://www.osdata.com/topic/language/fortran.htm
  68. https://www.osdata.com/topic/language/java.htm
  69. https://www.osdata.com/topic/language/pascal.htm
  70. https://www.osdata.com/topic/language/perl.htm
  71. https://www.osdata.com/topic/language/pli.htm
  72. https://www.osdata.com/topic/language/asm/asmintro.htm
  73. https://www.osdata.com/topic/language/asm/datarep.htm
  74. https://www.osdata.com/topic/language/asm/register.htm
  75. https://www.osdata.com/topic/language/asm/machcode.htm
  76. https://www.osdata.com/topic/language/asm/datamove.htm
  77. https://www.osdata.com/topic/language/asm/intarith.htm
  78. https://www.osdata.com/topic/language/asm/floating.htm
  79. https://www.osdata.com/topic/language/asm/bcdarith.htm
  80. https://www.osdata.com/topic/language/asm/advmath.htm
  81. https://www.osdata.com/topic/language/asm/convert.htm
  82. https://www.osdata.com/topic/language/asm/logicop.htm
  83. https://www.osdata.com/topic/language/asm/shiftrot.htm
  84. https://www.osdata.com/topic/language/asm/bitstr.htm
  85. https://www.osdata.com/topic/language/asm/charstr.htm
  86. https://www.osdata.com/topic/language/asm/table.htm
  87. https://www.osdata.com/topic/language/asm/highlvl.htm
  88. https://www.osdata.com/topic/language/asm/progcont.htm
  89. https://www.osdata.com/topic/language/asm/ioinst.htm
  90. https://www.osdata.com/topic/language/asm/syscont.htm
  91. https://www.osdata.com/topic/language/asm/coproc.htm
  92. https://www.osdata.com/topic/language/asm/trapgen.htm
  93. http://www.prntrkmt.org/
  94. https://www.osdata.com/pledge.html
  95. https://www.osdata.com/book.html
  96. http://www.kociradio.com/
  97. http://www.google.com/
  98. https://www.osdata.com/kind/mac.htm
  99. http://members.aol.com/tombb/index.html
 100. https://www.osdata.com/oses/freebsd.htm
 101. http://www.anybrowser.org/campaign/
 102. https://www.osdata.com/email.htm
 103. https://www.osdata.com/book.html#toc
 104. https://www.osdata.com/book.html
 105. https://www.osdata.com/topic/language/asm/compositeregister.htm
 106. https://www.osdata.com/topic/language/asm/datamove.htm
 107. https://www.osdata.com/topic/language/asm/compositeregister.htm
 108. https://www.osdata.com/topic/language/asm/datamove.htm