assembly code bsf command

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
In een stuk assembly code komt het onderstaande stukje voor (geschreven voor een pic microcontroller, de 16f876 om precies te zijn). Voor deze code bevat W (het w register) al een byte aan gegevens, en ik zou graag de rechter nibble legen (op nul instellen). Daarvoor heb ik de volgende code geschreven, maar het wil maar niet lukken, de ledjes op portb branden nog steeds allemaal. Klopt er dan toch iets niet aan deze code?

code:
1
2
3
4
5
6
7
8
9
    movwf leftm
    bcf leftm,0h
    bcf leftm,1h
    bcf leftm,2h
    bcf leftm,3h
    MOVF leftm


    movwf PORTB


Het zijn allemaal gewoon digitale outputs. De leds die oplichten komen ook gewoon overeen met de hoge byte die in het w register zit, alleen zijn ook de leds die overeenkomen met de rechter nibble nog aan, die ik dus heb geprobeerd op nul in te stellen met bcf wat dus niet is gelukt.

(mischien is dit dan ook van belang: het komt uit een grotere code die een byte van een aangepaste linksys router ontvangt, deze byte wordt dat in het w register opgeslagen waarna de bovenstaande code wordt uitgevoerd en dan wil ik dus graag dat de rechter nibble leeg wordt gemaakt (ik moet ze namelijk appart hebben). Het leeg maken lukt dus alleen niet).

[ Voor 46% gewijzigd door huub8 op 04-02-2011 21:19 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik neem aan voor een PIC?
huub8 schreef op vrijdag 04 februari 2011 @ 19:47:
Voor deze code bevat W al een byte aan gegevens
W? Working register natuurlijk....
huub8 schreef op vrijdag 04 februari 2011 @ 19:47:
de ledjes op portb branden nog steeds allemaal
Analoge of digitale outputs? Zijn de pins als output ingesteld?

We hebben je inmiddels vaak genoeg verteld meer moeite in een TS te steken en nog moeten we vanalles uit je trekken dat je in je TS uit jezelf had kunnen (en moeten) vermelden (Quickstart!). Ik begin er een beetje moe van te worden.

[ Voor 9% gewijzigd door RobIII op 04-02-2011 21:15 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
excuus voor de involledige informatie, ik dacht dat het voor zich sprak, ik heb de topicstart aangepast.

[ Voor 19% gewijzigd door huub8 op 04-02-2011 21:20 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je kan het register natuurlijk ook gewoon 4 bits naar rechts en dan weer terug naar links shiften, dat zou je vier minst significante bits naar 0 moeten resetten. Weet niet meer of er een bitwise and in assembly zit of hoe die werkt, te lang geleden. :P

edit:
Is de bitwise AND trouwens niet gewoon te gebruiken met AND w, f0h? Dat laat je linker nibble met rust en zet de rechter op 0000. Weet alleen niet meer of dat de goeie syntax is voor deze smaak van assembly. :)

[ Voor 31% gewijzigd door NMe op 04-02-2011 21:47 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
ik snap wat je bedoeld, maar kan niet vinden met wat voor instructie je dat voor elkaar kan krijgen.

edit: zie net je edit, ga ik even proberen

[ Voor 18% gewijzigd door huub8 op 04-02-2011 21:51 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

huub8 schreef op vrijdag 04 februari 2011 @ 21:51:
ik snap wat je bedoeld, maar kan niet vinden met wat voor instructie je dat voor elkaar kan krijgen.
Dat zou gewoon zo gaan:
GAS:
1
2
SHR w, 4
SHL w, 4

;)

Maar die AND is veel logischer, aangenomen dat het werkt. ;) Mijn assembly is roestig, 3-4 jaar niet gebruikt. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
ik kom dan hierop uit:

code:
1
2
3
4
5
6
    movwf leftm
    MOVLW B'11110000' 
    ANDWF leftm,1
    movf leftm

    movwf PORTB


Ga dit direct even uitproberen

[ Voor 4% gewijzigd door huub8 op 04-02-2011 22:14 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Of dat al dan niet klopt durf ik niet te zeggen, ik ken alleen wat Z80 assembly, voor de PIC-serie van Microchip waar jij mee werkt kon ik met C uit de voeten. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • huub8
  • Registratie: Maart 2009
  • Laatst online: 28-06-2021
helaas deed die code het niet, maar deze veel betere code gelukkig wel die ik tegenkwam op zoek naar informatie over de movlw:

code:
1
2
    andlw   b'11110000'
    movwf PORTB
Pagina: 1