- •8.091402 “Системы управления и автоматики”
- •Введение
- •Порядок выполнения работы.
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Строковые операции
- •Лабораторная работа №2 Изучение способов организации ветвлений и циклов на языке ассемблер
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Копирование строки
- •Сравнение строк
- •Сканирование строки.
- •Чтение из строки
- •Запись в строку
- •Чтение строки из порта
- •Запись строки в порт
- •Рекомендации по выполнению лабораторной работы
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Искажение имен
- •Подключение библиотек
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Лабораторная работа №4 Управление памятью.
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Содержание отчета
- •В данной лабораторной работе необходимо выполнить следующее:
- •Задания на лабораторную работу.
- •Контрольные вопросы и задания
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Задания на лабораторную работу.
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Надруковано в учбово-виробничому
- •61166, Харкiв, просп. Ленiна, 14.
Рекомендации по выполнению лабораторной работы
Для выполнения лабораторной работы необходимо запустить среду разработки \masm32\QEDITOR и набрать в ней текст программы. Общая структура программы приведена в листинге 1.
.486
.model flat, stdcall
option casemap :none ; с учетом регистра
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
; подключение внешних библиотек и их описаний
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
.data
; Объявление данных
. . .
.code
start:
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
; Код программы
. . .
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
end start
При написании кода программы необходимо четко различать, когда операции производятся над символьными данными, а когда с числовыми. Так, например, строка с нулевым завершителем "1472" может быть задана следующим образом:
S db 49,52,55,50,0 ; "1472",0
либо
S db "1472",0
и будет занимать в памяти 5 байт. В то время как число 1472 будет занимать в памяти 2 байта и может быть задано как:
S dw 1472
Для вывода на экран строковых данных необходимо выполнить следующий код:
print ADDR s ;печать результата
где, s – строка с нулевым завершителем.
Для вывода на экран числовых данных их сначала необходимо представить в виде строки:
invoke dwtoa, eax, OFFSET s ;перевод в строку
где, s – строка-буфер, в который необходимо занести результат преобразования числа в его строковое представление;
eax – регистр процессора, содержащий число.
Преобразование числа в строку осуществляется функциями библиотеки masm32.lib. Вывод на экран осуществляется макросом print, который получает в качестве параметра адрес строки с нулевым завершителем и вызывает функции WinAPI для вывода в консоль, описанные в библиотеке kernel32.lib. Таким образом, наличие инструкций:
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
является обязательным.
Для выяснения дополнительных возможностей библиотеки masm32.lib необходимо обратится к документации к пакету masm32. Список всех функций библиотеки masm32.lib доступен из меню "tools\browse MASM32 Lib".
Задания на лабораторную работу.
Для заданной строки с нулевым завершителем определить номера букв не являющихся буквами латинского алфавита.
В заданной строке с нулевым завершителем определить позицию заданной подстроки.
В заданной строке с нулевым завершителем определить символы, входящие в другую строку.
В заданной строке с нулевым завершителем определить символы, не входящие в другую строку.
В заданной строке с нулевым завершителем определить номера цифр.
В заданной строке с нулевым завершителем убрать пробелы, если их более одного подряд. Определить количество символов в новой строке.
В заданной строке с нулевым завершителем поменять символы каждой пары местами.
В заданной строке с нулевым завершителем переписать символы строки в обратном порядке.
В заданной строке с нулевым завершителем выделить отдельные слова, если в качестве разделителей используются разделители русского языка.
В заданной строке с нулевым завершителем вставить заданную подстроку, начиная с заданной позиции.
В заданной строке с нулевым завершителем удалить заданную подстроку, сколько бы раз она не встречалась в строке.
Заданы 2 строки, в которых символы упорядочены в порядке возрастания кодов. Объединить их в одну строку, сохранив упорядоченность.
Заданы 2 строки, в которых символы упорядочены в порядке убывания кодов. Объединить их в одну строку, сохранив упорядоченность.
Для заданного массива чисел подсчитать количество положительных чисел и занести их в обратном порядке в другой массив.
Для заданного массива чисел определить номера положительных чисел.
В заданном массиве чисел определить позицию, с которой начинается другой массив.
В заданном массиве чисел определить номера чисел, входящих в другой массив.
В заданном массиве чисел определить номера чисел, не входящих в другой массив.
В заданном массиве чисел определить номера четных чисел.
В заданном массиве чисел убрать числа, входящие в заданный диапазон [a, b] (Убрать числа, которые не меньше a и не больше b). Определить количество чисел в новом массиве.
В заданном массиве чисел поменять числа каждой пары местами.
В заданном массиве чисел определить номера нечетных чисел.
В заданный массив чисел вставить другой массив, начиная с заданной позиции.
В заданном массиве чисел удалить заданную последовательность чисел, сколько бы раз она не встречалась в массиве. Например, для массива 01234512345124 удалить последовательность 123. В результате должны получить массив: 04545124.
Заданы 2 упорядоченных в порядке возрастания массива чисел. Объединить их в один массив, сохранив упорядоченность.
