Autorem citovaného textu je ObiWanKen
Přejít na původní příspěvek


;========================= ;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
Vložit komentář: