Forum » Programiranje » Motorola 6803
Motorola 6803
Andreja2 ::
V simulatorju MC 6803 moram napisati program, ki ugotovi, ali je število iz lokacije $200 palindrom. Nekaj sem že začela, imam pa nekaj težav, saj se mi niti ne sanja, kako naj to naredim. Zaenkrat sem napisala spodnje. Želim primerjati vrednosti registrov A in B, in me zanima, če uporabim ukaz "branch if not equal", kaj točno ta ukaz naredi? Kako napišem, da primerja vrednosti teh dveh registrov in kako naj napišem, da se potem, če sta vrednosti enaki, na neki lokaciji izpiše 1 in v nasprotnem primeru 0?
Če ima kdo kaj pojma o motoroli, bi mi zelo prav prišla kakšna pomoč. :)
Bi pa to rabila čim prej :)
* Program, ki ugotovi, ali je število iz lokacije $200 palindrom
org $200 ; pomnilnik s spremenljivkami
org $fffe ; reset vektor, ki kaže na začetek programa
fdb start ; pomik na lokacijo
org $2000 ; del pomnilnika s programsko kodo
sm &200 1551 ; določimo spremenljivko
sm $201 $200 ; na naslov 201 shranim spremenljivko iz
; 200, da se prvotna spremenljivka ohrani
start asl $201 ; najvišji bit gre v carry bit v statusnem registru
adca ; prištej alkumulatorju A z upoštevanjem carry bita
clc ; "clear carry" - carry bit nastavimo na 0
lsr $201 ; najnižji bit gre v carry bit v statusnem registru
adcb ; prištej akumulatorju B z upoštevanjem carry bita
cba ; primerjaj vrednosti akumulatorjev A in B, rezultat
; se ne shrani, spremeni se le vrednost statusnega
; registra
bne ; "branch if not equal"
end
Če ima kdo kaj pojma o motoroli, bi mi zelo prav prišla kakšna pomoč. :)
Bi pa to rabila čim prej :)
* Program, ki ugotovi, ali je število iz lokacije $200 palindrom
org $200 ; pomnilnik s spremenljivkami
org $fffe ; reset vektor, ki kaže na začetek programa
fdb start ; pomik na lokacijo
org $2000 ; del pomnilnika s programsko kodo
sm &200 1551 ; določimo spremenljivko
sm $201 $200 ; na naslov 201 shranim spremenljivko iz
; 200, da se prvotna spremenljivka ohrani
start asl $201 ; najvišji bit gre v carry bit v statusnem registru
adca ; prištej alkumulatorju A z upoštevanjem carry bita
clc ; "clear carry" - carry bit nastavimo na 0
lsr $201 ; najnižji bit gre v carry bit v statusnem registru
adcb ; prištej akumulatorju B z upoštevanjem carry bita
cba ; primerjaj vrednosti akumulatorjev A in B, rezultat
; se ne shrani, spremeni se le vrednost statusnega
; registra
bne ; "branch if not equal"
end
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Assembler razumevanje programaOddelek: Programiranje | 2017 (908) | BivšiUser2 |
» | esembler-hitroOddelek: Programiranje | 1463 (1151) | aaaaa93 |
» | Zbirni jezik - Seštevek dveh šestnajst bitnih številOddelek: Programiranje | 933 (815) | boogie_xlr |
» | c++ nalogeOddelek: Programiranje | 2856 (2480) | l0g1t3ch |
» | Programiranje v zbirniku - potrebujem pomočOddelek: Programiranje | 1698 (1635) | St@jler |