Pic assembly ile pointer nasıl yapılır?

Başlatan Emre005, 09 Ocak 2014, 12:09:53

Emre005

Merhaba
Benim yapmak istediğim bir tane genel amaçlı kaydediciler de ADRES diye bir değişkenim olsun ADRES in içindeki adrese ulaşmak istiyorum.ADRES içeriğini bir artırdığımda sonraki adrese ulaşabileyim yani bir pointer gibi bunu nasıl yapabilirim?

Kabil ATICI

           MOVLW 0x20 ;initialize pointer
           MOVWF FSR ;to RAM
NEXT  CLRF INDF ;clear INDF register
          INCF FSR,F ;inc pointer
           BTFSS FSR,4 ;all done?
          GOTO NEXT ;no clear next
CONTINUE
: ;yes continue

şunun gibi mi?
Bu 16f işlemcisi için indirect adresleme. İşlemcinin Veri kağıtları içinde mevcut.
ambar7

olemiss

Alıntı yapılan: Emre005 - 09 Ocak 2014, 12:09:53
Benim yapmak istediğim bir tane genel amaçlı kaydediciler de ADRES diye bir değişkenim olsun ADRES in içindeki adrese ulaşmak istiyorum.ADRES içeriğini bir artırdığımda sonraki adrese ulaşabileyim yani bir pointer gibi bunu nasıl yapabilirim?
Hangi platformda çalışıyorsunuz?
Yazılım Mühendisi, Çevirmen.


Emre005

#4
Mplab da çalışıyorum.
Yapmak istediğim  0x20 ile 0x2F adresleri arasındaki kayıtçılara 0 dan 15 kadar sayıları atamak ancak kayıtçıların hepsine 0x01 değerini atıyor.INCF bi kere çalışıyor bunun sebebi nedir?
DEGER	EQU		0X41		
		MOVLW	0X20	;GÖTERGENİN BAŞLANGIC DEĞERİ
		MOVWF	FSR
		MOVLW	0X00	;GÖTERGENİN BAŞLANGIC DEĞERİ
		MOVWF	DEGER
		
YUKLE
		INCF	DEGER,W
		
		MOVWF	INDF	
		INCF	FSR,F
		BTFSS	FSR,4
		GOTO	YUKLE


Tagli

Uzun süre ben de baktım baktım bir türlü göremedim hatayı.

Sonra gördüm ama.

INCF DEGER,W -> Burada artımın sonucu W'ye gidiyor, haliyle DEGER değişmiyor. INCF DEGER,F olacak doğrusu.
Gökçe Tağlıoğlu

Emre005

Yorumlar için teşekkürler  :)

Çalışan kod parçası
YUKLE
		INCF	DEGER,F
		MOVF	DEGER,W
		MOVWF	INDF
		INCF	FSR,F
		BTFSS	FSR,4
		GOTO	YUKLE