Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Repne scasw






    jnz NoZero; Нет нулевых элементов

    inc cx; Номер последнего нулевого

    NoZero: outword cx

     

    Заметим, что выход из нашего цикла возможен при попадании на нулевой элемент массива, при исчерпании счётчика цикла, а также при совпадении обоих этих условий. Следовательно, после команд repne scasw необходимо проверить, имел ли место случай просто выхода из цикла без нахождения нулевого элемента, что мы и сделали командой условного перехода jnz NoZero.

    Следующими рассмотрим команды загрузки элемента строки, которые являются командами пересылки и, при использовании в цикле, хорошо подходят для эффективной последовательной загрузки на регистр коротких (lodsb) или длинных (lodsw) элементов целочисленного массива. Эти команды отличаются только битом размера аргументов w, и имеют два неявных операнда op1 и op2, где op1=al для w=0, и op1=ax для w=1, а второй неявный операнд op2=< ds, si> является соответственно байтом или словом. Если обозначить буквой r регистры al или ax, то схему выполнения этих команд можно записать так:

    mov r, < ds, si>; φ (si)

    В качестве примера использования команды загрузки напишем фрагмент программы для реали­зации следующей задачи: найти сумму тех элементов беззнакового массива коротких целых чисел, значения которых больше 100. Если в массиве нет таких элементов, то будем в качестве ответа выдавать число ноль.

     

    N equ 10000

    D segment

    ...

    X db N dup (?)

    ...

    D ends

    C segment

    assume cs: C, ds: D, ss: Stack

    Start: mov ax, D

    mov ds, ax

    ...

    mov cx, N; Число элементов

    sub dx, dx; Сумма=0

    lea si, X; Адрес первого элемента

    cld; Прямой просмотр

    L: lodsb

    cmp al, 100

    jbe NoSum

    add dl, al; Суммирование

    adc dh, 0; Прибавление CF

    NoSum: loop L

    outword dx

     

    При суммировании коротких целых чисел мы получаем в качестве результата длинное целое число на регистре dx.

    Последними в этом формате SS рассмотрим команды сохранения элемента строки, которые являются командами пересылки и, при использовании в цикле, хорошо подходят для эффективного присваи­вания всем элементам массива заданного короткого (stosb) или длинного (stosw) целого значения. Эти команды отличаются только битом размера аргументов w, и имеют два неявных операнда op1 и op2, где второй неявный операнд op2=al для w=0, и op2=ax для w=1, а первый неявный операнд op1=< es, di> является соответственно байтом или словом. Если обозначить буквой r регистры al или ax, то схему выполнения команд можно записать так:

    mov < es, di>, r; φ (di)

    В качестве примера использования команды сохранения напишем фрагмент программы для присваивания всем элементам массива длинных целых чисел значения единица.

     

    N equ 30000

    D segment

    ...

    X dw N dup (?)

    ...

    D ends

    C segment

    assume cs: C, ds: D, es: D, ss: Stack

    Start: mov ax, D

    mov ds, ax

    mov es, ax

    ...

    mov cx, N; Число элементов

    mov ax, 1; Присваиваемое значение

    lea di, X; Адрес первого элемента

    cld; Прямой просмотр






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.