Ĺadny brzuch
Chciałem napisać prosty program który pobierze godzinę i wyświetli ją na ekranie. Mam kod:
prog segment assume cs:prog, ds:prog, es:prog, ss:prog org 100h start: czas db ? mov AH, 2Ch int 21h mov czas,CH mov AH, 2h int 21h mov AH,AH int 21h prog ends end start
Proces kompiliacji i linkowanie przebiega bez problemów.(program TASM).
Wyswietla mi się taki błąd:
C:\PIERWSZY.EXE NTVDM PCU: napotkano niedozwoloną instrukcję. CS:0375 IP:003c OP:41 41 41 41 41 Wybież przycisk "Zamknij", aby zakończyć działanie aplikacji.
Pozatym w którymś tutorialu czytałem że taka struktura kodu powinna stwożyć plik z rozszeżeniem *.COM a nie *.EXE! Moze mi ktoś to wytłumaczyć??
Na końcu kodu programu dosowego powinieneś przypisać do AH wartość 4Ch i wywołać przerwanie dosowe int 21h.
Takie coś:
mov ah, 4Ch int 21h
O ile dobrze pamiętam to dane w programach *.com umieszczało się zawsze pod kodem programu, a nie przed, ale możliwe że źle pamiętam.
Tak się kompiluje żeby mieć pliki *.com:
tasm pierwszy.asm
tlink pierwszy.obj/t
a tak się kompiluje żeby mieć *.exe:
tasm pierwszy.asm
tlink /3 pierwszy.obj
Oczywiście zakładam, że program który kompilujesz nazywa się "pierwszy".
Użytkownik Igor edytował ten post 26 sierpień 2005, 23:04
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
prog segment assume cs:prog, ds:prog, es:prog, ss:prog org 100h start: czas db ? mov AH, 2Ch int 21h mov czas,CH mov AH, 2h int 21h mov AH,AH int 21h prog ends end start
Proces kompiliacji i linkowanie przebiega bez problemów.(program TASM).
Wyswietla mi się taki błąd:
C:\PIERWSZY.EXE NTVDM PCU: napotkano niedozwoloną instrukcję. CS:0375 IP:003c OP:41 41 41 41 41 Wybież przycisk "Zamknij", aby zakończyć działanie aplikacji.
Pozatym w którymś tutorialu czytałem że taka struktura kodu powinna stwożyć plik z rozszeżeniem *.COM a nie *.EXE! Moze mi ktoś to wytłumaczyć??
Na końcu kodu programu dosowego powinieneś przypisać do AH wartość 4Ch i wywołać przerwanie dosowe int 21h.
Takie coś:
mov ah, 4Ch int 21h
O ile dobrze pamiętam to dane w programach *.com umieszczało się zawsze pod kodem programu, a nie przed, ale możliwe że źle pamiętam.
Tak się kompiluje żeby mieć pliki *.com:
tasm pierwszy.asm
tlink pierwszy.obj/t
a tak się kompiluje żeby mieć *.exe:
tasm pierwszy.asm
tlink /3 pierwszy.obj
Oczywiście zakładam, że program który kompilujesz nazywa się "pierwszy".
Użytkownik Igor edytował ten post 26 sierpień 2005, 23:04