myart utworzono 29 maja 2009 utworzono 29 maja 2009 Hey, probuje napisac nastepujacy program w nasm ide: - kopiuje zawartosc pliku1 do plik2 (.txt) - w jednej lini powinny byc max 3 wyrazy (wyraz - ciag znakow oddzieliony spacja) Problem mam nastepujacy: nie moge wpisac 'znaku nowej lini' do plik2.txt Kod poniżej: [dodawanie entera - etykieta "enterek" - linia 77] bits 16org 100hsection .bssbufor resb 1;nowalinia resb 4section .dataplik1 db 'plik1.txt', 0plik2 db 'plik2.txt', 0;nowalinia db 0dh, 0section .textmov si, buformov di, 0;tworzymy plik2mov ah, 3chmov dx, plik2mov cx, 00hint 21h;otwieramy plik1mov ah, 3dhmov al, 02hmov dx, plik1int 21h;uchwyt na plik1mov bp, ax;otwieramy plik2mov ah, 3dhmov al, 02hmov dx, plik2int 21h;uchwyt na plik2mov ds, axzapisywanie:;wczytywanie znak˘w z pliku1mov ah, 3fhmov bx, bpmov dx, buformov cx, 1int 21h;zapisujemy do pliku2mov ah, 40hmov bx, dsmov dx, buformov cx, 1int 21h;sprawdzamy czy znak jest spacjacmp byte[si], ' 'je inkrementacjaczy_koniec:;sprawdzamy czy koniec plikucmp byte[si], '!'je zamykaniejne zapisywanieinkrementacja:inc di;mov si, '_';mov [nowalinia], sicmp di, 3je enterekjne czy_koniecenterek:;dodajemy entermov ah, 40hmov bx, ds;mov dx, 0dhmov dx, 0ahmov cx, 2int 21hmov di, 0jmp czy_konieczamykanie:;zamykamy plik1mov ah, 3ehmov bx, bpint 21h;zamykamy plik2mov ah, 3ehmov bx, dsint 21h;zamykamy programmov ax, 4chint 21h bede wdzieczny za pomoc
tom300 komentarz 30 maja 2009 komentarz 30 maja 2009 (edytowane) Dawno już nie pisałem żadnego programu w asmie ale ja bym spróbował zrobić tak: 1. po przerwaniu kończącym program dodałbym tą linię: enter db 13, 10 2. po etykiecie enterek zamiast mov dx, 0ah dałbym mov dx, enter i to powinno przypisywać enter na koniec pliku2 Mam nadzieję, że zadziała bo nie sprawdzałem tego u siebie.
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.