pds063 (2) tif

pds063 (2) tif



Podstawy konstruowania programów w języku Asembler 63

asembler MASM praktycznie różni się (szczegółami) od pisania programów dla TAŚM. Autor niniejszej książki używać będzie programu TAŚM, kierując się osobistym przyzwyczajeniem do tego narzędzia.

Spróbujmy skonstruować pierwszy program asemblerowy, tym samym wprawiając całą machinę asemblerową w ruch. Zanim jednak to zrobimy, krótko opisane zostaną niektóre dyrektywy, konieczne do stworzenia programu.

•    SEGMENT - dyrektywy SEGMENT i ENDS dzielą program źródłowy na segmenty. Program może mieć cztery rodzaje segmentów: danych, kodu, stosu i dodatkowy. Dyrektywa SEGMENT może posiadać trzy argumenty: typ segmentu, połączenie, klasę. Typ segmentu określa początek adresu rozpoczynającego segment przechowywany w pamięci. Połączenie określa sposób łączenia segmentu z innymi segmentami o tej samej nazwie. Klasa segmentu ma wpływ na kolejność przechowywania segmentów.

•    ENDS-jw.

•    END - dyrektywa sterująca asemblerem, wyznaczająca asemblerowi koniec asemblacji programu źródłowego. Wszystko to, co wystąpi za dyrektywą END, będzie pomijane podczas asemblacji.

•    ASSUME - dyrektywy SEGMENT i ENDS zaznaczają początek i koniec segmentu programu, jednak nie wskazują asemblerowi, jaki rodzaj segmentu jest definiowany. To wskazanie umożliwia dopiero dyrektywa ASSUME. Dyrektywa ma postać ogólną: ASSUME rejestr segmentowy:nazwa segmentu lub ASSUME rejestr segmentowy:NOTHING. Na przykład ASSUME DS: Dane oznacza, iż segmentem danych jest segment o nazwie Dane, a rejestr DS będzie zawierał początek segmentu Dane.

•    ORG - dyrektywa sterująca asemblerem. Ustawia wskaźnik asemblera na wartość występującą po dyrektywie ORG, powodując przechowywanie przez asembler danych i instrukcji od miejsca wskazanego dyrektywą ORG. Dyrektywa ORG 100H używana jest w konstrukcji programów typu COM, wskazując asemblerowi, aby przechowywanie programu nastąpiło 0100H, czyli 256 bajtów za

/(1) przesyłamy wartość 0000H do rejestru AZ...

gdyż bezpośrednio do DS nie można tego zrobić ;(3) przesyłamy wartość OB80011 pośrednio do...

*.


bieżącą pozycją


MALUJ SEGMENT ASSUME C5:MALUJ M0V AX, 0000H M0V DS, AX M0V AX, 0B800H M0V ES, AX M0V SI »0000H M0V DI, 1*160D M0V CX,3*80D CLD


;(4)... rejestru AX, a docelowo do ES ;(5) adres offsetu pamięci, skąd kopiujemy ;(6) adres ojfsetu pamięci, dokąd kopiujemy ;{7) 240 znaków (włącznie z ich atrybutami)

;(8) kopiowanie „wprzód”

I*,;


Wyszukiwarka

Podobne podstrony:
pds059 (2) tif Podstawy konstruowania programów w języku Asembler 59 wym może być też symbol zdefini
pds061 (2) tif Podstawy konstruowania programów w języku Asembler 61 adresowanie pośrednie stwarza m
Jak pisać programy w języku asembler pod Linuksem?Część 1 - Podstawy, czyli czym to się je. Wyobraźc
Zrozumiec Assembler7 3.4 Proces tworzenia programu w języku Asemblera 89 3-4.1 Asemblowanie kodu
DSC01580 9 9 Przełącznik widoku klas Katedra Podstaw Elektroniki I Programowanie w języku C++ — 2FD&
Jak pisać programy w języku asembler?Wstęp. Pewnie wiele osób spośród Was słyszało już o tym, jaki t
Elementy kodu programu Program w języku C# musi zawierać definicję klasy, w której znajduje się się
75360 Śliwerski9 154 tom pierwszy Podstawy nauk o wychowaniu w których to kategoriach jako kwestie
5 mechanik 311504 Pracownia podstaw konstrukcji maszyn Program nauczania
MaszynaW 20 3. Opis symulatora 42 Dla plików zawierających treść programów źródłowych w języku asemb

więcej podobnych podstron