[asm] zliczanie wystapien znaku w stringu

0

Mam taki problem, mam napisac program ktory z jednego pliku przekopiuje jakis string do pliku drugiego (ktory ma byc utworzony) a nastepnie policzy ilosc wystapien literki 'a' w tym stringu i zapisze go do trzeciego pliku (tez utworzonego w programie). Tyle udalo mi sie namazac

.model small
.stack 100h
.data
plik1 db 'plik1.txt',0
plik2 db 'plik2.txt',0
plik3 db 'wynik.txt',0
bufor db 108 dup(0),'$'
wskaznik1 dw ?
wskaznik2 dw ?
wskaznik3 dw ?

.code
start:
mov ax,@data
mov ds,ax
mov es,ax

;otwarcie pliku1
mov ah,3dh
mov al,0
lea dx,plik1
int 21h
mov word ptr wskaznik1,ax

;zczytanie elementow z pliku 1
mov ah,3fh
mov bx,wskaznik1
mov cx,108d
lea dx, bufor
int 21h

;zamkniecie pliku1
mov ah,3eh
mov bx,wskaznik1
int 21h

;utworzenie pliku2
mov ah,3ch
mov cl,00h
lea dx,plik2
int 21h
mov word ptr wskaznik2,ax

;ustawienie wsaznika
mov ah,42h
mov cx,0
mov dx,0
mov al,2
mov bx,wskaznik2
int 21

;dopisanie elementow do pliku2
mov ah,40h
mov bx,wskaznik2
mov cx,108d
lea dx,bufor
int 21h

;zamkniecie pliku2
mov ah,3eh
mov bx,wskaznik2
int 21h

;utworzenie pliku3
mov ah,3ch
mov cl,00h
lea dx,plik3
int 21h
mov word ptr wskaznik3,ax

;ustawienie wsaznika
mov ah,42h
mov cx,0
mov dx,0
mov al,2
mov bx,wskaznik3
int 21

;dopisanie elementow do pliku2
mov ah,40h
mov bx,wskaznik3
mov cx,5d
lea dx,licznik
int 21h

;zamkniecie pliku3
mov ah,3eh
mov bx,wskaznik3
int 21h

mov ah,4ch
int 21h
end start
end

Teraz chcialbym zeby ktos napial mi algorytm zliczania tych literek i zapisania go do pliku

0
mov SI, offset buf
xor AX, AX
PTL:
cmp byte ptr[SI], 'a'
jne NIE
inc AX
NIE:
inc SI
cmp SI, offset buf+ length buf
jne PTL

Wynik masz w AX wystarczy zamienić na ASCII i zapisać do pliku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1