Сравнение чисел и вывод на экран с изменением цвета - Assembler

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

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

Доброго времени суток. Я учусь в колледже на программиста. Изучаем ассемблер (MASM611). Поставлена задача: сравнить три числа и результат вывести на экран в правом нижнем углу бирюзовым цветом. Я могу сравнить три числа, могу изменить цвет и указать координаты, но все это по отдельности. Совместить в одной программе не получается, программа выдает разные ошибки при запуске (перечислить их в данный момент не могу). Прошу прощения, если такая тема уже была поднята.

Решение задачи: «Сравнение чисел и вывод на экран с изменением цвета»

textual
Листинг программы
.model tiny
.code
org 100h
 
start:
mov bx,2
mov bp,4
mov sp,8
mov ax,0003h
int 10h
cld
 
mov ax,0B800h
mov es,ax
mov di,3480
 
cmp bx,bp
jle lab
cmp bx,sp
jle las
mov si,offset txt
mov cx,txtlen
cld
rep movsb
 
lab:
cmp bp,sp
jle lad
mov si,offset txt1
mov cx,txtlen1
cld
rep movsb
 
las:
mov si,offset txt2
mov cx,txtlen2
cld
rep movsb
 
lad:
mov si,offset txt2
mov cx,txtlen2
cld
rep movsb
 
mov ah,1
int 21h
int 20h
 
txt db 'P',03h,'e',03h,'r',03h,'v',03h,'o',03h,'e',03h,' ',03h,'b',03h,'o',03h,'l',03h,'s',03h,'h',03h,'e',03h
txtlen = $-txt
txt1 db 'V',03h,'t',03h,'o',03h,'r',03h,'o',03h,'e',03h,' ',03h,'b',03h,'o',03h,'l',03h,'s',03h,'h',03h,'e',03h
txtlen1 = $-txt1
txt2 db 'T',03h,'r',03h,'e',03h,'t',03h,'`',03h,'e',03h,' ',03h,'b',03h,'o',03h,'l',03h,'s',03h,'h',03h,'e',03h
txtlen2 = $-txt2
end start

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

Список элементов кода:

  1. Переменные bx, bp, sp используются для хранения чисел, которые необходимо сравнить.
  2. Переменная ax используется для хранения чисел, которые необходимо вывести на экран.
  3. Переменная es используется для указания сегмента памяти, где хранятся строки.
  4. Переменная di используется для указания смещения в памяти, откуда необходимо начать вывод строки.
  5. Переменные si, cx используются для указания строки и её длины, которые необходимо вывести на экран.
  6. Переменные txt, txt1, txt2, txtlen, txtlen1, txtlen2 используются для хранения строк и их длины.
  7. Команда cmp используется для сравнения чисел.
  8. Команды jle используются для перехода к соответствующим меткам в зависимости от результата сравнения.
  9. Команда mov используется для перемещения данных между регистрами и переменными.
  10. Команда rep movsb используется для быстрого вывода строки на экран.
  11. Команда int 21h используется для выхода из программы.
  12. Команда int 10h используется для вывода чисел на экран.
  13. Команда cld используется для очистки буфера при работе с строками.
  14. Команда offset используется для указания смещения в памяти, откуда начинается хранение строки.
  15. Команда lad используется для вывода строки в случае, если bp больше sp.
  16. Команда las используется для вывода строки в случае, если bx больше sp.
  17. Команда lab используется для перехода к соответствующей метке в зависимости от результата сравнения.
  18. Команда mov ah,1 используется для вывода символа на экран.
  19. Команда int 20h используется для выхода из программы.
  20. Строки txt, txt1, txt2 используются для хранения текста, который необходимо вывести на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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