.model small.stack 10.codeBEGIN: xor cx,cx xor bx,bx xor dx,dx ; vymazanie registrov bx, cx a dxREAD: 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 INCBXINCBX: inc bx ; bx = bx + 1 (inkrementuje register bx o 1) jmp READ ; a skok na READENT: 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 VYPISSPACE: 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 NULBXINCCX1: inc cx ; inkrementacia pocitadla jmp VYPIS ; a skok na VYPISINCCX2: inc cx ; inkrementacia pocitadla jmp NULDX ; a skok na READNULDX: xor dx,dx ; vynulovanie registra dx jmp READ ; a skok na READNULBX: xor bx,bx ; vynulovanie registra bx jmp NULDX ; a skok na NULDXVYPIS: 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 WRT1WRT0: 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 WRITEWRT1: mov dl,01h add dl,30h mov ah,02h int 21h ; a vypise ju na obrazovku jmp WRITE ; potom skok na WRITEWRITE: 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 cislicOPAKUJ: 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 programuEND BEGIN
Haló Haló Nevie niekto kedy Ing. Attila N.Kovács plánuje zapísať hodnotenie do MAISU?
Quote from: luky on 21.05.2010, 23:30:46Haló Haló Nevie niekto kedy Ing. Attila N.Kovács plánuje zapísať hodnotenie do MAISU?Pavol Habera - Je to vo hviezdach