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

  • Лабораторная работа 5.

  • Необходимые пояснения

  • Грудное вскармивание. ОргЭВМиС_лаб. Самостоятельная работа по написанию программы с использованием предлагаемых в качестве составных частей заготовленных фрагментов текста программы


    Скачать 84.98 Kb.
    НазваниеСамостоятельная работа по написанию программы с использованием предлагаемых в качестве составных частей заготовленных фрагментов текста программы
    АнкорГрудное вскармивание
    Дата28.11.2019
    Размер84.98 Kb.
    Формат файлаdocx
    Имя файлаОргЭВМиС_лаб.docx
    ТипСамостоятельная работа
    #97488
    страница2 из 3
    1   2   3

    Задание

    Требуется написать и отладить программу на языке ассемблера, эквивалентную следующему фрагменту программы на языке C.

    If((x > y) && (z < t) || (a != b)) c = d.

    Для временного хранения переменных a, b, c, d, x, y, z, t используйте регистр AX. Для реализации проверки условий используйте команду CMP, которая осуществляет вычитание источника (второй операнд команды) из приемника (первый операнд команды). Счет операндов осуществляется слева направо. В результате вычитания устанавливаются соответствующие флаги, для проверки которых используется команды условного перехода jne, jng, jnl.

    Требуется написать и отладить программу, реализующую структуру управления CASE, используя таблицу переходов. В данном примере используется пустая последовательность операторов для каждой метки выбора. Фрагмент программы CASE представлен ниже.

    mov bx,I; значение I от 0 до 2 определяет набор операторов, соответствующих метке выбора

    ;shl bx,1; умножение на два (если размер адреса в таблице переходов составляет 4 байта)

    Jmp cs:jump_table[bx]

    jump_table dw foo0, foo1, foo2; таблица переходов

    foo0:

    call case0

    jmp endcase

    foo1:

    call case1

    jmp endcase

    foo2:

    call case2

    jmp endcase

    case0:

    ret; пустая последовательность операторов

    case1:

    ret

    case2:

    ret

    endcase:

    mov ax,4C00h

    int 21h

    END begin; метка начала программы

    Лабораторная работа 5. Программирование ветвлений.

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

    Работа осуществляется с использованием средств ассемблирования и средств отладки.

    Необходимые пояснения

    На практике часто возникает необходимость описания многих ветвей решения задачи. В данной работе необходимо для заданных значений a, b, i, k осуществить различные вычисления. Значения a, b, i, k являются исходными данными, которые должны выбираться студентом самостоятельно и задаваться в процессе исполнения программы в режиме отладки. При этом следует рассмотреть всевозможные комбинации параметров a, b и k, позволяющие проверить различные маршруты выполнения программы (по указанию преподавателя).

    Рекомендуется при вычислении функций fn1 и fn2 вместо операции умножения использовать арифметический сдвиг и, возможно, сложение. При реализации функций fn1 и fn2 следует стремиться к минимизации длины кода.
    Задание

    Требуется разработать на языке Ассемблер IBM PC программу, которая по заданным целым значениям a, b, i, k вычисляет сначала значения i1 = fn1(a, b, i) и i2 = fn2(a, b, i), а затем значение res = fn3(i1, i2, k). Вид функций fn1, fn2  определяется из табл. 1, а вид функции fn3 - из табл. 2. Символы n1, n2, n3, используемые в описании функции f, соответствуют числовым индексам функции, которые представлены тремя соответствующими цифрами в табл. 3 индивидуальных заданий (n1, n2, n3).


    Таблица 1

    Таблица 2




    при a > b
    при a ≤ b




    min (i1, i2), при k=0


    max (i1, i2), при k≠0




    при a > b
    при a ≤ b




    max (i1, 10-i2), при k<0


    ‌|i1‌‌-i2|, при k≥0




    при a > b
    при a ≤ b




    |i1‌‌+i2|, при k=0


    min (i1, i2), при k≠0




    при a > b
    при a ≤ b




    min (i1, 8), при k<0


    max (8, i2), при k≥0




    при a > b
    при a ≤ b




    min (|i1|, 6), при k=0


    |i1|+|i2|, при k≠0




    при a > b
    при a ≤ b




    |i1|-|i2|, при k<0


    max (7, |i2|), при k≥0




    Таблица 3


    Номер задания

    Числовые индексы функций, выбираемых из табл.1 и табл. 2

    n1

    n2

    n3

    1

    1

    2

    1

    2

    2

    3

    2

    3

    3

    4

    3

    4

    4

    5

    4

    5

    5

    6

    5

    6

    6

    1

    6

    7

    1

    3

    1

    8

    2

    4

    2

    1   2   3


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