Bu komutun asm karşılığı?

Başlatan Maxim, 27 Mayıs 2014, 12:41:38

Maxim

PORTC = (PORTB ^ %1100100)

komut portb ye gelen 8bitlik datayı 100 sayısı ile xor yapıyor ve portc ye aktarıyor.
proton+ komutu

bunun asm karşılığı nasıldır acaba?

CLR

movf       PORTB,w
IORLW    0x64
movwf    PORTC
Knowledge and Experience are Power

Tagli

IORLW değil XORLW olacak. Gözden kaçmış sanırım.
Gökçe Tağlıoğlu

Maxim

teşekkürler
peki bu xor yapılmış sayıdan 8 çıkarıp daha sonra portC ye gönderebilmek için araya hangi komutu eklemek lazım?

Kabil ATICI

#4
SUBLW 8

sabit sayıdan W registerin ( 8 ) çıkartma komutu

sonra
movwf    PORTC


ek-düzeltme
w registerindeki sayıdan çıkarmak için program başında degişken tanımlanır diyelim ki temp olsun

MOVWF temp
MOVLW 8
SUBWF temp,0
movwf    PORTC
ambar7

Tagli

Arkadaşlar yazmışlar gerçi ama, toparlarsak şöyle olacak:
movf    PORTB,W
xorlw    100
movwf    temp
movlw    8
subwf    temp,W
movwf    PORTC

Umarım gözümden kaçan bir hata yoktur. Bu arada, işlemci nedir? PIC18 ise sanırım temp diye bir geçici alan kullanmadan da yazılabilir. Aslında belki PIC16'da da temp kullanmaya gerek kalmayabilir. (birşey - 8) yerine, (8 - birşey)'i hesaplayıp sonradan tersini alabiliriz sanırım.
Gökçe Tağlıoğlu