Проблема вывода цвета символа в консоль asm

Рейтинг: 0Ответов: 0Опубликовано: 18.04.2023
section .data
    output db "O"

section .bss
    color resb 1

section .text
    global _start

randColor:
    ; генерируем случайное число от 0 до 15
    mov eax, 0x2d
    xor ebx, ebx
    int 0x80
    
    ; сохраняем результат в переменную color
    mov byte [color], al
    
    ; проверяем цвет, если он больше 7, то меняем на цвет светлее
    cmp byte [color], 7
    ja changeColor
    ret
    
changeColor:
    add byte [color], 8
    ret

printO:
    ; выводим символ "O" в случайном цвете
    mov eax, 4
    mov ebx, 1
    mov ecx, output
    mov edx, 1
    int 0x80
    
    ; устанавливаем цвет консоли
    mov eax, 4
    mov ebx, 1
    mov ecx, color
    mov edx, 1
    int 0x80
    
    ret

_start:
    ; вызываем функцию генерации случайного цвета
    call randColor
    ; вызываем функцию вывода символа "O"
    call printO
    
    ; завершаем программу
    mov eax, 1
    xor ebx, ebx
    int 0x80

В консоль выводится 0, но он стабильно белого цвета, проблема в компиляторе или ошибка в коде?

Ответы

Ответов пока нет.