[ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 14.04.10
Prihlásený: 04.05.10
Príspevky: 3
Témy: 2 | 2
NapísalOffline : 17.04.2010 10:54 | len uprava programu v assembleri

Zdravim, vedel by niekto prerobit program ktory nacitava retazec z klavesnice a potom ho prevrati a vypise na obrazovku, na program ktory nacitava retazec zo suboru a potom ho prevrateny vypise na obrazovku?

povodny program:
Kód:
.MODEL SMALL                   
.STACK 50H     
.data
                 
zadaj     DB 13,10,'Zadaj retazec a stlac ENTER: $'
vysledok  DB 13,10,'Retazec odzadu: $'
dlzka     DB 0FFh
text      DB '' ; tu sa bude ukladat "zadavany retazec"

.CODE
org 100h
                 
START:
          mov ax,@data
          MOV DS,AX
          mov ah,09h
          lea dx,zadaj
          int 21h           ; zobrazi sa vyzva na zadanie retazca

          lea dx, dlzka     ;nastavi do dx adresu ulozenej max dlzky retazca
                            ;zaroven od tej adresy bude ukladat nacitany retazec
          mov ah,0Ah        ;sluzba na nacitanie retazca ukonceneho ENTER
          int 21h

                lea bx, text          ; do bx adresu data seg.
                xor CX, CX            ; CX <--- 0
                mov CL, [bx]          ; CL ... dlzka nacitaneho textu
                MOV DI, CX

          lea dx,vysledok
          mov ah,09h
          int 21h                     ; zobrazi text "Retazec odzadu..."

cely_retazec:
                cmp DI,0
                je koniec             ; koniec ?                                 

                mov AL, [text+DI]
                mov DL, AL            ;
                mov ah,02h            ;
                int 21h               ;vypisanie znaku (cislice)
               
                dec DI                ; dalsi znak v zdrojovom retazci
                jmp cely_retazec     
                 
koniec:                               
                MOV AX,4C00H
                INT 21H               ; koniec               
                END START


ja som skusal nieco ale nejde mi to vobec rozbehat:
Kód:
.MODEL SMALL                   
.STACK 50H     
.data
                 
znak            db   0
zadaj              DB 13,10,'Zadaj retazec a stlac ENTER: $'
vysledok           DB 13,10,'Retazec odzadu: $'
dlzka              DB 0FFh
text               DB    ''                ;tu sa bude ukladat "zadavany retazec"
file_name_in         db   'input.txt','$'         ;meno vstupneho suboru
file_handle_in         dw   0            ;handler pre vstupny subor

otvor_vstup         db   'Vstupny subor bol otvoreny',10,13,'$'
zatvor_vstup         db   'Vstupny subor bol zatvoreny',10,13,'$'
CHYBA1            db   'Chyba otvarania vstupneho suboru',10,13,'$'
CHYBA3            db   'Chyba zatvarania vstupneho suboru',10,13,'$'

OK            db   'Citanie a zapis...',10,13,'$'


.CODE
org 100h
                 
;------------------------------------------ Macro na vypis retazca ---------------------------------------------
 
vypis MACRO str
       mov ah,09h                     
     mov dx,offset str
       int 21h
      ENDM

;---------------------------------------------------------------------------------------------------------------
   
;-------------------------------------- Otvorenie suboru na citanie - PROCEDURA --------------------------------

otvorenie1 PROC
      lea dx, file_name_in         ;ulozenie mena vstupneho suboru do dx
      mov ah, 3dh            ;otvorenie daneho suboru
      mov al, 00000000b         ;nastavenie na citanie
      int 21h               ;sluzba prerusenia
      ret               ;navrat
otvorenie1 ENDP

;-------------------------------------- Citanie zo suboru - PROCEDURA ------------------------------------------

citanie PROC C
      USES bx,dx,cx
citaj:          


      mov bx, file_handle_in         ;odtialto citame
      lea dx, znak            ;sem ukladame nacitane znaky
      mov cx, 1            ;nacita sa jeden znak
      mov ah, 3fh
      int 21h            ;sluzba DOSu na citanie znakov zo suboru
      mov ah, 02h            ;
                int 21h               ;vypisanie znaku (cislice)                        
      cmp ax,0            ;porovnanie, ci sme sa na konci suboru
      je nacitane            ;skok na nacitane


      jmp citaj            ;skok na citanie dalsieho znaku

nacitane:      
      ret

citanie ENDP

;---------------------------------------------------------------------------------------------------------------

START:
             mov ax,@data
             MOV DS,AX
otvorvstup:   call otvorenie1            ;volanie procedury pre otvorenie suboru na citanie
      jnc citajj            ;ak nenastala chyba nastavi sa priznak a skoci na citajj


citajj:      vypis otvor_vstup         ;vypisanie hlasenia, ze vstupny subor bol otvoreny
      call citanie                 ;volanie procedury pre citanie zo suboru

uspesne:   vypis OK

      lea dx,vysledok
           mov ah,09h
           int 21h                     ; zobrazi text "Retazec odzadu..."

cely_retazec:
                cmp DI,0
                je koniec             ; koniec ?                                 
 
                mov AL, [text+DI]
                mov DL, AL            ;
                mov ah,02h            ;
                int 21h               ;vypisanie znaku (cislice)
             
                dec DI                ; dalsi znak v zdrojovom retazci
                jmp cely_retazec     
      
koniec:      mov ah, 3eh            ;zatvaranie vstupneho suboru            
      mov bx, file_handle_in            
      int 21h
      jnc koniec2
      vypis CHYBA3
koniec2:   vypis zatvor_vstup         ;zatvaranie vystupneho suboru   
      mov ah, 3eh                              
      int 21h
      mov ax, 4c00h
      int 21h
end start


 [ Príspevok: 1 ] 


len uprava programu v assembleri



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

pomoc s vytvorenim programu v Assembleri

v Backend

0

422

04.10.2011 17:49

tomik858

V tomto fóre nie sú ďalšie neprečítané témy.

Naprogramovanie ATmega8 a uprava programu

v Elektronika

17

2355

03.11.2010 15:32

FITrepairs

V tomto fóre nie sú ďalšie neprečítané témy.

Násobenie a delenie v assembleri

v Backend

4

2894

01.11.2007 20:01

martin90

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoduchá úloha v assembleri - pomozte

v Backend

6

2243

15.11.2007 20:38

martinezb6

V tomto fóre nie sú ďalšie neprečítané témy.

Delay aneb mrhanie casom v assembleri

v Backend

5

884

20.10.2009 23:53

stanke

V tomto fóre nie sú ďalšie neprečítané témy.

jednoducha uloha v assembleri pls help

v Ostatné

4

778

04.05.2008 11:42

snapshot

V tomto fóre nie sú ďalšie neprečítané témy.

instalacia programu

v Ostatné programy

1

755

21.10.2009 19:56

majky358

V tomto fóre nie sú ďalšie neprečítané témy.

Odinstalovanie programu

v Ostatné programy

7

1079

09.03.2007 18:22

PLaYeR

V tomto fóre nie sú ďalšie neprečítané témy.

Výber programu

v Grafické programy

1

521

18.01.2012 2:30

jtbs

V tomto fóre nie sú ďalšie neprečítané témy.

Vysvetlenie programu

v Backend

11

935

23.11.2008 20:41

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

názov programu...?

v Hry a herné konzoly

4

603

25.08.2011 15:32

Mego

V tomto fóre nie sú ďalšie neprečítané témy.

Uzatvaranie programu.

v Backend

6

833

03.10.2009 16:49

arnie16

V tomto fóre nie sú ďalšie neprečítané témy.

chyba programu

v Backend

1

535

09.05.2009 19:46

fonseka

V tomto fóre nie sú ďalšie neprečítané témy.

Zdielanie programu

v Ostatné programy

7

1672

26.11.2018 15:05

patro16

V tomto fóre nie sú ďalšie neprečítané témy.

Záchrana programu

v Ostatné programy

3

372

10.11.2014 8:42

kllr007

V tomto fóre nie sú ďalšie neprečítané témy.

tvorba programu

v Ostatné

0

650

26.01.2010 16:19

ipkis



© 2005 - 2026 PCforum, edited by JanoF