Выделить на экране красным цветом все цифры (tasm) - Assembler

Узнай цену своей работы

Формулировка задачи:

Ребята нужна помощь!

Выделить на экране красным цветом все цифры.

Решение задачи: «Выделить на экране красным цветом все цифры (tasm)»

textual
Листинг программы
    org 100h
    mov ax, 0B800h
    mov ds, ax
    mov es, ax
    mov cx, 80*25
    xor si, si
    xor di, di
@L: lodsw
    cmp al, 30h
    jb  @F
    cmp al, 39h
    ja  @F
    and ah, 0F0h
    or  ah, 0Ch
@@: stosw
    loop    @L
    xor ax, ax
    int 16h
    int 20h

Объяснение кода листинга программы

Код на языке Assembler выполняет следующие действия:

  1. Указывает точку входа в программу (org 100h).
  2. Устанавливает сегменты данных и кода (mov ax, 0B800h; mov ds, ax; mov es, ax).
  3. Вычисляет количество байтов, которые нужно обработать (mov cx, 80*25).
  4. Инициализирует указатели на байты (xor si, si; xor di, di).
  5. Происходит циклическая обработка каждого байта в диапазоне от 0 до 80 (lodsw; cmp al, 30h; jb @F; cmp al, 39h; ja @F; and ah, 0F0h; or ah, 0Ch; stosw; loop @L).
  6. Завершает работу программы (xor ax, ax; int 16h; int 20h). Обратите внимание, что числа 30h и 39h соответствуют символам 0 и 9 в кодировке ASCII. Значение переменной cx (количество байтов) равно 80*25=2000. Переменные si и di являются указателями на байты, которые обрабатываются в цикле. Значение переменной ax в конце цикла равно 0, что позволяет использовать оператор loop для продолжения цикла до тех пор, пока значение переменной cx не станет равным 0. Переменная ax также используется для подачи адреса в функции int 16h и int 20h, которые используются для завершения работы программы.

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы