[ Príspevkov: 21 ] 
AutorSpráva
Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89

vopred dakujem
Začínal som BASIC trochu assemblerZ80 a potom TURBOPASCAL.Viem aj niečo s C++ ale iba Hello world a kvadr.rovnicu a tak.
Chcem assmebler uz iba.


Offline

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

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9 | 9

assemblerov je vela verzii, tak sa najprv rozhodni pre jeden.
BTW: hello world vo všetkých programovacích jazykoch nájdeš tu: http://www.roesler-ac.de/wolfram/hello.htm
tak tam si pozri aj ten assembler


Offline

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

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4

Kód:
.MODEL SMALL                   
.STACK 100H     
.DATA
               
text            DB 'Hello world !!!$'     ; retazec musi koncit znakom '$'

.CODE
                 
START:          MOV AX,@DATA     
                MOV DS,AX         ; do DS <- datovy segment

zadaj_text:     lea dx,text       ; do DX treba adresu textu
                mov ah,09h        ; do AH funkciu 09 (vypis textu))
                int 21h           ; Volanie fcie:(INT21/09h): vypis text

koniec:         MOV AX,4C00H         
                INT 21H               ; koniec programu               
                END START


Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89
Napísal autor témyOffline : 23.11.2007 23:50 | dajte mi 1.lekciu k assembleru (hello world)

ja som nechcel spam ja len chcem ktory je asi nauniverzalnejsi assembler?mne sa zda masm32 microsoft to je ono.
Chcel by som ten zdrojak v MASM32.Aj s vysvetlením mne to musis dvakrat vysvetlit inak nie


Offline

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

Registrovaný: 23.01.07
Prihlásený: 14.04.11
Príspevky: 239
Témy: 26 | 26

hento mi nešlo. skúste toto: (nepísal som to ja ja som len dopísal tie slovenské veci)

Win32:
Kód:
.386
.model flat, stdcall
include user32.inc
include kernel32.inc
.data
MsgBoxCaption  db "Aplikacia v Assembleri",0
MsgBoxText     db "Ahoj Svet!",0
.const
NULL       equ  0
MB_OK       equ  0
.code
Main:
     invoke MessageBoxA, NULL, ADDR MsgBoxText, ADDR MsgBoxCaption, MB_OK
     invoke ExitProcess, NULL
end Main


Konzola:
Kód:
.386
.model flat,stdcall
option casemap:none

include windows.inc
include kernel32.inc

.data
sConsoleTitle  db "Konzolova Aplikacia",0
sWriteText  db "Ahoj Svet!",0

.code

Main PROC
   LOCAL hStdout :DWORD
   invoke SetConsoleTitleA, offset sConsoleTitle

   invoke GetStdHandle, STD_OUTPUT_HANDLE
   mov hStdout,EAX

   invoke WriteConsoleA, hStdout, offset sWriteText, 16d, 0, 0
   invoke ExitProcess, 0

Main ENDP
end Main


Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89
Napísal autor témyOffline : 30.11.2007 20:08 | dajte mi 1.lekciu k assembleru (hello world)

martin90 píše:
hento mi nešlo. skúste toto: (nepísal som to ja ja som len dopísal tie slovenské veci)

Win32:
Kód:
.386
.model flat, stdcall
include user32.inc
include kernel32.inc
.data
MsgBoxCaption  db "Aplikacia v Assembleri",0
MsgBoxText     db "Ahoj Svet!",0
.const
NULL       equ  0
MB_OK       equ  0
.code
Main:
     invoke MessageBoxA, NULL, ADDR MsgBoxText, ADDR MsgBoxCaption, MB_OK
     invoke ExitProcess, NULL
end Main


Konzola:
Kód:
.386
.model flat,stdcall
option casemap:none

include windows.inc
include kernel32.inc

.data
sConsoleTitle  db "Konzolova Aplikacia",0
sWriteText  db "Ahoj Svet!",0

.code

Main PROC
   LOCAL hStdout :DWORD
   invoke SetConsoleTitleA, offset sConsoleTitle

   invoke GetStdHandle, STD_OUTPUT_HANDLE
   mov hStdout,EAX

   invoke WriteConsoleA, hStdout, offset sWriteText, 16d, 0, 0
   invoke ExitProcess, 0

Main ENDP
end Main

to mam dat do masm32 a pojde mi to


Offline

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

Registrovaný: 23.01.07
Prihlásený: 14.04.11
Príspevky: 239
Témy: 26 | 26

malo by . ja používam Assembly Studio. šak zkompiluj to a uvidíš


Offline

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

Registrovaný: 02.12.07
Prihlásený: 09.12.07
Príspevky: 5
Témy: 0 | 0

Zdravím.

Nebudem zbytočne zakladať novú tému, keďže mám taktiež taký začiatočnícky problém s assemblerom.

Posielam vám zdroják programu - potrebujem len dopísať príkazy na zistenie počtu riadkov načítaného textu. Skúšal som to už všelijak, ale okrem hŕby zmätených znakov som z toho nič nedostal, prosím o radu.

Vďaka za help

rick

ten zdroják:
Kód:
.CODE
START:      MOV AX,@DATA      ;MENO
      MOV DS,AX
      MOV AH,09H
      MOV DX,OFFSET MENO
      INT 21H

      MOV AH,09H      ;NOVY RIADOK
      MOV DX, OFFSET CR
      INT 21H
                  
      MOV DX,OFFSET OZNAM   ;VYZVA
      MOV AH,09H      
      INT 21H         
      MOV SIZE_,0      

ZADAJ:      MOV AH,01H      ;NAZOV SUBORU Z KLAVESNICE
      INT 21H
      CMP AL,0DH
      JE ZARIADKUJ
      MOV SI,OFFSET SUBOR
      ADD SI,SIZE_
      MOV [SI],AL
      INC SIZE_
      JMP ZADAJ
   
ZARIADKUJ:   MOV DX,OFFSET CR
      MOV AH,09H
      INT 21H

      MOV DX,OFFSET SUBOR   ;OTVORI SUBOR
      MOV AL,0
      MOV AH,3dH
      INT 21H
      MOV HANDLE,AX      
      JC HLASENIE1
      JMP LOAD

LOAD:      MOV DX,OFFSET ZNAK   ;NACITA SUBOR PO ZNAKU
      MOV CX,1
      MOV BX,HANDLE
      MOV AH,3FH
      INT 21H
      CMP AX,0
      JNZ WRITE
      JMP KONIEC
      
WRITE:       MOV DX,OFFSET ZNAK   ;ZAPISE ZNAKY NA VYSTUP
      MOV CX,1
      MOV BX,1
      MOV AH,40H
      INT 21H
      JNC LOAD
      JC HLASENIE2
                  ...


Offline

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

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4

Tento program Ti spocita pocet riadkov v subore subor.txt
- uprav si citanie nazvu suboru
- cita po jednom znaku a zaroven ho vypisuje
- spocita znaky (13) ... cize znaky noveho riadku
- nakoniec vypise ale blbost, lebo na adrese pocet je cislo (napr. 48) ale Ty to musis prerobit na znaky '4' a '8' a vypisat tie znaky !

Kód:
.MODEL SMALL                   
.STACK 100H     
.DATA
               
udaje_zo_suboru DB '.', '$'
file_handle     DW 0
dlzka           DB 0, 0
text_pocet      DB 10,13,"Pocet riadkov: $"
pocet           DW 1
meno_suboru     DB "subor.txt", 0

.CODE
                 
START:          MOV AX,@DATA
                MOV DS,AX

fileopen:       mov AX, 3D00h         ; open file (read only)
                lea DX, meno_suboru
                int 21h               ; INT21 ... file open
                mov file_handle, AX   ;; toto si musis opravit tak, aby si zadaval meno suboru!!!

fileread:       mov BX, file_handle
                mov CX, 1             ; CX...1    number of bytes to read
                lea DX, udaje_zo_suboru  ; pointer to read buffer
                mov AH, 3Fh           ; file read by filehandle
                int 21h               ; INT21 ... file read
               
                cmp AX,0
                jz  fileclose
               
                mov AL, udaje_zo_suboru
                cmp AL, 13
                jne data_out
                inc pocet               

data_out:       mov AL, udaje_zo_suboru
                MOV AH,09H
                LEA DX, udaje_zo_suboru
                INT 21h               ; vypis textu... (obsah suboru (znak_po_znaku) )
               
                jmp fileread               
               
fileclose:      mov BX, file_handle
                mov AH, 3Eh           ; file close by filehandle
                int 21h               ; INT21 ... file close

                MOV AH,09H
                LEA DX, text_pocet
                INT 21h               ; vypis textu: Pocet riadkov
               
                MOV AH,06H            ;; toto si musis opravit
                mov DX, pocet         ;;
                INT 21h               ;; vypis poctu !!!

koniec:         MOV AX,4C00H
                INT 21H               ; koniec               
                END START


Offline

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

Registrovaný: 02.12.07
Prihlásený: 09.12.07
Príspevky: 5
Témy: 0 | 0

zdravim,

vďaka za kód, pozrel som ho.
Tú prácu zo súborom mám spravenú tak, že program si vyžiada názov súboru, ktorý má otvoriť.
K tej oprave - to bude asi práve to čo potrebujem vedieť - tiež mi to namiesto čísla vypisovalo všelijaké smajlíky, znaky jak zo žolíkových kariet a iné hieroglify.
Inu - prečo práve 06h? nemohol by som to vypísať klasicky cez 09h, alebo 02h?
Tak ako je to s tým "prerobením" na znaky? Nestačí na to nejaký assemblerovský formát typu "integer"?

vďaka za odpovede

rick


Offline

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

Registrovaný: 02.12.07
Prihlásený: 09.12.07
Príspevky: 5
Témy: 0 | 0

zdravim

tak sa mi podarilo trochu postupit v tom pocte riadkov, ale este stale mi chyba "uzavret" cyklus ktory mi bude zvysovat pocet riadkov a robi mi problem cmp ax, 10 (pri a=0) ide, ale pri ax=10 nie (ax=10 by mal byt LF), tak uz fakt neviem co robim zle, prosim poradte.

rick

Kód:
.MODEL SMALL
.STACK 100H

.DATA

OZNAM   DB "Zadaj nazov suboru: $"
CHYBA1  DB "Chyba pri otvarani suboru$"
CHYBA2  DB "Chyba pri zapise do suboru$"
CHYBA3  DB "Chyba pri zatvarani suboru$"
HANDLE  DW ?
SUBOR   DB 128 DUP (?)
SIZE_   DW ?
CR     DB 0AH
        DB 0DH
        DB "$"   
ZNAK    DB 1 DUP (?)
pocet   DW 0



.CODE                
      
vypis_cislo   proc near      ;procedura vypise cislo na obrazovku
      push ax
      xor cx, cx
wn0:      xor dx, dx
      div bx
      push dx
      inc cx
      test ax, ax
      jnz wn0
wn2:      pop dx
      or dl, '0'      ;nieco s premenou cisla
      cmp dl, '9'      ;do znakov v asci code
      jbe wn3
      add dl, 7
wn3:      mov ah, 2
      int 21h
      loop wn2
      pop ax
      ret
      endp


START:   MOV AX,@DATA      
      MOV DS,AX


      MOV AH,09H      ;NOVY RIADOK
      MOV DX, OFFSET CR
      INT 21H
                  
      MOV DX,OFFSET OZNAM   ;VYZVA
      MOV AH,09H      
      INT 21H         
      MOV SIZE_,0   

ZADAJ:      MOV AH,01H      ;NAZOV SUBORU Z KLAVESNICE
      INT 21H
      CMP AL,0DH       
      JE ZARIADKUJ
      MOV SI,OFFSET SUBOR
      ADD SI,SIZE_
      MOV [SI],AL
      INC SIZE_
      JMP ZADAJ
   
ZARIADKUJ:   MOV DX,OFFSET CR
      MOV AH,09H
      INT 21H

      MOV DX,OFFSET SUBOR   ;OTVORI SUBOR
      MOV AL,0
      MOV AH,3dH
      INT 21H
      MOV HANDLE,AX      
      JC HLASENIE1
      

LOAD:      MOV DX,OFFSET ZNAK   ;NACITA SUBOR PO ZNAKU
      MOV CX,1
      MOV BX,HANDLE
      MOV AH,3FH      ;
      INT 21H         ;
      CMP AX, 10      ;koniec riadku (LF)
      jz pc         ;jump if zero
      JNZ WRITE      ;jump if not zero
      
      
WRITE:       MOV DX,OFFSET ZNAK   ;ZAPISE ZNAKY NA VYSTUP
      MOV CX,1
      MOV BX,1
      MOV AH,40H
      INT 21H
      JNC LOAD   
      JC HLASENIE2
      
HLASENIE1:   MOV AH,09H      ;CHYBA PRI OTVORENI
      MOV DX,OFFSET CHYBA1
      INT 21H
      JMP ZATVOR

HLASENIE2:   MOV AH,09H      ;CHYBA PRI ZAPISE
      MOV DX,OFFSET CHYBA2
      INT 21H
      JMP ZATVOR

HLASENIE3:   MOV AH,09H      ;CHYBA PRI ZATVARANI
      MOV DX,OFFSET CHYBA3    
      INT 21H

ZATVOR:      MOV BX,HANDLE      ;ZATVORI HANDLE SUBORU
      MOV AH,3EH
      INT 21H
      JC HLASENIE3
      JNC KONIEC

pc:      inc pocet      ;??? ako zvysovat pocet??
      mov ax, pocet         
      mov bx, 10         
      call vypis_cislo   
      ;jmp load         
      

KONIEC:      MOV AX,4C00H      ;KONIEC PROGRAMU
      INT 21H
      END START



Offline

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

Registrovaný: 02.12.07
Prihlásený: 09.12.07
Príspevky: 5
Témy: 0 | 0

staci mi aspon keby niekto vedel ako spravne zapisat cmp ax, (koniec riadku) :cry:


Offline

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

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4

Kód:
 cmp AX, 10 ; alebo cmp AX, 13


Offline

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

Registrovaný: 02.12.07
Prihlásený: 09.12.07
Príspevky: 5
Témy: 0 | 0

ano to som skusal, ale enter sa sklada z oboch znakov nie? CR+LF, tj 10 a 13, ale funguje mi to uz podla predosleho zdrojaku s ax=0dh (13d).

sento vdaka

rick


Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89
Napísal autor témyOffline : 09.12.2007 17:01 | dajte mi 1.lekciu k assembleru (hello world)

Môžem robiť v MASM32 editore je tam aj kompilator a tak dalej.


Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89
Napísal autor témyOffline : 19.12.2007 21:23 | dajte mi 1.lekciu k assembleru (hello world)

No toto som dal do assembly studia a nejde mi ti zkompilovať.

sento píše:
Kód:
.MODEL SMALL                   
.STACK 100H     
.DATA
               
text            DB 'Hello world !!!$'     ; retazec musi koncit znakom '$'

.CODE
                 
START:          MOV AX,@DATA     
                MOV DS,AX         ; do DS <- datovy segment

zadaj_text:     lea dx,text       ; do DX treba adresu textu
                mov ah,09h        ; do AH funkciu 09 (vypis textu))
                int 21h           ; Volanie fcie:(INT21/09h): vypis text

koniec:         MOV AX,4C00H         
                INT 21H               ; koniec programu               
                END START


Offline

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

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4

euthanan píše:
No toto som dal do assembly studia a nejde mi ti zkompilovať.


... a ja to viem skompilovat :P

niekedy su vase informacie udivujuce;
a co ja viem, co mas ako nastavene?
vobec si uz daco skompiloval (hocico)?
vacsinou Vam to aj daco vypise, co sa kompilatoru nepaci;
ak si myslis, ze po takej informacii Ti niekto povie co mas robit, tak tazko; iba ak by bol jasnovidec


Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89
Napísal autor témyOffline : 20.12.2007 13:03 | dajte mi 1.lekciu k assembleru (hello world)

ja neviem este som v assembly studio nič neskompiloval.Pretože v menu na hornrj lisťe nemám povolené vôbec niečo skompilovať.
Nie je to nejaký blbý kód
Veď v kóde nieje data segment text segment nic len seliake stack a org a ine čo mi nič nehovorí Ni ja neviem s assembleru nic ,ale v MASM32 som už niečo skompiloval.
D.


Offline

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

Registrovaný: 21.06.07
Prihlásený: 06.05.13
Príspevky: 421
Témy: 4 | 4

aku priponu ma tvoj zdrojak? (.asm)?

nebude to len nejaky shareware?

mimochodom ten zdrojak je pre 16-bitovy asembler


Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89
Napísal autor témyOffline : 20.12.2007 13:20 | dajte mi 1.lekciu k assembleru (hello world)

vidim sa mi zdalo ziadne eax a podobne volake divne mi to pripadalo no a ten ass.studio neviem uz sa mi zda ze som tam cosi zkompiloval.ale toto mi nejde kasli na to ja budem v MASM32 a v W32Dasm.ale vsetci tu pisu 16bit a v ass.studio.,nikto to tu nepise v MASM32
no taky problem som mal aj s Cpp a Devcpp a teraz uz mi to ide.aj Devcpp aj kompilovat aj si v tom pisem A TAK.
Neviem ale pisemi ze nemam user32.inc a tak nejake kniznice neviem pozriem sa na to.


Offline

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

Registrovaný: 20.11.07
Prihlásený: 04.07.12
Príspevky: 405
Témy: 89 | 89
Napísal autor témyOffline : 08.01.2008 13:24 | dajte mi 1.lekciu k assembleru (hello world)

No dajte mi niekto druhu lekciu z assembleru!.Zhánam knihu Začíname s assemblerom je to martinuse a chystá sa dotlač a už pekne dlho ,tak kde inde by som ju zohnal?.Majstrovstvá už mám.Je to dosť také že naskoč a choď.Ja by som potreboval nastúpiť normálne a nie trampjumperov robiť.
Keby sa dalo,že by sa dla stiahnúť.To by bolo fajn.A


 [ Príspevkov: 21 ] 


dajte mi 1.lekciu k assembleru (hello world)



Podobné témy

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

C++ hello world

v Assembler, C, C++, Pascal, Java

5

646

26.06.2009 18:27

reDo

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

Otázky z assembleru

v Assembler, C, C++, Pascal, Java

26

697

24.11.2014 19:17

F1L1P

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

P: lekciu ang jazyka- English in 20 min a day

v Predám

1

356

25.08.2010 1:57

notfake

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

dajte si vyrobit mriezku na vas FAN (vetracik)

v Modifikácie, návody a projekty

2

1448

27.07.2006 20:42

Harlequin

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

Prosím tých, čo sa vyznajú, dajte nejaké dobré tipy

v Notebooky a netbooky

17

1072

11.07.2010 10:59

DeltaForce

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

Windows Hello nefunguje

v Operačné systémy Microsoft

3

1077

09.10.2015 21:33

Webess

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

Hello Neigbour crash hry

v Počítačové hry

7

370

23.11.2016 17:51

werwest

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

Problem s Windows Hello Asus

v Notebooky a netbooky

1

76

05.05.2024 18:36

juro333

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

I/P: World of Thanks a World of Warships bonus karty - rôzne

v Predám

1

359

17.03.2018 22:25

Miso122

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

problem s kopirovanim textu-"Hello!",virus ??

v Antivíry a antispywary

1

635

28.08.2011 18:21

44mato44

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

1+1 GB dual vs 1+2GB single (win7, ATOM 230, ION)

v Pamäte

0

425

24.02.2014 13:42

Dulus

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

Update Microsoft .NET Framewerk, Version 1.1 Service Pack 1

v Operačné systémy Microsoft

1

510

13.12.2007 17:14

fuco

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

Co mam kupit:Creative S750 7+1 alebo nejaky Logitech 2.1-7.1

v Audio programy

2

1101

09.08.2007 14:15

Dell Ree

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

NFS world

v Počítačové hry

1

413

12.01.2013 12:42

german3131997

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

PC WORLD

v Assembler, C, C++, Pascal, Java

1

732

12.02.2009 11:57

IT_Geek

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

NFS:World

v Počítačové hry

5

936

31.07.2011 20:48

cisco4



© 2005 - 2024 PCforum, edited by JanoF