; PROGRAM "pierwszy.asm" dane SEGMENT ;segment danych tekst db 13,10 db 78,'azywam sie Pawel', 13, 10 db 'moj pierwszy program asemblerowy' db 13,10 txt2 db 128 dup ('#') koniec_txt db ? dane ENDS rozkazy SEGMENT 'CODE' use16 ;segment zawierający rozkazy programu ASSUME cs:rozkazy, ds:dane wystartuj: mov ax, SEG dane mov ds, ax mov es, ax mov cx, txt2-tekst mov bx, OFFSET tekst ;wpisanie do rejestru BX obszaru ;zawierającego wyswietlany tekst ptl: mov dl, [bx] ;wpisanie do rejestru DL kodu ASCII ;kolejnego wyświetlanego znaku mov ah, 2 int 21H ;wyświetlenie znaku za pomocą funkcji nr 2 DOS inc bx ;inkrementacja adresu kolejnego znaku loop ptl ;sterowanie pętlą mov si, OFFSET tekst mov di, OFFSET txt2 add di, 32 ptl2: mov dl, [si] mov [di], dl inc si inc di loop ptl2 mov cx, koniec_txt-txt2 mov bx, OFFSET txt2 ptl4: mov dl, [bx] ;wpisanie do rejestru DL kodu ASCII ;kolejnego wyświetlanego znaku mov ah, 2 int 21H ;wyświetlenie znaku za pomocą funkcji nr 2 DOS inc bx ;inkrementacja adresu kolejnego znaku loop ptl4 mov al, 0 ;kod powrotu programu (przekazywany przez ;rejestr AL) stanowi syntetyczny opis programu ;przekazywany do systemu operacyjnego ;(zazwyczaj kod 0 oznacza, że program został ;wykonany poprawnie) mov ah, 4CH ;zakończenie programu – przekazanie sterowania ;do systemu, za pomocą funkcji 4CH DOS int 21H rozkazy ENDS nasz_stos SEGMENT stack ;segment stosu dw 128 dup (?) nasz_stos ENDS END wystartuj ;wykonanie programu zacznie się od rozkazu ;opatrzonego etykietą wystartuj