Сравнение чисел и вывод на экран с изменением цвета - 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
Объяснение кода листинга программы
Список элементов кода:
- Переменные bx, bp, sp используются для хранения чисел, которые необходимо сравнить.
- Переменная ax используется для хранения чисел, которые необходимо вывести на экран.
- Переменная es используется для указания сегмента памяти, где хранятся строки.
- Переменная di используется для указания смещения в памяти, откуда необходимо начать вывод строки.
- Переменные si, cx используются для указания строки и её длины, которые необходимо вывести на экран.
- Переменные txt, txt1, txt2, txtlen, txtlen1, txtlen2 используются для хранения строк и их длины.
- Команда cmp используется для сравнения чисел.
- Команды jle используются для перехода к соответствующим меткам в зависимости от результата сравнения.
- Команда mov используется для перемещения данных между регистрами и переменными.
- Команда rep movsb используется для быстрого вывода строки на экран.
- Команда int 21h используется для выхода из программы.
- Команда int 10h используется для вывода чисел на экран.
- Команда cld используется для очистки буфера при работе с строками.
- Команда offset используется для указания смещения в памяти, откуда начинается хранение строки.
- Команда lad используется для вывода строки в случае, если bp больше sp.
- Команда las используется для вывода строки в случае, если bx больше sp.
- Команда lab используется для перехода к соответствующей метке в зависимости от результата сравнения.
- Команда mov ah,1 используется для вывода символа на экран.
- Команда int 20h используется для выхода из программы.
- Строки txt, txt1, txt2 используются для хранения текста, который необходимо вывести на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д