Робота з рядками у мові асемблер

Страницы работы

Содержание работы

Виконала: Крашеніннікова Вікторія Вадимівна

Студентка групи АП-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 

Результати виконання програми:

                         Стан області даних до виконання програми:

                         Стан області даних після виконання програми:

Висновок:

                         В ході лабораторної роботи я придбала та закріпила практичні навички в написанні та відладці програм, що містять у собі команди обробки рядків у мові асемблер.

Похожие материалы

Информация о работе