RAM'de şifre arama

Başlatan Herdol90, 19 Nisan 2011, 00:42:03

Herdol90

Merhaba arkadaşlar bu programda RAM bölgesinde her hangi bir sayı aratıcaz kaç tane bulunursa o sayıdan R8 register ında çıktı olarak alınıcak

Alıntı Yap
#include  "msp430x20x3.h"
;-------------------------------------------------------------------------------
            ORG     0F800h                  ; Program Reset
;-------------------------------------------------------------------------------
RESET       mov.w   #0280h,SP               ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop WDT
SetupP1     bis.b   #001h,&P1DIR            ; P1.0 output
           
            mov.w   #0000,R8
            mov.w   #0200h,R4
            mov.w   #0280h,R5
            mov.b   #0aah,R7
            mov.b   #0aah,&0210h
            mov.b   #0aah,&0212h
           
A1          mov.b   0(R4),R9
            inc     R4
            cmp     R4,R5
            jz      A2
            cmp     R9,R7
            jnz     A1
           
            inc     R8
            jmp     A1
A2           
            nop
           
                        

                                            ;
;-------------------------------------------------------------------------------
;           Interrupt Vectors
;-------------------------------------------------------------------------------
            ORG     0FFFEh                  ; MSP430 RESET Vector
            DW      RESET                   ;
            END

Bu program yalnızca R7 registerına atadığımız 8 bitlik sayıyı arar 16 bitlik sayı aramak için mov.w komutlarıyla sayıları atamak ve son döngüde ;
inc       R4         yerine
incd     R4         yazmak gerekir . Aramak istediğiniz sayıyı R7 registerına yazdırarak aramaya başlayabilirsiniz 0200h ve 0210h adreslerine deneme amacıyla AA sayısı atanmıştır ihtiyaca göre silinebilir
İyi çalışmalar ...

since1990

Eğer 3 Haneli İse;
Ki Hocanın Verdiği Ödevden Bahsediyoruz :D
Alıntı Yap;****************zq@n-Ramde Sıralı Sayı Arama***************************
;*******************************************************************************
#include  "msp430g2231.h"
;-------------------------------------------------------------------------------
            ORG     0F800h                  ; Program Reset
;-------------------------------------------------------------------------------
RESET       mov.w   #0280h,SP               ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop WDT
SetupP1     bis.b   #001h,&P1DIR            ; P1.0 output
            mov.w   #280h,R6
            mov.w   #200h,R7
            mov.w   #0h,R5
           
           
            mov.b   #0aah,0205h   ;Kafamıza göre PRogramı Test Etmek İçin Adres
            mov.b   #0bbh,0206h   ;lere Sayılar Attık
           
           
            mov.b   #0aah,0210h
            mov.b   #0bbh,0211h
            mov.b   #0cch,0212h

Mainloop   
            cmp.b   #0aah,0(R7)
            jnz     devam1          ;Eğer İlk Adreste yoksa devam 1'e dallanır
            inc     R7              ;varsa da bir sonraki adres için R7' 1 eklenr
           
            cmp.b   #0bbh,0(R7)   ;Eğer 1. adım var 2. adım yoksa devam2'ye
            jnz     devam2          ;dallanır
            inc     R7              ;Bir sonraki adres için 1 daha eklenir.
           
            cmp.b   #0cch,0(R7)   ;Eğer 1 ve 2 varsa ve 3 yoksa devam3'e
            jnz     devam3          ;dallanır
            dec     R7              ;R7nin Karşılaştırma başlamadan önceki
            dec     R7              ;Halini alması için 2 çıkartılır ve R5'e
            mov.w   R7,R5           ;Atılır. Sonra R7 de eski haline gelsin diye
            add.w   #2,R7           ;2 eklenir. Ve program "here" a dallanır.
            jmp     here
           
devam3      dec R7                  ;3. Adımdan dnerken R7den 2 çıkartır
devam2      dec R7                  ;2. Adından dönerken R7den 1 çıkartır
devam1      inc R7                  ;En son bir sonraki adres için 1 ekler
            cmp R6,R7               ;280h olup olmadığına bakar
            jnz Mainloop            ;Eğer R7 280h olursa veya Aranan Dizi
here        jmp here                ;Bulunursa "here" labeline atlar. Ve sonsuz
                                    ;Döngüye Girer.
;-------------------------------------------------------------------------------
;           Interrupt Vectors
;-------------------------------------------------------------------------------
            ORG     0FFFEh                  ; MSP430 RESET Vector
            DW      RESET                   ;
            END
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk