Facebook
From 123, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 200
  1. ;   PROGRAM  "pierwszy.asm"
  2.  
  3. dane SEGMENT    ;segment danych
  4. tekst   db 13,10
  5.         db 78,'azywam sie Pawel', 13, 10
  6.         db 'moj pierwszy program asemblerowy'
  7.         db 13,10
  8. txt2 db 128 dup ('#')
  9. koniec_txt db ?
  10. dane ENDS
  11.  
  12. rozkazy SEGMENT 'CODE' use16    ;segment zawierający rozkazy programu
  13.                 ASSUME cs:rozkazy, ds:dane
  14. wystartuj:
  15.                 mov ax, SEG dane
  16.                 mov ds, ax
  17.                 mov es, ax
  18.                 mov cx, txt2-tekst
  19.                 mov bx, OFFSET tekst    ;wpisanie do rejestru BX obszaru
  20.                                                                 ;zawierającego wyswietlany tekst
  21. ptl:
  22.                 mov dl, [bx]    ;wpisanie do rejestru DL kodu ASCII
  23.                                                 ;kolejnego wyświetlanego znaku
  24.                 mov ah, 2
  25.                 int 21H                 ;wyświetlenie znaku za pomocą funkcji nr 2 DOS
  26.                 inc bx                  ;inkrementacja adresu kolejnego znaku
  27. loop ptl                                ;sterowanie pętlą
  28.  
  29.                 mov si, OFFSET tekst
  30.                 mov di, OFFSET txt2
  31.                 add di, 32
  32.  
  33. ptl2:
  34.                 mov dl, [si]                  
  35.                 mov [di], dl  
  36.                 inc si
  37.                 inc di
  38.                
  39. loop ptl2                              
  40.  
  41.                 mov cx, koniec_txt-txt2
  42.                 mov bx, OFFSET txt2
  43.  
  44. ptl4:
  45.                 mov dl, [bx]    ;wpisanie do rejestru DL kodu ASCII
  46.                                                 ;kolejnego wyświetlanego znaku
  47.                 mov ah, 2
  48.                 int 21H                 ;wyświetlenie znaku za pomocą funkcji nr 2 DOS
  49.                 inc bx                  ;inkrementacja adresu kolejnego znaku
  50. loop ptl4      
  51.  
  52.                 mov al, 0               ;kod powrotu programu (przekazywany przez
  53.                                                 ;rejestr AL) stanowi syntetyczny opis programu
  54.                                                 ;przekazywany do systemu operacyjnego
  55.                                                 ;(zazwyczaj kod 0 oznacza, że program został
  56.                                                 ;wykonany poprawnie)
  57.  
  58.                 mov ah, 4CH     ;zakończenie programu – przekazanie sterowania
  59.                                                 ;do systemu, za pomocą funkcji 4CH DOS
  60.                 int 21H
  61. rozkazy ENDS
  62.  
  63. nasz_stos SEGMENT stack ;segment stosu
  64. dw 128 dup (?)
  65. nasz_stos ENDS
  66.  
  67. END wystartuj                   ;wykonanie programu zacznie się od rozkazu
  68.                                                 ;opatrzonego etykietą wystartuj