Сборка 8086: Как сделать спасибо с помощью петли и видеопамяти - PullRequest
0 голосов
/ 20 ноября 2018

Мне нужна программа, которая показывает в центре надпись «Спасибо» с символами сердца в левой и правой части текста, но сердца с красным цветом и текст с зеленым цветом.Теперь у меня есть этот код:

mov ax, 0B800h
mov es, ax
mov di,spiazz
mov byte ptr es:[di+0], ' '
mov byte ptr es:[di+2], ' '
mov byte ptr es:[di+4], ' '
mov byte ptr es:[di+1], 20h
mov byte ptr es:[di+3], 70h
mov byte ptr es:[di+5], 40h

С подобным кодом, как этот, мне нужно показать «сердце (символ) Спасибо сердце (символ)»;но с красными сердцами и зеленым текстом.Заранее спасибо

1 Ответ

0 голосов
/ 25 ноября 2018

Есть много способов достичь этого.Ниже приведен один из них:

    mov  ax, 0B800h                ;Points to the 80x25 text screen
    mov  es, ax
    mov  di, (13-1)*160+(37-1)*2   ;Print At(37,13);    //Column 37, Row 13
    mov  si, msg
    cld                            ;This makes SI and DI move  f o r w a r d  as is needed
    mov  ax, 0403h                 ;AL=3 (heart character) AH=04h (RedOnBlack)
    push ax                        ;(1) Preserve on the stack
LL:
    stosw
    mov  ah, 02h                   ;GreenOnBlack
    lodsb
    cmp  al, 0                     ;Message was zero-terminated
    jne  LL                        ;Terminator not yet reached
    pop  ax                        ;(1) Restore from the stack
    stosw                          ;This outputs the second heart character

    ...

msg db 'Thanks', 0

Обратите особое внимание на комментарии!Не просто скопируйте и вставьте его.

...