Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ЗВІТ
З лабораторної роботи №8
З дисципліни: «Засоби системного програмування»
На тему: «Використання ланцюгових команд – команд опрацювання рядків.»
Львів 2010
ЗАВДАННЯ:
Створити *.exe програму, яка реалізовує дії, задані варіантом.Довжину вхідних рядків обмежити 20 символами. Передбачити можливість вводу пустого рядка.
Відслідкувати правильність виконання програми та продемонструвати результати її роботи для різних вхідних даних.
Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї.
Дати відповідь на контрольні запитання.
№
завдання
7
Ввести рядок тексту та один символ. Вилучити з вхідного рядка всі слова, що починаються на заданий символ. Вивести новий рядок на екран.
Лістинг програми:
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
max_len EQU 128
str1 db max_len dup (' '),10,13,'$'
perehid db 10,13,'$'
str2 db max_len dup (' '),10,13,'$'
char db 0
len1 dw 0
In1 db 'Input string: $'
In2 db 'Input char: $'
In3 db 'New string is: $'
sorry db 'not data $'
.CODE
mov si, offset str1
mov ax, seg str1
mov ds,ax
mov di, offset str2
mov ax, seg str2
mov es,ax
mov ah,9
mov dx, offset In1
int 21h
mov ah, 3fh
mov bx, 0
mov cx, max_len
mov dx, offset str1
int 21h
sub ax,2
jnz data
mov ah,9
mov dx, offset sorry
int 21h
jmp exit
data:
mov len1,ax
mov ah,9
mov dx, offset In2
int 21h
mov ah,1
int 21h
mov char,al
mov ah,9
mov dx, offset perehid
int 21h
CLD
mov cx,len1-1
next:
mov al, char
cmp str1[si],al
jne copy_word
seek_prob:
cmp str1[si],20h
je step
cmp str1[si],09h
je step
inc si
loop seek_prob
jmp exit
copy_word:
cmp str1[si],20h
je step
cmp str1[si],09h
je step
movsb
loop copy_word
step:
cmp str1[si],20h
je temp
cmp str1[si],09h
jne next1
temp:
movsb
loop step
next1:
sub cx,0
jnz next
exit:
mov ah,9
mov dx, offset str2
int 21h
mov ah,10h
int 16h
mov ah,4Ch
int 21h
end
Висновок і результати роботи програми:
Висновок: я навчився використовувати ланцюгові команди і працювати з рядками тексту в мові Асемблер.
.