Assembler - wykład |
30-10-2000 |
WPROWADZENIE DO PROGRAMOWANIA W JĘZYKU TURBO ASSEMBLER - C.D.
Turbo Assembler wyświetla wiadomość o błędzie, jeśli napotka go w kodzie twojego programu, i jest to błąd który powoduje niemożliwość dokonania asemblacji i wygenerowania pliku obiektowego. Błędy musisz poprawić zanim uruchomisz program. Wiele błędów i wiadomości ostrzegawczych Turbo Assembler może wygenerować i ukryć w treści.
Tak jak w każdym języku programowania Turbo Assembler nie potrafi odnaleźć błędów logicznych. Potrafi on powiadomić cię czy twój kod może być zasemblowany, ale nie może powiedzieć ci czy będzie działał tak jak zamierzałeś.
Aby wydrukować kod programu na drukarce najlepiej użyć do tego edytora tekstu. Ale pliki źródłowe są przecież normalnymi plikami tekstowymi w kodzie ASCII, a więc możesz także drukować każdy plik źródłowy assemblera z poziomu linii komend DOS'a, z użyciem polecenia print.
Program - wysyłanie wiadomości do drukarki:
.model small
.stack 100h
.DATA
HelloMessage DB `Hello, World' 13, 10, 12
Hello_Message_Length EQU $
.CODE
startupcode
mov ah, 40h ; ustawienie przerwania nr 21h w tryb
mov bx, 4 ; przesyłania danych do standardowej drukarki
mov cx, Hello_ Message_Length ; określa liczbę bajtów do przesłania
mov dx, OFFSET HelloMessage ; ciąg znaków do wydrukowania
int 21h ; wywołanie przerwania - drukowanie
exitcode 0
END
Drukarka jest urządzeniem operacji wyjściowych. Nie będziesz chciał tylko wysyłać swoich programów do drukarki, ale także będziesz chciał, by te programy wysyłały wiadomości do drukarki na żądanie.
Poprzedni przykład jest wersją programu HelloWorld, która wyświetla swoje dane wyjściowe na drukarce (HELLO3.ASM).
W tej wersji programu zastępujesz dosową funkcję drukowania ciągu znaków na ekranie, funkcją DOS'a, która wysyła ciąg znaków do wybranego urządzenia.
Wprowadź i uruchom program, a zobaczysz, że zdanie HELLO WORLD zostanie wydrukowane (nie zapomnij zapisać programu na dysk, ta operacja zapisze zmodyfikowany kod w pliku Hello.asm, a poprzednia wersja programu zostanie zastąpiona). Możesz zmodyfikować ten program, aby wysyłał wiadomość HELLO WORLD na ekran, a nie na drukarkę zmieniając linię:
mov bx, 4 ; obsługa drukarki
na:
mov bx, 1 ; standardowa obsługa wyjścia
Dokonaj powyższej poprawki, następnie zasembluj i zlinkuj program zanim uruchomisz go ponownie.
Pisanie twojego drugiego programu w Turbo Assemblerze.
Teraz jesteś już gotów do napisania i uruchomienia kolejnego programu - REVERSE.ASM. Wpisz w edytorze:
.model small
.stack 100h
.DATA
MAXIMUM_STRING_LENGTH EQU 1000
StringToReverse DB MAXIMUM_STRING_LENGTH dup(?)
ReverseString DB MAXIMUM_STRING_LENGTH dup(?)
.CODE
mov ax, @data
mov ds, ax
mov ah, 3fh
mov bx, 0
mov cx, MAXIMUM_STRING_LENGTH
mov dx, OFFSET StringToReverse
int 21h
and ax, ax
jz DONE
mov cx, ax
push cx
mov ax, OFFSET StringToReverse
mov si, OFFSET ReverseString
add si, cx
dec si
REVERSELOOP:
mov al, [bx]
mov [si], al
inc bx
dec si
loop REVERSELOOP
pop cx
mov ah, 40h
mov bx, 1
mov dx, OFFSET ReverseString
int 21h
DONE:
mov ah, 4ch
int 21h
---------------------------------------
REVERSE.ASM
---------------------------------------