Вывод числа разного цвета в зависимости от условия (tasm) - Assembler

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

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

Здравствуйте, необходимо реализовать следующее: число выводится на экран. Если чётное, то выводится красным (к примеру), если нечётное - синим. Никак не пойму, как реализовать именно это условие с цветами.

Решение задачи: «Вывод числа разного цвета в зависимости от условия (tasm)»

textual
Листинг программы
;fasm code....
org  100h
jmp  start
 
mes0    db    13,10,' Type digit: $'
 
start:  mov   ah,9          ; мессага
        mov   dx,mes0       ;
        int   21h           ;
        mov   ah,8          ; ввод без эхо
        int   21h           ;
        cmp   al,13         ; Enter - выход!
        je    exit          ;
        test  al,1          ; проверка на чётность
        jnz   @@1           ;
        mov   bl,0Ah        ; цвет чётных - зелёный
        jmp   prn           ;
@@1:    mov   bl,0Ch        ; цвет нечётных - красный
prn:    call  prnSymbol     ; выводим символ на экран
        jmp   start         ; на повтор..
 
exit:   int   20h           ; выход!
;-----------------------------------------------------
prnSymbol:                  ;
        mov   ah,9          ; fn(9) видео/сервиса
        xor   bh,bh         ; страница
        mov   cx,1          ; повторов
        int   10h           ;
        ret                 ;

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

  1. org 100h — начало программы, устанавливает точку входа в программу;
  2. jmp start — переход на точку начала работы программы;
  3. mes0 db 13,10,' Type digit: $' — описание сообщения, выводимого на экран;
  4. start: mov ah,9 — установка регистра ah в значение 9, которое определяет функцию вывода на экран;
  5. mov dx,mes0 — в переменную dx записывается адрес строки сообщения, который будет выводиться на экран;
  6. int 21h — вызов функции 21h, которая выводит на экран сообщение;
  7. mov ah,8 — установка регистра ah в значение 8, которое определяет функцию ввода без эхо;
  8. int 21h — вызов функции 21h, которая осуществляет ввод без эхо;
  9. cmp al,13 — сравнение введенного символа с символом Enter (13);
  10. je exit — если символ равен Enter, то происходит переход на метку exit;
  11. test al,1 — проверка на чётность введенного символа;
  12. jnz @@1 — если символ нечётный, то происходит переход на метку @1;
  13. mov bl,0Ah — установка регистра bl в значение 0Ah, которое определяет красный цвет;
  14. jmp prn — переход на метку prn;
  15. call prnSymbol — вызов функции prnSymbol, которая выводит символ на экран;
  16. jmp start — переход на точку начала работы программы;
  17. exit: int 20h — выход из программы;
  18. prnSymbol: — начало описания функции prnSymbol;
  19. mov ah,9 — установка регистра ah в значение 9, которое определяет функцию вывода на экран;
  20. xor bh,bh — установка регистра bh в значение 0, которое определяет номер страницы;
  21. mov cx,1 — установка регистра cx в значение 1, которое определяет количество повторов;
  22. int 10h — вызов функции 10h, которая выводит символ на экран;
  23. ret — возврат из функции.

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

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