Nasm, бутлоадер переключает цвета переднего плана и фона - PullRequest
1 голос
/ 14 октября 2010

Привет, я пишу загрузчик, используя nasm и т. Д. Виртуальной машины.В любом случае, я использую vram для отображения изменений цвета фона и шрифта, вызванных клавишами s, d, f, g.S переключает цвет шрифта с цветом фона.Я знаю, как это можно сделать, но я не знаю, как правильно.vram настроен так, что 2 байта - первый символ, второй - его атрибуты.Это фон, а затем цвет символов.Поэтому мне нужно взять их и поменять их.Это переключило бы цвет шрифта и цвет фона.Как мне на самом деле сделать это с кодом?

; s key
;///////////////////////////////////////////////////////////
.s:
mov bx,0xb800       ;direct video memory access 0xB8000
mov es,bx
xor bx,bx       ;es:bx : 0xb8000
mov dh,0        ;row from 0 to 24
mov dl,0        ;col from 0 to 79


    .loops1:
inc bx
mov byte [es:bx], 0ah   ;attribute 
inc bx

inc dl
cmp dl,80       ;col 0-79
jne .loops1
mov dl,0
inc dh
cmp dh,25       ;row 0-24
jne .loops1 
jmp .kbin

Второй вопрос: я использую этот цикл для определения ключа, как я могу изменить эти клавиши на Ctrl + клавиша.

.kbin:
 mov ah,10h  ;Read from keyboard
                ;ah scan code, al ascii char
 int 16h
 cmp al, 53h   ;uppercase s
 je .s

 cmp al, 73h   ;lowercase s
 je .s

 cmp al, 44h   ;uppercase d
 je .d

 cmp al, 64h   ;lowercase d
 je .d

 cmp al, 46h   ;uppercase f
 je .f

 cmp al, 66h   ;lowercase f
 je .f

 cmp al, 47h   ;uppercase g
 je .g

 cmp al, 67h   ;lowercase g
 je .g

 jmp .kbin

Спасибо.

1 Ответ

1 голос
/ 14 октября 2010

Это должно сделать это:

    mov ax, 0xb800
    mov es, ax
    mov ds, ax ; both pointing at vram area
    xor si, si
    xor di, di
    mov cx, num_chars
loop1:
    movsw // reads a word from ds:si into ax
    rol ax, 8 // switches the bytes in ax
    stosw // puts the word back
    dec cx
    jne loop1

Для второго используйте функцию 2 для int 16h.

Да, и получите немного документации. Может быть, вам понравится Tech: http://www.intel -assembler.it / portale / 5 / A-desktop-assembly-utility-program / A-desktop-assemblyr-utility-program.asp

...