Низкоуровневые языки программирования

Назначение специальных цепочечных команд, используемых для обработки специальных символьных данных. Команды ассемблера для обработки строковых данных. Алгоритм замены символа. Характер использования команд обработки строк. Разработка листинга программы.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.