Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет "Львівська політехніка"
Кафедра "Інформаційні системи та мережі"
Звіт до лабораторної роботи № 1
з предмету:
Сиcтемне програмування та операційні системи
на тему №1:
Створення виконуваного коду асемблерної програми
ЛЬВІВ-2008
Текст програми 1:
; HELLO.ASM – Виведення повідомлення "Hello World"
.MODEL small
.STACK 100h
.DATA
HelloMessage DB 'Hello, world',13,10,'$'
.CODE
ENTPY:
mov ax,@data
mov ds,ax ;занести у DS сегментну частину адреси сегменту даних
mov ah,9 ;функція DOS виведення рядка символів
mov dx,OFFSET HelloMessage ; вказівник на рядок
int 21h ; виведення рядка
mov ah,4ch ;DOS terminate program function
int 21h ;terminate the program
END ENTPY ; кінець програми
Текст програми 2:
; REVERSE.ASM – Виведення рядка у зворотньому порядку
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
MAX_STR_LEN EQU 1000
String DB MAX_STR_LEN DUP(?)
ReverseString DB MAX_STR_LEN DUP(?)
.CODE
ENTRY:
mov ax,@data
mov ds,ax ;set DS to point to the data segment
mov ah,3fh ; номер функції DOS введення даних
mov bx,0 ; дескриптор клавіатури
mov cx,MAX_STR_LEN ; максимальна кількість символів
mov dx,OFFSET String ; адреса рядка для введення
int 21h ; ввести рядок
and ax,ax ; чи введено будь-які символи?
jz Done ; ні, перехід на кінець програми
mov cx,ax ; записати кількість введених символів в регістр CX
push cx ; запам’ятати регістр CX у стеку
mov bx,OFFSET String ; занести у BX адресу введеного рядка
mov si,OFFSET ReverseString ; занести у SI адресу рядка результату
add si,cx
dec si ; адреса кінця рядка результату
m1:
mov al,[bx] ; отримати наступний символ введеного рядка
mov [si],al ; записати цей символ у рядок результату
inc bx ; вказівник на наступний символ введеного рядка
dec si ; вказівник на наступний символ рядка результату
loop m1 ; виконати цикл
pop cx ; отримати зі стеку довжину рядка
mov ah,40h ; номер функції DOS для виведення даних
mov bx,1 ; дескриптор дисплея
mov dx,OFFSET ReverseString ; адреса рядка для виведення
int 21h ; надрукувати рядок
Done:
mov ah,4ch ; номер функції DOS для завершення програми
int 21h ; завершити програму та вийти у DOS
END ENTRY ; кінець програми