Главная страница
Навигация по странице:

  • ЧИТИНСКИЙ ТЕХНИКУМ ОТРАСЛЕВЫХ ТЕХНОЛОГИЙ И БИЗНЕСА

  • ОТЧЁТ ПО УЧЕБНОЙ ПРАКТИКЕ 09.02.07 Информационные системы и программирование

  • Назначение № Функции Данныена входе Данныена выход

  • Команда Описание

  • Назначение Алгоритм работы Пример

  • отчёт по учебной практике. Министерство образования и науки забайкальского края государственное профессиональное образовательное учреждение


    Скачать 233.84 Kb.
    НазваниеМинистерство образования и науки забайкальского края государственное профессиональное образовательное учреждение
    Анкоротчёт по учебной практике
    Дата13.06.2022
    Размер233.84 Kb.
    Формат файлаdocx
    Имя файлаOtchet.docx
    ТипРеферат
    #587994

    МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ЗАБАЙКАЛЬСКОГО КРАЯ ГОСУДАРСТВЕННОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
    ЧИТИНСКИЙ ТЕХНИКУМ ОТРАСЛЕВЫХ ТЕХНОЛОГИЙ И БИЗНЕСА


    УТВЕРЖДАЮ

    Зам. директора по учебной работе

    _____________ А.С.Варфоломеева

    «__» ___________________2022 г.

    ОТЧЁТ ПО УЧЕБНОЙ ПРАКТИКЕ

    09.02.07 Информационные системы и программирование





    Выполнил

    _______________Лузин Ю.С

    студент группы ИСИП-20-2п
    «___»__________2022 г.

    Проверил работу _______________Юн Р.Е.
    Руководитель практики от техникума
    «___»__________2022 г.

    2022 г.

    Содержание


    Введение 3

    1.Создание программного обеспечения на языке ассемблера 5

    2.Практическая работа №1 “Написание первой программы на языке ассемблера” 6

    3.Практическая работа №2 “Применение функций DOS и BIOS” 7

    3.1 Задание 1 8

    3.2 Задание 2 8

    3.3 Задание 3 8

    3.4 Задание 4 8

    4.Практическая работа №3 “Линейные алгоритмы” 9

    4.1 Задание 1 10

    4.2 Задание 2 11

    4.3 Задание 3 11

    4.4 Задание 4 12

    4.5 Задание 5 13

    5.Практическая работа №4 “Десятичная арифметика” 15

    Заключение 19

    Список использованных источников 20



    Введение


    Учебную практику "Разработка модулей программного обеспечения для компьютерных систем" проходил в ГПОУ “ЧТОТиБ”, в течении с 04.05.2021 г. по 06.05.2021 г.

    Учебная практика важна не только тем, что дает студенту общие представление и навыки о том, как будет проходить производственная практика в будущем, но и является основной часть процесса подготовки профессионально ориентированных работников и является отличной возможностью для проявления себя, показать свои знания и навыки, полученные на занятиях. Поэтому, каждый актуальный учебный процесс чередует теорию с практикой.

    Цель учебной практики – приобретение и закрепление теоретических и практических навыков:

    1. Разработки кода программного продукта на основе готовой спецификации на уровне модуля;

    2. Использования инструментальных средств на этапе отладки программного продукта;

    Задачи учебной практики состоят в следующем:

    1. Осуществлять разработку кода программного модуля на языках низкого и высокого уровня;

    2. Создавать программу по разработанному алгоритму как отдельный модуль;

    3. Разрешение проблем совместимости программного обеспечения;

    4. Диагностика и восстановление к омпьютерной системы.

    5. Выполнять отладку и тестирование программы на уровне модуля

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

    7. Уметь выполнять оптимизацию и рефакторинг программного кода

    8. Оформлять документацию на программные средства приобретение первоначального практического опыта:

    9. Разработка кода программного продукта на основе готовой спецификации на уровне модуля

    10. Использование инструментальных средств на этапе отладки программного продукта

    11. Проведение тестирования программного модуля по определенному сценарию

    12. Разработка мобильных приложений профессиональных компетенций(ПК):

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

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

    15. Выполнять отладку программного модуля с использованием специализированных программных средств.

    16. Выполнять тестирование программных модулей

    17. Осуществлять рефакторинг и оптимизацию программного кода

    18. Выбирать способы решения задач профессиональной деятельности, применительно к различным контекстам

    19. Осуществлять поиск, анализ и интерпретацию информации, необходимой для выполнения задач профессиональной деятельности.

    20. Пользоваться профессиональной документацией на государственном и иностранном языке


    1. Создание программного обеспечения на языке ассемблера


    Теория

    Процесс создания программы на языке ассемблера включает в себя следующие этапы:

    1. Постановка задачи (точное и подробное описание функциональности будущей программы, а также описание всех входных и выходных данных и способа их передачи программе);

    2. Разработка алгоритма программы (построение блок схемы, граф-схемы или текстовое или математическое описание решения);

    3. Формализация алгоритма (запись алгоритма на языке программирования). Создание текстового файла программы с расширением .asm (например my.asm). Отсутствие среды разработки позволяет программисту самостоятельно выбрать текстовый редактор для написания кода программы. Для этой цели подойдет любой текстовый редактор с нумерацией строк, мы рекомендуем редактор, встроенный в оболочку "FAR Manager".

    4. Компиляция программы. Компиляция - процесс перевода программы из текстового вида в машинный код. При использовании компилятора фирмы Borland необходимо выполнить: tasm my.asm т.е. запускаем компилятор tasm и передаем с командной строки имя файла, содержащего программу. Если программа имеет синтаксические ошибки, компилятор выдаст сообщение об ошибке с указанием номера строки и описанием для каждой ошибки (нужно вернуться на этап №3 и исправить синтаксические ошибки). В случае успешной компиляции будет создан файл, содержащий объектный код программы my.obj, который ещё не является исполняемым модулем.

    5. Компоновка программы. Компоновка - создание из файла объектного кода исполняемого модуля. tlink my.obj. В качестве параметра компоновщик tlink принимает имя файла содержащего объектный код программы (в нашем случае - my.obj). В случае успешной компоновки будет создан исполняемый модуль my.exe

    6. Запуск и тестирование исполняемого модуля программы. На данном этапе необходимо проверить, соответствует ли написанная программа постановке задачи, сделанной нами на этапе №1. Неправильная работа программы говорит об алгоритмической ошибке (семантическая ошибка), поэтому для успешного её устранения нужно вернуться на этап разработки алгоритма (этап №2).


    1. Практическая работа №1 “Написание первой программы на языке ассемблера”


    Теория

    Переход на новую строку

    Для организации перехода на новую строку достаточно вывести на экран символы перевода строки и возврата каретки (CR/LF). Эти символы имеют коды 10 и 13. Если в нашей программе необходимо после вывода строки перейти на новую, то для этого достаточно переписать вторую строку программы:

    mes2 db 'Выводим строку и переходим на новую...', 10, 13, '$'

    Переход на новую строку можно выполнить и до вывода сообщения на экран:

    mes3 db 10, 13, 'Выводим с новой строки...$'

    1. Постановка задачи. Написать программу, которая выводит одно под другим следующие сообщения:

    Привет!

    Меня зовут компьютер!

    До свидания!

    1. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    2. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb1.asm и записываем в него следующий код(без нумерации):

    data segment; начало сегмента данных

    mes db 'Hello!', 10,13,'My name a computer!', 10,13,'Goodbye!$' ; ссылка на сообщение в сегменте данных

    data ends; конец сегмента данных

    code segment; начало сегмента кода

    start:; метка start - начало программы

    assume cs: code, ds: data; директива компилятора

    mov ax, data; настройка сегмента данных

    mov ds, ax; настройка сегмента данных

    mov ah, 9; функция №9 - вывод строки на экран

    lea dx, mes; берем адрес строки

    int 21h; вызов прерывания для вывода строки

    mov ax, 4c00h; функция завершения программы

    int 21h; прерывание для завершения программы

    code ends; конец сегмента кода

    end start; конец программы с меткой start

    1. Результат работы алгоритма см. рис. 1.
    1. Практическая работа №2 “Применение функций DOS и BIOS”


    Теория

    Общий алгоритм применения функций любого прерывания:

    1. Поместить номер вызываемой функции в регистр ah;

    2. Подготовить, если необходимо, входные данные для функции;

    3. Вызвать прерывание;

    4. Сохранить или обработать выходные данные

    Пример 1: Вывести на экран символ '$'

    mov ah, 02; номер функции

    mov dl, '$'; входные данные

    int 21h; вызов прерывания

    Пример 2: Очистить экран

    mov ah, 0fh; получить параметры видеорежима

    int 10h

    mov ah, 00; установить параметры видеорежима

    int 10h

    Функции BIOS (Int 10h):

    Назначение

    Функции

    Данные
    на входе


    Данные
    на выход


    Установить положение курсора

    02

    dh - строка
    dl - колонка



    Прочитать символ и атрибут с экрана

    08

    bh - № экранной страницы

    ah - атрибут
    al - символ

    Вставить символ с атрибутом

    09

    bh - № экранной страницы;
    bl - атрибут;
    al - ASCII код;
    cx - число повторений



    Получить параметры видеорежима

    0fh



    al - видеорежим
    bh - № экранной страницы

    Установить параметры видеорежима

    00h

    al - видеорежим
    bh - № экранной страницы


      1. Задание 1


    1. Постановка задачи. Написать программу, которая выводит на экран сумму двух введенных с клавиатуры цифр (значение вводить так, чтобы сумма была меньше 10);

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb2-1.asm и записываем в него следующий код(без нумерации):
      1. Задание 2


    1. Постановка задачи. Написать программу, которая выводит на экран сумму двух введенных с клавиатуры цифр (значение вводить так, чтобы сумма была меньше 10);

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb2-2.asm и записываем в него следующий код(без нумерации):
      1. Задание 3


    1. Постановка задачи. Написать программу, которая выводит на экран сумму двух введенных с клавиатуры цифр (значение вводить так, чтобы сумма была меньше 10);

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb2-3.asm и записываем в него следующий код(без нумерации):
      1. Задание 4


    1. Постановка задачи. Написать программу, которая выводит на экран сумму двух введенных с клавиатуры цифр (значение вводить так, чтобы сумма была меньше 10);

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb2-4.asm и записываем в него следующий код(без нумерации):


    1. Практическая работа №3 “Линейные алгоритмы”


    Теория

    Команда пересылки данных:

    mov <приемник>, <источник>

    команда mov – команда пересылки данных, результатом ее исполнения является копирование данных из операнда <источник> в операнд <приемник>.

    mov ah, 09; записать в регистр ah число 09

    mov cl, ah; скопировать байт из регистра ah в ch

    mov bx, cx; скопировать слово из регистра cx в регистр bx

    mov ch, 0fh

    mov ch, bl

    Простейшие арифметические команды:

    Команда

    Описание

    add <слагаемое 1>, <слагаемое 2>

    Записать в операнд <слагаемое 1> значение суммы обоих операндов;

    inc <операнд >

    Увеличить <операнд > на единицу;

    sub <операнд 1>, <операнд 2 >

    Записать в операнд <операнд 1> значение разности операндов;

    dec <операнд >

    Уменьшить <операнд> на единицу.

    mul <сомножитель 2>

    Умножает <сомножитель1> на <сомножитель2>
    если <сомн2> - байт, то <сомн1> - регистр al (результат - слово в ax);
    если <сомн2> - слово, то <сомн1> - регистр ax (результат - двойное слово в dx:ax);

    div <делитель>

    Делит <делимое> на <делитель>
    если <делитель> - байт, то <делимое> - регистр ax (результат - частное в al, остаток в ah);
    если <делитель> - слово, то <делимое> - регистр овая пара dx:ax (результат - частное в ax, остаток в dx);

    Отладчик Turbo Debugger

    Отладчик Turbo Debugger (TD) – оконная среда отладки программ, позволяет производить отладку программ, написанных на языках Pascal, C, assembler. TD позволяет определить:

    • место логической ошибки (семантической);

    • причину логической ошибки.

    Для использования TD необходимо выполнить следующие действия:

    tasm /z *.asm ;откомпилировать с добавлением отладочной информации
    tlink /v *.obj ;скомпоновать с добавлением отладочной информации
    td *. exe

    Файл с исходным кодом программы должен находиться в директории отладчика.
      1. Задание 1


    1. Постановка задачи. Написать программу, которая выводит на экран сумму двух введенных с клавиатуры цифр (значение вводить так, чтобы сумма была меньше 10);

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb3-1.asm и записываем в него следующий код(без нумерации):

    data segment; начало сегмента данных

    data ends; конец сегмента данных

    code segment; начало сегмента кода

    start:; начало программы с меткой start

    assume cs: code, ds:data; директива компилятора

    mov ax, data; настройка сегмента данных

    mov ds, ax; настройка сегмента данных

    mov ah, 8; функция №8 - ввод символа с ожиданием

    int 21h; вызов прерывания для ввода символа

    mov bl, al; сохранение al в bl

    mov ah, 8; функция №8 - ввод символа с ожиданием

    int 21h; вызов прерывания для ввода символа

    mov bh, al; сохранение al в bh

    add bl, bh; сложение bl и bh

    sub bl, 30h; вычитание 30 бит для корректного отображения результата

    mov ah, 2; функция №2 - вывод символа

    mov dl, bl; получаем выводимые данные

    int 21h; вызов прерывания для вывода символа

    mov ax, 4c00h; функция завершения программы

    int 21h; прерывание для завершения программы

    code ends; конец программы

    end start; конец программы с меткой start

    1. Результат работы алгоритма см. рис. 6.
      1. Задание 2


    1. Постановка задачи. Изучите работу отладчика TD на примере задачи из первого задания.

    2. Необходимо изучить:

    a). Систему меню программы TD. (см. рис. 7)

    b). Систему вспомогательных окон

    • CPU; (см. рис. 8)

    • Dump. (см. рис. 9)
      1. Задание 3


    1. Постановка задачи. Написать программу, которая выводит на экран два введенных с клавиатуры символа в обратном порядке (Например: '1gg1', 'assa', '-==-');

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb3-3.asm и записываем в него следующий код(без нумерации):

    data segment ; начало сегмента данных

    mes db 'Enter anyway sumbols',10,13,'$'; ссылка на сообщение с меткой mes

    data ends; конец сегмента данных

    code segment; начало сегмента кода

    start:; начало программы с меткой start

    assume cs: code, ds: data; директива компилятора

    mov ax, data; настройка сегмента данных

    mov ds, ax; настройка сегмента данных

    mov ah, 9; функция №9 - вывод строки

    lea dx, mes; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov cl, al; сохранение символа в cl

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov ch, al; сохранение символа в ch

    mov ah, 2; функция №2 - вывод символа

    mov dl, ch; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ah, 2; функция №2 - вывод символа

    mov dl, cl; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ax, 4c00h; функция завершения программы

    int 21h; прерывание для завершения программы

    code ends; конец сегмента кода

    end start; конец программы с меткой start

    1. Результат работы алгоритма см. рис. 10.
      1. Задание 4


    1. Постановка задачи. Написать программу, которая вычисляет y=2a-b+1 при a и b введенных с клавиатуры;

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb3-4.asm и записываем в него следующий код(без нумерации):

    data segment; начало сегмента данных

    mes db 'y = 2a - b + 1',10,13,'$'; ссылка на сообщение с меткой mes

    a db 'a = $'; ссылка на сообщение с меткой a

    b db 10,13,'b = $'; ссылка на сообщение с меткой b

    ex db 10,13,'OTBET: $'; ссылка на сообщение с меткой ex

    data ends; конец сегмента данных

    code segment; начало сегмента кода

    start:; начало программы с меткой start

    assume cs: code, ds: data; директива компилятора

    mov ax, data; настройка сегмента данных

    mov ds, ax; настройка сегмента данных

    mov ah, 9; функция №9 - вывод строки

    lea dx, mes; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 9; функция №9 - вывод строки

    lea dx, a; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    sub al, 30h; вычитание 30 бит для корректного вычисления

    mov bl, 2; присвоение bl 2

    mul bl; умножение al на bl

    mov bl, al; сохранение результата в bl

    mov ah, 9; функция №9 - вывод строки

    lea dx, b; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov bh, al; сохранение al в bh

    sub bh, 30h; вычитание 30 бит для корректного вычисления

    sub bl, bh; вычитание из bl bh

    add bl, 1; сложение bl и 1

    xor ax, ax; зачистка регистра ax

    mov al, bl; перенос значения из bl в al

    mov bl, 10; присвоение bl 10

    div bl; деление al на bl

    add ax, 3030h; добавление регистру ax 30 бит для корректного отображения

    mov bh, ah; перенос значения из ah в bh

    mov ah, 9; функция №9 - вывод строки

    lea dx, ex; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 2; функция №2 - вывод символа

    mov dl, al; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ah, 2; функция №2 - вывод символа

    mov dl, bh; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ax, 4c00h; функция завершения программы

    int 21h; прерывание для завершения программы

    code ends; конец сегмента кода

    end start; конец программы с меткой start

    1. Результат выполнения алгоритма см. рис. 11.
      1. Задание 5


    1. Постановка задачи. Написать программу, которая выводит на экран сумму двух введенных с клавиатуры цифр (значение вводить так, чтобы сумма была больше 10);

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb3-5.asm и записываем в него следующий код(без нумерации):

    data segment; начало сегмента данных

    mes db 'y = a + b',10,13,'$'; ссылка на сообщение с меткой mes

    a db 'a = $'; ссылка на сообщение с меткой a

    b db 10,13,'b = $'; ссылка на сообщение с меткой b

    ex db 10,13,'OTBET: $'; ссылка на сообщение с меткой ex

    data ends; конец сегмента данных

    code segment; начало сегмента кода

    start:; начало программы с меткой start

    assume cs: code, ds: data; директива компилятора

    mov ax, data; настройка сегмента данных

    mov ds, ax; настройка сегмента данных

    mov ah, 9; функция №9 - вывод строки

    lea dx, mes; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 9; функция №9 - вывод строки

    lea dx, a; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    sub al, 30h; вычитание 30 бит для корректного вычисления

    mov bl, al; сохранение al в bl

    mov ah, 9; функция №9 - вывод строки

    lea dx, b; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov bh, al; сохранение al в bh

    sub bh, 30h; вычитание 30 бит для корректного вычисления

    add bl, bh; сложение из bl и bh

    xor ax, ax; зачистка регистра ax

    mov al, bl; перенос значения из bl в al

    mov bl, 10; присвоение bl 10

    div bl; деление al на bl

    add ax, 3030h; добавление регистру ax 30 бит для корректного отображения

    mov bh, ah; перенос значения из ah в bh

    mov ah, 9; функция №9 - вывод строки

    lea dx, ex; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 2; функция №2 - вывод символа

    mov dl, al; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ah, 2; функция №2 - вывод символа

    mov dl, bh; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ax, 4c00h; функция завершения программы

    int 21h; прерывание для завершения программы

    code ends; конец сегмента кода

    end start; конец программы с меткой start

    1. Результат работы алгоритма см. рис. 12.


    1. Практическая работа №4 “Десятичная арифметика”


    Теория

    Команды, предназначенные для работы с неупакованными BCD-числами:

     

    Назначение

    Алгоритм работы

    Пример

    aaa

    коррекция результата сложения двух одноразрядных неупакованных BCD-чисел

    1. проанализировать значение младшего полубайта регистра al и значение флага af;

    2. если (значение младшего полубайта регистра al >9) или (AF=1), то выполнить следующие действия:

      • увеличить значение al на 6;

      • очистить старший полубайт регистра al;

      • увеличить значение ah на 1;

      • установить флаги: af = 1, cf = 1,

    иначе сбросить флаги af = 0 и cf = 0.

    mov al, 7
    mov ch, 6
    add al, ch
    aaa

    ;ah=1
    ; al=3

    aas

    коррекция результата вычитания двух неупакованных одноразрядных BCD-чисел

    если (младший полубайт регистра al меньше 9) или (флаг af=1), то выполнить следующие действия:

    1. уменьшить значение младшего полубайта регистра al на 6;

    2. обнулить значение старшего полубайта регистра al;

    3. установить флаги af и cf в 1;

    иначе установить флаги af и cf в 1

    mov al, 5
    mov ch, 6
    sub al, ch
    aas

    ;al=9

    aam

    1. коррекция результата умножения двух неупакованных BCD-чисел;

    2. преобразование двузначного числа (<= 9910) из двоичного вида в его неупакованный BCD-эквивалент

    1. разделить значение регистра al на 10;

    2. записать частное в регистр ah, остаток — в регистр al.

    mov al, 7
    mov ch, 6
    mul ch
    aam

    ;ah=4
    ; al=2

    aad

    1. подготовка двух неупакованных BCD-чисел для операции деления;

    2. преобразование двузначного неупакованного ВCD-числа в двоичное представление

    1. умножить значение регистра ah на 10 и сложить полученное значение с содержимым регистра al: (ah*10)+al;

    2. присвоить регистру al значение (ah*10)+al;

    3. обнулить регистр ah

    mov ah, 4
    mov al, 2
    aad
    ;al=42
    mov cl, 6
    div cl
    ;al=7

    1. Постановка задачи. Написать программу, которая выводит на экран сумму двух введенных с клавиатуры цифр (значение вводить так, чтобы сумма была больше 10);

    2. Разработка алгоритма программы. Алгоритм линейный, разработки не требует.

    3. Формализация (запись) алгоритма. В текстовом редакторе создаем файл lb4.asm и записываем в него следующий код(без нумерации):

    data segment; начало сегмента данных

    mes db 'Enter values for the expression A+B $'; ссылка на сообщение с меткой mes

    a db 10,13,'a = $'; ссылка на сообщение с меткой a

    b db 10,13,'b = $'; ссылка на сообщение с меткой b

    ex db 10,13,'OTBET: $'; ссылка на сообщение с меткой ex

    data ends; конец сегмента данных

    code segment; начало сегмента кода

    start:; начало программы с меткой start

    assume ds:data, cs:code; директива компилятора

    mov ax, data; настройка сегмента данных

    mov ds, ax; настройка сегмента данных

    mov ah, 9; функция №9 - вывод строки

    lea dx, mes; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 9; функция №9 - вывод строки

    lea dx, a; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov cl, al; сохранение символа в cl

    sub cl, 30h; вычитание 30 бит для корректного счета

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov ch, al; сохранение символа в ch

    sub ch, 30h; вычитание 30 бит для корректного счета

    mov ah, cl; перемещение cl в ah

    mov al, ch; перемещение ch в al

    aad; преобразование ah и al в двухзначное число

    mov bl, al; сохранение результата в bl

    mov ah, 9; функция №9 - вывод строки

    lea dx, b; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov cl, al; сохранение символа в cl

    sub cl, 30h; вычитание 30 бит для корректного счета

    mov ah, 1; функция №1 - ввод символа

    int 21h; вызов прерывания для ввода символа

    mov ch, al; сохранение символа в ch

    sub ch, 30h; вычитание 30 бит для корректного счета

    mov ah, cl; перемещение cl в ah

    mov al, ch; перемещение ch в al

    aad; преобразование ah и al в двухзначное число

    mov bh, al; сохранение результата в bh

    mov ah, 9; функция №9 - вывод строки

    lea dx, ex; получение адреса строки

    int 21h; вызов прерывания для вывода строки

    xor ax, ax; очищение регистров ax

    mov ah, bl; перемещение bl в ah

    add ah, bh; сложение ah и bh

    aaa; коррекция результата после сложения

    mov bl, ah; сохранение десятков в bl

    mov bh, al; сохранение единиц в bh

    mov ah, 2; функция №2 - вывод символа

    add bl, 30h; добавление 30 бит для корректного отображения

    mov dl, bl; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ah, 2; функция №2 - вывод символа

    add bh, 30h; добавление 30 бит для корректного отображения

    mov dl, bh; получение данных для вывода

    int 21h; вызов прерывания для вывода символа

    mov ax, 4c00h; функция завершения программы

    int 21h; прерывание для завершения программы

    code ends; конец сегмента кода

    end start; конец программы с меткой start

    1. Результат работы алгоритма см. рис. 13.


    Заключение


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

    Знания, умения, навыки, полученные за период учебной практики, явились отличным стимулом для активной работы в освоении будущей специальности, позволили практически реализовать теоретически изученные моменты, получить начальный учебный опыт работы и сформировать общее представление о специфике деятельности.

    Список использованных источников


    1. YouTube: [Электронный ресурс]. – Режим доступа: https://www.youtube.com - свободный;

    Приложение



    Рисунок 1 – Результат работы алгоритма 1 практической работы



    Рисунок 6 – Результат работы алгоритма 3 практической работы, 1 задания



    Рисунок 7 – Меню программы TD



    Рисунок 8 – CPU



    Рисунок 9 – Dump



    Рисунок 10 – Результат работы алгоритма 3 практической работы, 3 задания



    Рисунок 11 – Результат работы алгоритма 3 практической работы, 4 задания



    Рисунок 12 – Результат работы алгоритма 3 практической работы, 5 задания



    Рисунок 13 – Результат работы алгоритма 4 практической работы


    написать администратору сайта