Виконала: Крашеніннікова Вікторія Вадимівна
Студентка групи АП-31б
ЛАБОРАТОРНА РОБОТА №4
Тема: "Робота з рядками у мові асемблер”
Мета: Придбання та закріплення практичних навичок у складанні та відладці програм, що містять у собі команди обробки рядків у мові асемблер. Індивідуальне завдання: Задані дві рядки str1 та str2 типу word Знайти співпадаючі елементи, замінити їх у першому рядку на 0.
Розробка алгоритму вирішення задачі
Вибір змінних:
Ім’я змінної |
Призначення змінних |
Str1 |
По перший рядок |
Str2 |
По другий рядок |
n |
Кі |
Текст програми:
data segment
string1 db 'Pervaya stroka..',0Ah,0Dh,'$'
string2 db 'Vtoraya strochka',0Ah,0Dh,'$'
n dw 16d
data ends
stak segment stack ;описание сегмента стека
dw 30 dup(?) ;описываем сегмент из 30 слов (word) = 60 байт
;данные стека не обнуляются (т. к. незачем)
tos label word ;указатель на вершину стека
stak ends ;конец описания сегмента стека
code segment ;описание сегмента кода
;связь сегментных регистров с соответствующими
;сегментами
assume cs:code, ds:data, ss:stak
;start - точка входа в программу
start: mov ax,data ;через регистр ax в сегментный регистр ds записываем
mov ds,ax ;адрес сегмента данных (т. к. напрямую писать в
;сегментный регистр нельзя)
mov es,ax ;сегментный регистр дополнительного сегмента
;устанавливаем на тот же сегмент данных (т. к. строковые
;переменные используют его для адресации строки-приемника,
lea si,string1
lea di,string2
mov cx,n
cld
check:
repne cmpsb
jcxz next
dec si
xor ax, ax
mov ds:[si], ax
inc si
jmp check
next:
mov ah,9h
mov dx,offset string1
int 21h
mov ah,4ch ; Выход
int 21h ; в DOS
code ends
end start
Результати виконання програми:
Стан області даних до виконання програми:
Стан області даних після виконання програми:
Висновок:
В ході лабораторної роботи я придбала та закріпила практичні навички в написанні та відладці програм, що містять у собі команди обробки рядків у мові асемблер.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.