Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Asm_lab-Rus.docx
Скачиваний:
12
Добавлен:
27.08.2019
Размер:
239 Кб
Скачать
    1. Рекомендации по выполнению лабораторной работы

Для выполнения лабораторной работы необходимо запустить среду разработки \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".

    1. Задания на лабораторную работу.

  1. Для заданной строки с нулевым завершителем определить номера букв не являющихся буквами латинского алфавита.

  2. В заданной строке с нулевым завершителем определить позицию заданной подстроки.

  3. В заданной строке с нулевым завершителем определить символы, входящие в другую строку.

  4. В заданной строке с нулевым завершителем определить символы, не входящие в другую строку.

  5. В заданной строке с нулевым завершителем определить номера цифр.

  6. В заданной строке с нулевым завершителем убрать пробелы, если их более одного подряд. Определить количество символов в новой строке.

  7. В заданной строке с нулевым завершителем поменять символы каждой пары местами.

  8. В заданной строке с нулевым завершителем переписать символы строки в обратном порядке.

  9. В заданной строке с нулевым завершителем выделить отдельные слова, если в качестве разделителей используются разделители русского языка.

  10. В заданной строке с нулевым завершителем вставить заданную подстроку, начиная с заданной позиции.

  11. В заданной строке с нулевым завершителем удалить заданную подстроку, сколько бы раз она не встречалась в строке.

  12. Заданы 2 строки, в которых символы упорядочены в порядке возрастания кодов. Объединить их в одну строку, сохранив упорядоченность.

  13. Заданы 2 строки, в которых символы упорядочены в порядке убывания кодов. Объединить их в одну строку, сохранив упорядоченность.

  14. Для заданного массива чисел подсчитать количество положительных чисел и занести их в обратном порядке в другой массив.

  15. Для заданного массива чисел определить номера положительных чисел.

  16. В заданном массиве чисел определить позицию, с которой начинается другой массив.

  17. В заданном массиве чисел определить номера чисел, входящих в другой массив.

  18. В заданном массиве чисел определить номера чисел, не входящих в другой массив.

  19. В заданном массиве чисел определить номера четных чисел.

  20. В заданном массиве чисел убрать числа, входящие в заданный диапазон [a, b] (Убрать числа, которые не меньше a и не больше b). Определить количество чисел в новом массиве.

  21. В заданном массиве чисел поменять числа каждой пары местами.

  22. В заданном массиве чисел определить номера нечетных чисел.

  23. В заданный массив чисел вставить другой массив, начиная с заданной позиции.

  24. В заданном массиве чисел удалить заданную последовательность чисел, сколько бы раз она не встречалась в массиве. Например, для массива 01234512345124 удалить последовательность 123. В результате должны получить массив: 04545124.

  25. Заданы 2 упорядоченных в порядке возрастания массива чисел. Объединить их в один массив, сохранив упорядоченность.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]