Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! 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; Прямой просмотр
|