程序集8086:如何使用循环和视频存储器表示感谢

时间:2018-11-20 20:25:42

标签: assembly x86-16

我需要一个程序,该程序在中心显示在文本的左侧和右侧带有心形符号的“谢谢”,但是带有红色的心和带有绿色的文本。 我现在有了这段代码:

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

使用类似的代码,我需要显示“ heart(symbol)Thanks heart(symbol)”; 但心是红色,文字是绿色。 预先谢谢你

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一目标。以下是其中之一:

    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

请特别注意评论!不要只是复制粘贴。