Низкоуровневые языки программирования
Назначение специальных цепочечных команд, используемых для обработки специальных символьных данных. Команды ассемблера для обработки строковых данных. Алгоритм замены символа. Характер использования команд обработки строк. Разработка листинга программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 01.02.2020 |
Размер файла | 102,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Реферат
Перечень ключевых слов: НИЗКОУРОВНЕВЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ, АССЕМБЛЕР, КОМПИЛЯЦИЯ, КОМПИЛЯТОР, РЕГИСТР, СТРОКА, ЯЧЕЙКА, ПАМЯТЬ
Целью работы является объяснить назначение специальных цепочечных команд, используемых для обработки специальных символьных данных.
Значимость работы трудно переоценить, поскольку в повседневной деятельности технически грамотный специалист вынужден сталкиваться с необходимостью обработки любых данных программным кодом.
Введение
Для обработки строковых данных ассемблер имеет пять команд обработки строк:
· MOVS - переслать один байт или одно слово из одной области памяти в другую;
· LODS - загрузить из памяти один байт в регистр AL или одно слово в регистр АХ;
· STOS - записать содержимое регистра AL или АХ в память;
· CMPS - сравнить содержимое двух областей памяти размером в один байт или в одно слово;
· SCAS - сравнить содержимое регистра AL или АХ с содержимым памяти.
Префикс REP позволяет этим командам обрабатывать строки любой длины. Префикс кодируется непосредственно перед цепочечной командой, например REP MOVS В. Для использования префикса REP необходимо установить начальное значение в регистре СХ. При выполнении цепочечной команды с префиксом REP происходит уменьшение на одно значение в регистре СХ до 0. Таким образом, можно обрабатывать строки любой длины.
Для команды LODS адрес памяти определяется регистрами DS:SI. В зависимости от значения флага DF происходит увеличение или уменьшение значения в регистре SI. Поскольку одна команда STOS также увеличивает или уменьшает адрес в регистре DI на 1 для байта или на два для слова. Практическая польза команды STOS с префиксом REP- инициализация области данных конкретным значением. Длина области (в байтах или словах ) загружается в регистр СХ. Команда CMPS сравнивает содержимое одной области памяти ( адресуемой регистрами DS : SI ) с содержимым другой области ( адресуемой регистрами ES : DI ). В зависимости от флага DF команда CMPS также увеличивает или уменьшает адреса в регистрах SI и DI на 1 для байта или на два для слова. При использовании префикса REP в регистре СХ должно находится значение длины сравниваемых полей. Команда CMPS может сравнивать любое число байтов или слов.
Команда SCAS отличается от команды CMPS тем, что сканирует строку на определенное значение байта или слова. Команда SCAS сравнивает содержимое области памяти (адресуемой регистрами ES:DI ) с содержимым регистра AL или АХ. В зависимости от значения флага DF команда SCAS также увеличивает или уменьшает адрес в регистре DI на 1 для байта или на 2 для слова. При использовании префикса REP и значения длины в регистре СХ команды SCAS может сканировать строки другой длины. Команда SCAS особенно полезна в текстовых редакторах, где программа должна сканировать строки, выполняя поиск знаков пунктуации. Так как команда SCAS В должна продолжать сканирование до тех пор, пока результат сканирования "не равно" или регистр СХ не равен нулю, то используется префикс REPNE
1. Замена символа
Необходимо заменить в строке STRING символ & на символ пробела.
STRLEN EQIU 15: Длина поля STRING
STRING DB “THE TIVE & IS NOW”
Листинг программы:
.MASM
MODEL small
STACK 256
.data
strlenequ 18
stringdb 'To live&is to die$'
.code
assume ds:@data,es:@data
main:
mov ax,@data;настройка ds и
mov ds,ax;es на начало
mov es,ax;сегмента данных
mov ax,0600h;очистка экрана
mov bh,07h
mov cx,0
mov dx,184fh
int 10h
mov ax,0200h;установка курсора
mov bh,0h
mov dh,7h
mov dl,20h
int 10h
mov ah,09;вывод исходной
lea dx,string;строки
int 21h
cld;DF:=0
lea di,string ;в es:di-адрес строки
mov al,26h;в al-символ &
mov cx,strlen;в cx-длина строки
repnescas string;поиск
dec di ;уменьшение по выходе
mov al,20h;код пробела
stos string;запись в строку
mov ax,0200h;установка курсора
mov bh,0h
mov dh,8h
mov dl,20h
int 10h
mov ah,09;вывод изменённой
lea dx,string;строки
int 21h
mov ah,1h;readkey
int 21h
mov ax,4c00h;завершение
int 21h;программы
end main
Рисунок № 1 - Вывод результата
2. Использование команд обработки строк
DATASG SEGMENT PARA
CONAME DB 'SPASE EXPLORES INS'
PRLINE DB 20 DUP(")
Используя команды обработки строк, выполнить:
а) пересылку данных из CONAME в PRLINE слева направо;
MASM
MODEL small
STACK 256
.data
coname db 'Space Explores Ins $'
prlinedb 20 dup (?)
strlendw 20
.code
assume ds:@data,es:@data
main:
mov ax,@data;привязка ds и es
mov ds,ax;к сегменту
mov es,ax;данных
cld;DF:=0
lea si,coname;адрес источника
lea di,prline ;адрес приёмника
mov cx,strlen;длина строк
rep movsb;пересылка
lea dx,prline ;вывод полученной
mov ah,09h;строки
int 21h
mov ax,4c00h;завершение
int 21h;программы
endmain
Рисунок № 2 - Вывод результата
б) пересылку данных из CONAME в PRLINE справа налево;
MASM
MODEL small
STACK 256
.data
coname db 'Space Explores Ins $'
prlinedb 20 dup (?)
strlen dw 20
.code
assume ds:@data,es:@data
main:
mov ax,@data;привязка ds и es
mov ds,ax;к сегменту
mov es,ax;данных
std;DF:=1
lea si,coname;в si-адрес
add si,strlen;конца источника
dec si
lea di,prline;в di-адрес
add di,strlen;конца приёмника
dec di
mov cx,strlen;длина строк
rep movsb;пересылка
lea dx,prline;вывод полученной
mov ah,09h;строки
int 21h
mov ax,4c00h;завершение
int 21h;программы
end main
Рисунок № 3 - Вывод результата
в) загрузку третьего и четвертого байтов области CONAME в регистр АХ;
MASM
MODEL small
STACK 256
.data
coname db 'Space Explores Ins $'
prlinedb 20 dup (?)
strlendw 20
outstring dw(?)
.code
assume ds:@data,es:@data
main:
mov ax,@data;привязка ds и es
mov ds,ax;к сегменту
mov es,ax;данных
cld;DF:=0
lea si,coname;в si-адрес
add si,2;третьего элемента
lodsw;пересылка слова
mov outstring,ax;вывод из
lea dx,outstring;аккумулятора
mov ah,09h
int 21h
mov ax,4c00h;завершение
int 21h;программы
end main
Рисунок № 4 - Вывод результата
г) сохранение содержимого регистра АХ в области по адресу PRLINE +5;
MASM
MODEL small
STACK 256
.data
Coname db 'Space Explores Ins $'
prlinedb 20 dup (?)
strlendw 20
outstring dw(?)
.code
assume ds:@data,es:@data
main:
mov ax,@data;привязка ds и es
mov ds,ax;к сегменту
mov es,ax;данных
cld;DF:=0
lea di,prline;в di-адрес
add di,5;5-го элемента
mov al,'x';первый символ
stos prline[5];пересылка
mov al,'y';второй символ
stos prline[6];пересылка
lea dx,prline;вывод полученной
mov ah,09h;строки
int 21h
mov ax,4c00h;завершение
int 21h;программы
end main
Рисунок № 5 - Вывод результата
д) сравнение данных в области CONAME и PRLINE
Листинг программы:
MODEL small
STACK 256
.data
Coname db 'Space Explores Ins $'
prline db 20 dup (?)
strlen dw 20
outstring dw (?)
.code
assume ds:@data,es:@data
main:
mov ax,@data
mov ds,ax
mov es,ax
cld
lea di,prline
add di,5
mov al,'x'
stos prline[5]
mov al,'y'
stos prline[6]
lea dx,prline
mov ah,09h
int 21h
mov ax,4c00h
int 21h
end main
Рисунок № 6 - Вывод результата
е) сканирование области CONAME и поиск в ней символа " пробел ".
Если символ будет найден, то переслать его в регистр ВН.
masm
model small
.stack 100h
.data
CONAME db 'SPASE EXPLORES INS','$'
SimvolFound db 'Simvol Found BH=" "',13,10,'$'
SimvolNotFound db 'Simvol Not Found BH=0',13,10,'$'
simvol db ' ' ;сюда заносим символ для поиска
.code
assume ds:@data,es:@data
start:
mov ax,@data ;заносим в регистры
mov ds,ax ; ds и
mov es,ax ; es адрес сегмента данных
mov al,simvol ; в al заносим символ, который будем искать
cld ;сброс флага df
lea di,CONAME ;готовим сегмент(es) и смещение(di) строки для команды scas
mov cx,20 ;длинна строки
repne scas CONAME ;scas ищет символ в строке, а repne повторяет до тех пор, пока символы не совпадут()
je found ;Прыгаем на found если символ найден
mov bh,0 ;если символ не найден в bh заносим 0
jmp vivod1
found: ;если символ найден печатается сообщение Simvol Found
mov bh,simvol ;если символ найден, то заносим его в bh (по условию)
mov ah,9
lea dx,SimvolFound
int 21h
jmp zaderjka
vivod1: ;если символ не найден печатается сообщение Simvol Not Found
mov ah,9
lea dx,SimvolNotFound
int 21h
zaderjka: ;процедура задержки
mov ah,1 ;считываем код нажатой клавиши
int 21h ;считываем код нажатой клавиши
cmp al,27 ;сравниваем код клавиши с кодом клавиши Esc
jne zaderjka ;Если нет то прыгаем на zaderjka
exit:
mov ax,4c00h ; Exit
int 21h ; Exit
end start
Рисунок № 7 - Вывод результата
Заключение
листинг программа символ ассемблер
В процессе выполнения контрольной работы были решены задачи и выполнены следующие процедуры:
1) Изучены команды обработки строковых данных;
2) Изучена замена символов в строке;
3) Пересылка данных из CANAME в PRLINE слева направо;
4) Пересылка данных из CANAME в PRLOME справа налево;
5) Загрузка байтов области CONAME в регистр;
6) Сохранение содержимого регистра в области по адресу;
Также, в ходе выполнения контрольной работы был разработан вывод на экран в текстовом режиме сообщения произвольного характера.
Список использованных источников
1. Юров В.И. Assembler. Учебник для вузов. -- СПб.: ПИТЕР, 2019. - 636 с.
2. Аблязов, Р. З. Программирование на ассемблере на платформе x86-64. - М.: ДМК Пресс, 2019. - 304 с.
3. Аблязов, Р. З. Программирование на ассемблере на платформе x86-64 [Электронный ресурс] / Р. З. Аблязов. Режим доступа: http://znanium.com/bookread2.php?book=409290.Зубков, С. В. Assembler. Для DOS, Windows и Unix [Электронный ре- сурс] / С. В. Зубков. - М.: ДМК, 2018. - 640 с. Режим доступа: http://znanium.com/bookread2.php?book=408882
4. Кузьминов, А. Ю. Интерфейс RS232. Связь между компьютером и мик- роконтроллером. От DOS к WINDOWS98/XP [Электронный ресурс] / А. Ю. Кузьминов. - М.: ДМК пресс, 2019. - 320 с. Режим доступа: http://znanium.com/bookread2.php?book=406515
5. Касперски, К. Искусство дизассемблирования [Электронный ресурс] / К. Касперски, Е. Рокко. - СПб.: БХВ-Петербург, 2018. - 896 с Режим доступа: http://znanium.com/bookread2.php?book=489539
Размещено на Allbest.ru
...Подобные документы
Изучение команд для обработки строк, приемов, используемых в работе со строками, приемы их использования. Команды префикса повторения. Приемы программирования на языке Ассемблера с использованием подпрограмм, работа с командами вызова подпрограмм.
методичка [121,0 K], добавлен 18.12.2011Разработка гипотетической машины при помощи макросредств ассемблера. Разработка алгоритма для реализации обязательных команд: сравнения двух символьных строк; их обмена; определения длины слова. Основные функции обработки строки, листинг программы.
курсовая работа [59,6 K], добавлен 14.07.2012Структура автомата для сбора данных. Программы, реализующие заданный пользователем алгоритм автоматизации процедуры обработки журнальных данных. Описание микропроцессорной системы, ее упрощенная модель, система команд, блок-схема алгоритма обработки.
контрольная работа [65,8 K], добавлен 14.11.2010Типы команд, синтаксис ассемблера и код операции, по которому транслируется команда. Команды вычисления и непосредственной пересылки данных между регистрами. Поле для определения операции вычисления. Управление последовательностью выполнения программы.
реферат [29,1 K], добавлен 13.11.2009Краткая характеристика интегрированной среды Turbo Pascal. Принципы программирования разветвляющихся алгоритмов, циклических структур, задач обработки символьных данных, множеств. Правила записи данных в текстовый файл. Понятие явной и косвенной рекурсии.
учебное пособие [1,5 M], добавлен 10.12.2010Понятие синтаксического анализа. Программный продукт для обработки данных строкового типа. Построение сканера текстов с использованием утилиты flex, синтаксического анализатора с помощью утилиты bison. Грамматика языка программирования обработки строк.
курсовая работа [261,7 K], добавлен 29.10.2012Рассмотрение правил записи, способов ввода и вывода, использования функций обработки символьных данных в Pascal. Описание алгоритмизации и программирования файловых структур данных, проектирования структуры файла. Ознакомление с работой данных массива.
курсовая работа [336,2 K], добавлен 27.06.2015Создание и компиляция программ на ассемблере. Структура программ, использование специальных директив резервирования и инициализации данных. Организация ввода-вывода на ассемблере и организация вычислений. Команды передачи управления и обработки строк.
методичка [104,8 K], добавлен 02.12.2009Рассмотрение основ работы в Microsoft Visual Studio 2010 с языком программирования С#. Реализация программы обработки данных авиапассажиров. Выбор метода ввода данных из текстового файла. Создание фильтра для обработки списка по определенным критериям.
курсовая работа [1,4 M], добавлен 17.01.2016Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание алгоритма и пользовательского интерфейса, листинг программы обработки матрицы и результат её выполнения.
курсовая работа [391,1 K], добавлен 30.09.2013Система компьютерной обработки данных для сбора, систематизации, статистической обработки, анализа результатов учебного процесса за четверть, полугодие, год. Модуль обработки данных о качестве обучения, итогов успеваемости и данных о движении учащихся.
реферат [22,5 K], добавлен 05.02.2011Основные классифицирующие признаки системы управления базами данных. Модель данных, вид программы и характер ее использования. Средства программирования для профессиональных разработчиков. Организация центров обработки данных в компьютерных сетях.
презентация [6,8 K], добавлен 14.10.2013Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных.
курсовая работа [36,8 K], добавлен 18.09.2010Разработка сайта для хранения и обработки информации об абитуриентах в среде программирования Delphi 7. Архитектура базы данных. Функциональная схема программы. Даталогическая модель данных. Сущности БД и архива. Элементы пользовательского интерфейса.
дипломная работа [4,2 M], добавлен 30.03.2015Архитектура ЭВМ - совокупность принципов организации аппаратно-программных средств, их основные характеристики, определяющие функциональные возможности ЭВМ при решении заданных задач. Формат команд обработки данных, методы прямой и косвенной адресации.
контрольная работа [772,4 K], добавлен 06.06.2012Структура записей входного массива. Описание основных типов данных. Алгоритм программы: присвоение начальных значений переменных, чтение списка из файла, вывод данных на экран, выполнение обработки данных, сохранение списка в файл. Листинг программы.
курсовая работа [325,2 K], добавлен 28.12.2012Обработка текстовых данных, хранящихся в файле. Задачи и алгоритмы обработки больших массивов действительных и натуральных чисел. Практические задачи по алгоритмам обработки данных. Решение задачи о пяти ферзях. Программа, которая реализует сортировку Шел
курсовая работа [29,2 K], добавлен 09.02.2011Изучение символьных и строковых типов данных, алгоритма задачи на языке программирования Паскаль. Описания получения и установки отдельного символа строки, изменения регистра символов. Анализ создания и просмотра файла, поиска и сортировки информации.
курсовая работа [440,7 K], добавлен 13.06.2011Изучение базовых команд ПК на базе МП i286 и их форматов. Изучение прямых способов адресации данных. Наработка практических навыков работы с командами. Разработка регистровой модели выполнения операций передачи данных. Программа реализации команд.
контрольная работа [42,2 K], добавлен 12.03.2011Рассмотрение структурной схемы микропроцессорной системы обработки данных. Описание архитектуры микроконтроллера ATmega161. Расчет оперативного запоминающего устройства. Строение, назначение адаптера параллельного интерфейса, способы его программирования.
курсовая работа [621,5 K], добавлен 24.09.2010