je tu niekto kto nespravil ani na druhykrat a nema uz dekansky?
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Zobrazi prspevky MenuQuote from: DeeJay3 on 22.05.2011, 15:45:27je to na ftp
kto uz bol na skuske ?....mohol by tu napisat nejake otazky...pliiis...a nevie niekto ci tie prednasky ktore sme mali v piatok 10:50 su na nete pretoze sluboval ze ich da pred skuskou...
Quote.model small
.stack 10
.code
BEGIN: xor cx,cx
xor bx,bx
xor dx,dx ; vymazanie registrov bx, cx a dx
READ: mov ah,01h
int 21h ; funkcia DOSu - citanie z klavesnice
cmp al,0dh
jz ENT ; skok, ak bol stlaceny Enter
cmp al,20h
jz SPACE ; skok, ak bol stlaceny Medzernik
mov dx,01h
and al,01h
cmp al,01h ; bol stlaceny znak s neparnym ASCII kodom ?
jz READ ; ak ano, skok na READ
jmp INCBX ; a ak nie, skok na INCBX
INCBX: inc bx ; bx = bx + 1 (inkrementuje register bx o 1)
jmp READ ; a skok na READ
ENT: cmp dx,00h ; porovnava register dx s nulou
jz VYPIS ; ak dx=0, tak skok na VYPIS
cmp bx,00h ; a ak nie, tak porovnava reg. bx s nulou
jz INCCX1 ; ak bx=0, tak skok na INCCX1
jmp VYPIS ; a ak nie tak skok na VYPIS
SPACE: cmp dx,00h ; porovnava register dx s nulou
jz NULDX ; ak dx=0, tak skok na NULDX
cmp bx,00h ; a ak nie, tak porovnava reg. bx s nulou
jz INCCX2 ; ak bx=0, tak skok na INCCX2
jmp NULBX ; a ak nie tak skok na NULBX
INCCX1: inc cx ; inkrementacia pocitadla
jmp VYPIS ; a skok na VYPIS
INCCX2: inc cx ; inkrementacia pocitadla
jmp NULDX ; a skok na READ
NULDX: xor dx,dx ; vynulovanie registra dx
jmp READ ; a skok na READ
NULBX: xor bx,bx ; vynulovanie registra bx
jmp NULDX ; a skok na NULDX
VYPIS: mov dl,0ah ; do registra dl vlozi ASCII hodnotu klavesy ENTER
mov ah,02h
int 21h ; funkcia DOSu - skok na novy riadok
mov bx,cx ; do registra bx ulozi hodnotu registra cx
push bx ; ulozenie obsahu registra bx do zasobnika
and bh,80h
cmp bh,00h ; test ci prvy bit je 0 alebo 1
jz WRT0 ; ak je 0, tak skok na WRT0
jmp WRT1 ; ak je 1, tak skok na WRT1
WRT0: mov dl,00h ; do registra dl ulozi 0
add dl,30h
mov ah,02h
int 21h ; a vypise ju na obrazovku
jmp WRITE ; potom skok na WRITE
WRT1: mov dl,01h
add dl,30h
mov ah,02h
int 21h ; a vypise ju na obrazovku
jmp WRITE ; potom skok na WRITE
WRITE: pop bx ; vratenie povodnej hodnoty registra bx zo zasobnika
rol bx,01h ; rotacia registra bx o 1 bit vlavo
mov cx,05h ; do registra cx sa ulozi 5, lebo potrebujem vypisat este 5 cislic
OPAKUJ: push cx ; ulozenie obsahu registra cx do zasobnika
mov cl,03h ; do registra cl sa ulozi 3, lebo robim posun o 3 bity
rol bx,cl ; posun registra bx o 3 bity vlavo
mov dx,bx ; do registra dx ulozi hodnotu registra bx
and dx,07h ; potrebujeme zobrazit len posledne 3 bity z obsahu registra
add dl,30h ; posun v ASCII tabulke na znak '0'
mov ah,02h
int 21h ; funkcia DOSu - vypis na obrazovku
pop cx ; vratenie povodnej hodnoty registra cx zo zasobnika
loop OPAKUJ ; cyklus kym cx!=0
mov ax,4c00h
int 21h ; ukoncenie programu
END BEGIN