Area: adn.coding
Msg #: 1/1                           Date: 07-27-97 01:54
 From: mr_W                     
   To: MMIKE                    
 Subj: Re: move.w #40,d0 i tome 

.to: Mmike

-=> Calimero posla pruku na ime: Teorist. Citiram: <=-

 C>  BTW ako u a0 imam adresu video memorije i racimo dam:
 C>      move.l   #10000,(a0)
 C>      da li to znai da bi treba na ekranu da vidim memoriju od 10000
 C>      adrese?

Mm>     Da, ako to ima smisla sa ostatkom programa, tj u a0 uva pointer na
Mm> deo memorije koji hoe da prikae.

Mm>     BTW, vidim da ima jo malo potkovanih ljudi ;))) koji pominju
Mm> posebne instrukcije za ostale 680x0 procesore, pa me zanima
Mm> dokumentacija o njima. Ja sam dokumentovan samo za 68000 :(((

Ajde da razbijemo monotoniju :

;-------T-----------T-------T-----------------------------T------T------T
;
; The first line is the Tab-Definition line. It starts with an ; and 
; is followed by the TABS, only a CAPITAL T will be recognized as a TAB
;
; **********************************************************************
;               ASM-ONE Example of all allowed adressingmodes
; **********************************************************************
;
; This example source is split up in two parts:
;
; 1.) The 680x0 adressing modes.
;
; Using      : opcode MOVE
; Parameters : Only source is specified.
;
; Note: This is an example of all adrressing modes. This includes 68020++
;       modes. 
;
;       Not all these modes are allowed in some opcodes.
;
;
; 2.) The 68881/68882/68040 floating point opcodes and modes
;
; Showing    : all known opcodes
; Parametes  : Only source is specified.
;

Mode_0:         move.b  d1,d2
                move.w  d1,d2
                move.l  d1,d2

**************************************************************************

mode_1:         ;       move.b  a1,d2 not allowed
                move.w  a1,d2
                move.l  a1,d2

**************************************************************************

mode_2:         move.b  (a1),d2
                move.w  (a1),d2
                move.l  (a1),d2

**************************************************************************

mode_3:         move.b  -(a1),d2
                move.w  -(a1),d2
                move.l  -(a1),d2

**************************************************************************

mode_4:         move.b  (a1)+,d2
                move.w  (a1)+,d2
                move.l  (a1)+,d2

**************************************************************************

mode_5:         move.b  $7fff(a1),d2
                move.w  $7ffe(a1),d2
                move.l  $7ffe(a1),d2

**************************************************************************

mode_6a:        move.b  $7f(a1,d1),d2
                move.w  $7e(a1,d1),d2
                move.l  $7e(a1,d1),d2

**************************************************************************

mode_6bw:       move.b  (a1,d1,$7fff.w),d2              ; 68020++
                move.w  (a1,d1,$7ffe.w),d2              ; 68020++
                move.l  (a1,d1,$7ffe.w),d2              ; 68020++

**************************************************************************

mode_6bl:       move.b  (a1,d1,$7fffffff.l),d2          ; 68020++
                move.w  (a1,d1,$7ffffffe.l),d2          ; 68020++
                move.l  (a1,d1,$7ffffffe.l),d2          ; 68020++

**************************************************************************

mode_6cww:      move.b  ([$7fff.w,a1],d1,$7fff.w),d2            ; 68020++
                move.w  ([$7ffe.w,a1],d1,$7ffe.w),d2            ; 68020++
                move.l  ([$7ffe.w,a1],d1,$7ffe.w),d2            ; 68020++

**************************************************************************

mode_6cwl:      move.b  ([$7fff.w,a1],d1,$7fffffff.l),d2        ; 68020++
                move.w  ([$7ffe.w,a1],d1,$7ffffffe.l),d2        ; 68020++
                move.l  ([$7ffe.w,a1],d1,$7ffffffe.l),d2        ; 68020++

**************************************************************************

mode_6clw:      move.b  ([$7fffffff.l,a1],d1,$7fff.w),d2        ; 68020++
                move.w  ([$7ffffffe.l,a1],d1,$7ffe.w),d2        ; 68020++
                move.l  ([$7ffffffe.l,a1],d1,$7ffe.w),d2        ; 68020++

**************************************************************************

mode_6cll:      move.b  ([$7fffffff.l,a1],d1,$7fffffff.l),d2    ; 68020++
                move.w  ([$7ffffffe.l,a1],d1,$7ffffffe.l),d2    ; 68020++
                move.l  ([$7ffffffe.l,a1],d1,$7ffffffe.l),d2    ; 68020++

**************************************************************************

mode_6dww:      move.b  ([$7fff.w,a1,d1],$7fff.w),d2            ; 68020++
                move.w  ([$7ffe.w,a1,d1],$7ffe.w),d2            ; 68020++
                move.l  ([$7ffe.w,a1,d1],$7ffe.w),d2            ; 68020++

**************************************************************************

mode_6dwl:      move.b  ([$7fff.w,a1,d1],$7fffffff.l),d2        ; 68020++
                move.w  ([$7ffe.w,a1,d1],$7ffffffe.l),d2        ; 68020++
                move.l  ([$7ffe.w,a1,d1],$7ffffffe.l),d2        ; 68020++

**************************************************************************

mode_6dlw:      move.b  ([$7fffffff.l,a1,d1],$7fff.w),d2        ; 68020++
                move.w  ([$7ffffffe.l,a1,d1],$7ffe.w),d2        ; 68020++
                move.l  ([$7ffffffe.l,a1,d1],$7ffe.w),d2        ; 68020++

**************************************************************************

mode_6dll:      move.b  ([$7fffffff.l,a1,d1],$7fffffff.l),d2    ; 68020++
                move.w  ([$7ffffffe.l,a1,d1],$7ffffffe.l),d2    ; 68020++
                move.l  ([$7ffffffe.l,a1,d1],$7ffffffe.l),d2    ; 68020++

**************************************************************************


;- These are variants of the above modes except the Base Displacement or
;- Index register are supressed
 
suppress:       move.l  ([0.w,a1],d2),d3
                move.l  ([0.l,a1],d2),d3
                move.l  ([0.w,a1]),d2
                move.l  ([0.l,a1]),d2
                move.l  ([0.l]),d2
                move.l  ([0.w]),d2

**************************************************************************

mode_7_0:       move.b  $7fff.w,d2
                move.w  $7ffe.w,d2
                move.l  $7ffe.w,d2

**************************************************************************

mode_7_1:       move.b  $7ffff.l,d2
                move.w  $7fffe.l,d2
                move.l  $7fffe.l,d2

**************************************************************************

;=============================================================
; The following PC relative modes are HIGH COMMANDS.
;
; Usualy the numbers used in these commands would be labels !!
; Most assemblers create a relative mode error trying to
; assemble these commands. When the absolute numbers are
; labels the assembler WILL allow them.
;
; in Asm-One you CAN use label OR absolute numbers.
; !!! Just be carefull with them  !!!
;=============================================================

mode_7_2:       move.b  $7f(pc),d2
                move.w  $7f(pc),d2
                move.l  $7ffe(pc),d2

mode_7_2labels: move.b  mode_7_2(pc),d2
                move.w  mode_7_2(pc),d2
                move.l  mode_7_2(pc),d2

; This is also mode_7_2 but in the new syntax !!!

mode_7_2ns:     move.b  ($7f,pc),d2
                move.w  ($7f,pc),d2
                move.l  ($7ffe,pc),d2

mode_7_2nslabels:
                move.b  (mode_7_2ns,pc),d2
                move.w  (mode_7_2ns,pc),d2
                move.l  (mode_7_2ns,pc),d2

**************************************************************************

mode_7_3:       move.b  $7e(pc,d1),d2
                move.w  $7e(pc,d1),d2
                move.l  $7e(pc,d1),d2

mode_7_3labels: move.b  mode_7_3(pc,d1),d2
                move.w  mode_7_3(pc,d1),d2
                move.l  mode_7_3(pc,d1),d2

; This is also mode_7_3 but in the new syntax !!!

mode_7_3ns:     move.b  ($7e.w,pc,d1),d2
                move.w  ($7e.w,pc,d1),d2
                move.l  ($7e.w,pc,d1),d2

mode_7_3nslabels:
                move.b  (mode_7_3nslabels.w,pc,d1),d2
                move.w  (mode_7_3nslabels.w,pc,d1),d2
                move.l  (mode_7_3nslabels.w,pc,d1),d2

mode_7_3w:      move.b  (pc,d1,$7fff.w),d2              ; 68020++
                move.w  (pc,d1,$7ffe.w),d2              ; 68020++
                move.l  (pc,d1,$7ffe.w),d2              ; 68020++

mode_7_3l:      move.b  (pc,d1,$7fffffff.l),d2          ; 68020++
                move.w  (pc,d1,$7ffffffe.l),d2          ; 68020++
                move.l  (pc,d1,$7ffffffe.l),d2          ; 68020++

**************************************************************************

mode_7_3postww: move.b  ([$7fff.w,pc],d1,$7fff.w),d2            ; 68020++
                move.w  ([$7ffe.w,pc],d1,$7ffe.w),d2            ; 68020++
                move.l  ([$7ffe.w,pc],d1,$7ffe.w),d2            ; 68020++

mode_7_3postwwlabels:
                move.b  ([mode_7_3postwwlabels.w,pc],d1,$7fff.w),d2 ; 68020++
                move.w  ([mode_7_3postwwlabels.w,pc],d1,$7ffe.w),d2 ; 68020++
                move.l  ([mode_7_3postwwlabels.w,pc],d1,$7ffe.w),d2 ; 68020++

mode_7_3postwl: move.b  ([$7fff.w,pc],d1,$7fffffff.l),d2        ; 68020++
                move.w  ([$7ffe.w,pc],d1,$7ffffffe.l),d2        ; 68020++
                move.l  ([$7ffe.w,pc],d1,$7ffffffe.l),d2        ; 68020++

mode_7_3postlw: move.b  ([$7fffffff.l,pc],d1,$7fff.w),d2        ; 68020++
                move.w  ([$7ffffffe.l,pc],d1,$7ffe.w),d2        ; 68020++
                move.l  ([$7ffffffe.l,pc],d1,$7ffe.w),d2        ; 68020++

mode_7_3postll: move.b  ([$7fffffff.l,pc],d1,$7fffffff.l),d2    ; 68020++
                move.w  ([$7ffffffe.l,pc],d1,$7ffffffe.l),d2    ; 68020++
                move.l  ([$7ffffffe.l,pc],d1,$7ffffffe.l),d2    ; 68020++

**************************************************************************

mode_7_3preww:  move.b  ([$7fff.w,pc,d1],$7fff.w),d2            ; 68020++
                move.w  ([$7ffe.w,pc,d1],$7ffe.w),d2            ; 68020++
                move.l  ([$7ffe.w,pc,d1],$7ffe.w),d2            ; 68020++

mode_7_3prewwlabel:
                move.b  ([mode_7_3prewwlabel.w,pc,d1],$7fff.w),d2 ; 68020++
                move.w  ([mode_7_3prewwlabel.w,pc,d1],$7ffe.w),d2 ; 68020++
                move.l  ([mode_7_3prewwlabel.w,pc,d1],$7ffe.w),d2 ; 68020++

mode_7_3prewl:  move.b  ([$7fff.w,pc,d1],$7fffffff.l),d2        ; 68020++
                move.w  ([$7ffe.w,pc,d1],$7ffffffe.l),d2        ; 68020++
                move.l  ([$7ffe.w,pc,d1],$7ffffffe.l),d2        ; 68020++

mode_7_3prelw:  move.b  ([$7fffffff.l,pc,d1],$7fff.w),d2        ; 68020++
                move.w  ([$7ffffffe.l,pc,d1],$7ffe.w),d2        ; 68020++
                move.l  ([$7ffffffe.l,pc,d1],$7ffe.w),d2        ; 68020++

mode_7_3prell:  move.b  ([$7fffffff.l,pc,d1],$7fffffff.l),d2    ; 68020++
                move.w  ([$7ffffffe.l,pc,d1],$7ffffffe.l),d2    ; 68020++
                move.l  ([$7ffffffe.l,pc,d1],$7ffffffe.l),d2    ; 68020++


**************************************************************************

mode_7_4:       move.b  #$7f,d2
                move.w  #$7ffe,d2
                move.l  #$7ffffffe,d2

**************************************************************************

;=========================================================================
;
; Some examples using 68020++ adressing modes.
;
;-----Example 1------ jumping easier
;
; This instruction uses just 1 line to find and jump to a piece of
; coding getting it's pointers from a tabel !!!
; Change D0 to 0,1,2 or 3 to jump to example1_a,example1_b,......
;

example_1:      moveq   #0,d0
                jmp     ([example1_tabel,pc],d0.w*4) ; !!!!!!!!!!!!!

example1_tabel: dc.l    example1_a
                dc.l    example1_b
                dc.l    example1_c
                dc.l    example1_d

example1_a:     moveq   #4,d7
                moveq   #0,d0
                bra.s   example_2

example1_b:     moveq   #3,d7
                moveq   #0,d0
                bra.s   example_2

example1_c:     moveq   #2,d7
                moveq   #0,d0
                bra.s   example_2

example1_d:     moveq   #1,d7
                moveq   #0,d0
                bra.w   example_2


;===============================================================
;
;--Example 2---- getting bits easier
;
; How's the resourcer comming Thaizer ?????????
; Getting a bit bitfucked in the bitbrain allready,
; or is it a bit too easy to get bits in the right bytes ????
; or was it the left byte ????/
;
;                              3         2         1
;                             10987654321098765432109876543210
example_2:      move.l  #%10011100100100101000100101010101,d0
                bfextu  d0{1:5},d1




===============================================================
Onaj ostatak sa float sekcijom je bio predugachak , ali ako nekoga zanima,
mogu lha, pa uuencode :)

 * Q-Blue 2.1 *
-!- /X MailDoor! v1.67
--- MagicToss 0.114
 * Origin: * nEVERmIND nETwORK gATE sYS. iNC. * nOWHERE * (32:382/139)

                                                                               
                                                                               
                                                                               
                        
