Autorem citovaného textu je Lisiak4
Přejít na původní příspěvek
. No a potom ešte druhá situácia, nechcem to presne popisovať, aby som si zbytočne nezvyšoval skoré za napísanie nezmyslu, ale při tom teste ma pozdravila guru hláška. 3 krát chyba, 1 krát ma to vyhodilo hneď do WB
). No a keď sme už při tom mojom vtipkovaní, keď som si len tak letmo svetom pozeral tú PDF verziu knihy o asm, tak som tam pokiaľ sa nemýlim narazil na inštrukciu, ktorá zastavuje činnost procesoru až do prerušenia
.
.
.
. Preto som si RTS pod BSR pridružil k BSR aj keď som si vravel, že by mal byť na konci celého podprogramu, ale tam bolo RTS pre mňa ukončujúce celý program a tak som to pochopil zle. To bola taká posledná vec ktorú som z tohoto príkladu chcel pochopiť. Príkladu teda rozumiem k mojej spokojnosti a možem ísť nabudúce na alokáciu pamati
.
;=========================
;Tohle si taky odkrokujte v debuggeru
;=========================
SECTION prg,CODE
START LEA retezec1(pc),a0
BSR NajdiA ;tím že neuvedu u bsr ".s" nebo ".w" nechám prostor assembleru aby to udělal sám (nebo mi vynadal)
RTS ;teď ve v D0 výsledek
;tady je testovací text ve kterém se hledá první "A" všimněte si že řetězce (stringy) se ukončují nulou
retezec1 DC.b "To jsem zvedav jestli to tady"
DC.b " to A vubec najde!",0
CNOP 0,4 ;nezapomeňte udržovat začátky rutin aligned
;Tato rutinka chce jako parametr adresu stringu v A0 a vrátí v D0 adresu prvního znaku "A" (velké A) v tomto stringu nebo nulu pokud žádný nenajde.
NajdiA MOVE.l a0,-(sp) ;schovat původní A0
.smycka MOVE.b (a0)+,d0 ;načtu si znak, Z bude nastaven pokud načtu 0, která označuje konec stringu
BEQ .nenasel ;byla to nula - nenašel jsem A
CMP.b #"A",d0 ;bylo to "A"?
BNE .smycka ;nebylo-zkus další znak
SUBQ.l #1 ,a0 ;a0 teď ukazuje hned ZA A - spravit
MOVE.l a0,d0 ;do D0 adresu "A"
BRA.s .konec ;pokračuj ke konci
.nenasel MOVEQ #0,d0 ;nenašel - vracím nulu
.konec MOVE.l (sp)+,a0
RTS
. Týmto by som chcel poďakovať všetkým, čo mi neveria
.
. Asi aj pri tých 15 tisícich riadkoch by mohol stačit relatívny skok v rámci W... ?
)
Vložit komentář: