Asembler

Programovacie jazyky, rady, poradňa...
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Asembler

Príspevok od používateľa Zlatohlavok »

Nazdar, potrebujem vypísať súbor od konca, od začiatku mi to ide, ale neviem spraviť to, aby mi to išlo od konca. Neviete mi niekto poradiť?
Ďakujem :)
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Asembler

Príspevok od používateľa pcsiete »

Čo máš? V akom assembleri robíš (intel x86/x64, amd)? Aký používaš kompilátor (NASM, MASM, TASM, FASM)? Aké používaš API (C knižnice, DOS API (int 0x21))? Aký operačný systém máš (linux (verzia?), windows (verzia?), vlastný)?
Z toho mála čo si tu napísal sa ti nedá pomôcť.
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Re: Asembler

Príspevok od používateľa Zlatohlavok »

Mám spravený klasický výpis zo súbora txt. Čítam po 10 znakov do buffera a vypisujem.
používam kompilátor TASM + Dosbox na win 7.
Cvičiaci mi poradil len to, že mám použiť
MOV AH,42H ;nastavenie kurzora nakoniec
MOV AL,2 ;dlzka -10 // dlzka by mala byt velkost subora (pocet bitov - znakov) a to - 10 je kolko nacitavam a mam sa posuvat ale neviem ako to spravit vobec
MOV CX,0
MOV DX,0
INT 21H
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Asembler

Príspevok od používateľa pcsiete »

Najprv by si si mal asi pozriet rozdiel medzi medzi bit a byte.

Funkcia 42h sluzi je seek, cize presuvanie pozicie. Pouzi funkciu 0x3F na citanie...

Kód: Vybrať všetko

mov al, [pristup]; pristup k dos suboru
mov dx, nazovSuboru ;retazec s nazvom suboru
mov ah, 0x3D ;funkcia OPEN
int 0x21 ;otvor subor!

mov bx, ax ;presun info o subore vratene z predoslej operacie do bx
mov cx, 10 ;nacitaj 10 bajtov
mov ah, 0x3F ;funkcia READ
mov dx, buffer ;buffer (mal by mat aspon 10 bajtov)
int 0x21 ;citaj!

mov cx, 10
xor al, al
mov ah, 0x2
.loop:
    mov dl, byte ptr [dx+cx]
    int 0x21 ;vypis na STDOUT
    inc cx
    cmp cx, 10 ;skoncili sme?
    jnz .loop ;jasna sprava... 

; tu mozes cely ten cirkus zopakovat, daj si to proste od citania do loopu

mov ah, 0x3E ;funkcia CLOSE
xor al, al  ;v BX je stale subor, cize nerobime nic
int 0x21  ;zatvor subor!
Napísať odpoveď