MENU  
  Strona startowa
  Newsletter
  Rejestracja
  LOGOWANIE
  Forum
  Systemy
  WAREZ
  Chomikuj.pl
  Darmowy Hosting
  GRAFIKA
  Baner Flash
  Alfabet HTML
  Asembler Kurs
  => Czas i data
  => ADRESOWANIE PAMIĘCI
  => CZAS I RUCH NA EKRANIE
  => DYREKTYWY ASSEMBLERA
  => OBSŁUGA GŁOŚNIKA
  => GENERATOR LICZB LOSOWYCH
  => REJESTRY PROCESORA
  => PĘTLE
  => SZABLON PROGRAMU
  PIERWSZY RAZ HTML
  Hakerstwo
  Świat WWW
  Serwery Proxy
  Galeria
  GRY
  SKÓRKA DO GG
  Lockerz.com
  SKLEP
...
SZABLON PROGRAMU

SZABLON PROGRAMU


Na początek przedstawię schemat pisania progamu typu exe w assemblerze.
Prawidłowo napisany program powinien składać się z conajmniej trzech segmentów , chociaż które programy mogą miec tylko jeden segment(segment kodu) jednakże ich rozmiar ograniczony jest jedynie do 64kB.
Jak już wspomniałem program powinien mieć 3 segmenty: kodu, danych i stosu. Podział ten wynika z konstrukcji procesora 8086 który zawiera takie rejestry segmentowe. W segmencie kodu powinien znajdować sie kod programu czyli instrukcje jakie powinien wykonać procesor w trakcie działania programu. W segmencie danych znajduja sie dane ktore wykorzystywane są w programie. Stos służy do tymczasowego odkładania wartości.Ważne jest by stos miał odpowiednią wielkość , taką by zmieściła się tam wystarczająca ilość danych. Gdy ilość danych odkładanych na stosie przekroczy jego zadeklarowaną wielkość może dojść do zamazania innych części programu co w efekcie może doprowadzić do błędnego wykonania się programu. Procesor w trakcie pracy wykonyje instrukcje które znajdują się pod adresem CS:IP, dane czerpie z pod adresu DS:przesunięcie dlatego kodu programu nie umieszcza sie w segmencie danych.
Ważne jest by program był zakończony wyjściem do DOS, gdyż w innym przypadku może dojść do "zawieszenia" komputera lub w najgorszym przypadku do utraty danych.

Oto schemat czytego programu typu EXE. Może on posłużyć jako szablon dla innych programów.

Komentarze rozpoczynają się znakiem średnika i są omijane poczas kompilacji programu.



.386c
;dyrektywa ASSUME przyporządkowywuje logicznie nazwy do segmentow. np. dzieki temu program sam bedzie szukal etykiet we wszystkich segmentach programu

ASSUME cs:CODE ds:DANE ss:STOSIK
;stale programu
ok equ 0
dos equ 21h
;poczatek segmentu kodu
CODE SEGMENT
;ponizej umiescimy zmienne i procedury :
;etykieta start jest punktem startowym programu
Start:
mov ax,dane ;deklaracja danych
mov ds,ax
mov ax,stosik ;deklaracja stosu
mov ss,ax
mov sp,offset szczyt

;OD TAD MOZECIE ZACZAC PROGRAM:


;KONIEC PROGRAMU:
mov ax,4C00h
int DOS
CODE ENDS

DANE SEGMENT
;tu umieszczamy dane i zmienne programu

DANE ENDS

STOSIK SEGMENT
dw 100h dup (0)
szczyt label word
STOSIK ENDS
END Start;koniec programu z zaznaczonym miejscem startu programu


Gdy skompilujemy go to nic on nie zrobi. Jest to poprawny program pusty. Nie wnikajcie w jego konstrukcję na razie, to nieistotne do pierwszych programów. Zajmiemy się tym w kolejnych lekcjach. Każdy zauważy jednak, że znajdują się już tam dwie linijki :

MOV AX,4C01h
INT 21h

To jest opuszczenie programu. Trzeba wskazać programowi, kiedy ma się skończyć no nie? Bo inaczej będzie wędrował bo zasobach pamięci w nieskończoność. Jak widzicie jest to jedna z funkcji przerwania 21h - to jest przerwanie DOSowe. W assemblerze komentarze umieszczamy po znaku ; Pamiętajcie też, że nie wolno używać polskich liter, chyba że w komentarzach. Stos w przypadku naszego pierwszego programu ma wielkość 512 B - jest to tablica 256 elementow 16 bitowych. Szczyt stosu jest deklarowany zawsze po deklaracji stosu (co jest logiczne i nie trzeba chyba tłumaczyć dlaczego nie przed).
 
Teraz 9984 odwiedzający (24462 wejścia)
Logowanie  
 
Nazwa użytkownika:
Hasło:
 
 
 
 
 
   
Ta strona internetowa została utworzona bezpłatnie pod adresem Stronygratis.pl. Czy chcesz też mieć własną stronę internetową?
Darmowa rejestracja