Ďakujem
Asembler
-
Zlatohlavok
Light Expert
- Príspevky: 40
- Registrovaný: 24 nov 2010, 19:38
Asembler
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
Ďakujem
Re: Asembler
Č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ť.
Z toho mála čo si tu napísal sa ti nedá pomôcť.
-
Zlatohlavok
Light Expert
- Príspevky: 40
- Registrovaný: 24 nov 2010, 19:38
Re: Asembler
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
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
Re: Asembler
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...
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!