Vysvetlenie pls – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vysvetlenie pls – Assembler – Fórum – Programujte.comVysvetlenie pls – Assembler – Fórum – Programujte.com

 

lukino
~ Anonymní uživatel
1 příspěvek
8. 4. 2009   #1
-
0
-

Caute mohol by mi niekto pls popisat a vysvetlit ako funguje tento program ? viem co robi len by som chcel vediet ze co su to za prikazy psw pop... a ten prevod ako funguje dakujem

org 1000


dcx sp ;inicializacia zasobnika (0FFFFh)

lxi h,text ;vypis text
call putstr

lxi h,text1 ;vypis text1
call putstr

lxi d,vlozeny ;adresa pre vstup retazca
call getline

lxi b,vlozeny

mvi d,0 ;pocet cislic v slove
mvi e,0 ;pocet velkych pismen v slove
push psw ;vlozime si nulu do zasobnika, pocet vyhovujucich slov
jmp char_loop

char:
mvi d,0 ;vynulovanie pocitadla
mvi e,0 ;vynulovanie pocitadla
char_loop: ;citanie znakov a pocitanie cislic v slove
ldax b ;nacitanie znaku z retazca
inx b ;posun v retazci doprava
cpi 10 ;porovnanie pre koniec nacitavania, enter
jz koniec_nacitania ;
cpi 32 ;porovnanie na koniec slova, space=medzera
jz pocet_slov
cpi '0' ;vacsie alebo rovne ako 0
jc pismena
cpi '9' + 1 ;mensie alebo rovne ako 9
jnc pismena
inr d ;zvysenie poctu cislic o 1
jmp char_loop

pismena:
cpi 'A' ;vacsie alebo rovne ako A
jc char_loop
cpi 'Z' + 1 ;mensie alebo rovne ako Z
jnc char_loop
inr e ;zvysenie poctu pismen o 1
jmp char_loop


pocet_slov: ;pocitanie vyhovujucich slov
mov a,d ;presun hodnoty z registra D do akumulatora
cmp e ;porovnanie akumulatora a registra E
jc char ;ak je pismen viac skoc na char
jz char ;ak je pismen rovnako vela ako cislic skoc na char, osetrene medzery
pop psw ;vyber zo zasobnika do akumulatora
inr a ;zvysenie poctu vyhovujucich slov
push psw ;vlozenie z akumulatora do zasobnika
jmp char

koniec_nacitania: ;osetrenie ak sme spracovali posledne slovo
mov a,d
cmp e ;porovnanie ci slovo obsahuje aspon 2 cislice
jc prevod
jz prevod
pop psw
inr a ;zvysenie poctu vyhovujucich slov
push psw
jmp prevod

prevod: ;prevod 4b binarneho cisla na sestnastkove [jednotky]
pop psw
mov h,a
ani 15 ;logicky sucin
push psw
cpi 10 ;porovnananie ci je cislo mensie ako 10
jc prevod1
pop psw ;ak je mensie skoci na koniec1
mov b,a
mvi a,7
add b ;pripocitanie 7, lebo su to pismena, vacsie ako 10
push psw

prevod1: ;prevod 4b binarneho cisla na sestnastkove [desiatky]
mov a,h
rrc ;posun o 1b doprava
rrc
rrc
rrc
ani 15 ;logicky sucin
push psw
cpi 10 ;porovnananie ci je cislo mensie ako 10
jc vypis ;ak je mensie skoci na koniec1
pop psw
mov b,a
mvi a,7
add b ;pripocitanie 7
push psw

vypis: ;vypis poctu slov sestnastkovo
lxi h,text2
call putstr

pop psw
adi '0'
call putchar ;vypisanie sestanstkovej cislice [desiatky]

pop psw
adi '0'
call putchar ;vypisanie sestanstkovej cislice[jednotky]

call newline
hlt

include 'examples\8080\include\getline.inc'
include 'examples\8080\include\putstr.inc'
include 'examples\8080\include\putchar.inc'
include 'examples\8080\include\newline.inc'
text: db 'Program zistuje pocet slov obsahujucich viac cislic ako pismen velkej abecedy',10,13
text1: db 'Zadaj retazec, ukonci stlacenim enter ',0,10,13
text2: db 10,13,'Pocet slov, v hexa tvare: 0x',0
vlozeny: ds 50

Nahlásit jako SPAM
IP: 147.232.182.–
KIIV
~ Moderátor
+43
God of flame
8. 4. 2009   #2
-
0
-

psw je jen registr... Program Status Word ... ukladaj se tam nektery dulezity priznaky.. mozna i povoluje preruseni.. (aspon u x51 to je) pak nejaky priznaky pro prenos a tak..

pop a push sou instrukce pro praci se zasobnikem...
a tak podobne... staci hledat

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 183 hostů

Podobná vlákna

Vysvetlenie — založil cheki

Vysvetlenie .NET — založil me.name

Vysvetlenie kodu — založil marek17

Jazyk C -Vysvetlenie, pomoc — založil prometheus7

Event Delegate - vysvetlenie — založil yterbium

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý