; Program wyswietla wlasna linie polecen i zmienne srodowiskowe. ; ; Autor: Bogdan D. ; kontakt: bogdandr (at) op (dot) pl ; ; nasm -O999 -o liniap.obj -f obj liniap.asm ; alink liniap.obj bibl\lib\std_bibl.lib -c- -oEXE -m- ; ; Copyright (C) 2005-2007 Bogdan 'bogdro' Drozdowski, bogdandr @ op . pl ; ; Ten program jest wolnym oprogramowaniem; mozesz go rozpowszechniac ; i/lub modyfikowac zgodnie z licencja GNU Lesser General Public License ; (GNU LGPL) w wersji wydanej przez Fundacje Wolnego Oprogramowania; ; wedlug wersji 3 Licencji lub (jesli wolisz) jednej z pozniejszych wersji. ; ; Ten program jest udostepniany z nadzieja, ze bedzie uzyteczny, lecz ; BEZ JAKIEJKOLWIEK GWARANCJI; nawet domyslnej gwarancji PRZYDATNOSCI ; HANDLOWEJ albo PRZYDATNOSCI DO OKRESLONYCH ZASTOSOWAN. W celu uzyskania ; blizszych informacji - Licencja GNU Lesser General Public License. ; ; Z pewnoscia wraz z niniejszym programem otrzymales tez egzemplarz ; Licencji GNU Lesser General Public License; jesli nie - napisz do ; Fundacji Wolnego Oprogramowania: ; Free Software Foundation ; 51 Franklin Street, Fifth Floor ; Boston, MA 02110-1301 ; USA ; dolaczamy moja biblioteczke %include "bibl\incl\nasm\std_bibl.inc" %include "bibl\incl\nasm\do_nasma.inc" .stack 400h ; program typu .exe musi ; miec stos section .text ..start: ; miejsce startu programu mov si, 80h ; [ds:80h] - dlugosc linii ; polecen bez Entera xor eax, eax mov al, [si] ; AL = dlugosc linii polecen pisz db "Dlugosc linii polecen: ",0 pisz8 ; wypisujemy AL nwln ; przechodzimy do nowej linii mov cx, ax ; CX = dlugosc linii polecen, ; abysmy wiedzieli, ; ile znakow nalezy wyswietlic inc si ; SI=81h. [ds:81h] to poczatek ; linii polecen pisz db "Linia polecen=",0 pisz_dl ; wypisujemy CX znakow spod ; DS:SI, czyli linie polecen nwln mov ax, cs pisz db "Segment kodu programu CS=",0 pisz16 ; wyswietlamy AX=CS nwln mov ax, ds pisz db "Segment danych DS=",0 pisz16 ; wyswietlamy AX=DS nwln mov ax, [ds:2ch] pisz db "Segment zmiennych srodowiskowych: DS:[2ch]=",0 pisz16 ; wyswietlamy AX=segment ; srodowiska nwln mov ds, ax ; DS = segment srodowiska xor si, si ; SI = poczatek segmentu pisz db "Zmienne srodowiskowe: ",0 mov ah, 0eh ; funckja wypisywania znaku dec si ; tylko po to, aby najblizsze ; "inc si" zadzialalo ; prawidlowo i ustawilo nas z ; powrotem na 0 wypisz_srod: nwln ; przejdz do nowej linii wypisz: inc si ; SI teraz pokazuje na ; kolejny znak cmp si, 400 ; zeby nie bylo za dlugo - ; to ta liczbe MOZNA ZMIENIC ja koniec mov al, [si] ; pobierz znak spod [DS:SI] test al, al ; czy bajt zerowy? jz sprawdz ; jesli tak, to sprawdzimy, ; czy nie 2 pod rzad int 10h ; wypisz znak jmp short wypisz ; i w kolko od nowa sprawdz: cmp byte [si+1],0 jne wypisz_srod koniec: wyjscie