我正在努力学习组装。我在用背景颜色(黄色)打印“Hello World!(红色文本)”时看到了这个例子
通过反复试验,我设法编辑代码以仅打印具有黄色背景的空间。但是我无法打印新行。例如,如果我添加一个新mov [200], ' '
的(不知道这是否正确),它会在不同的行上添加一个字符,但颜色不同..如果我00010001b
在逗号之后添加,如果打印出不同的颜色,应该是蓝色的。
任何人都可以在这段代码中给我一个领先的教程。我现在只想打印另一行..这是到目前为止的工作代码..它打印了一整行黄色
name "hi-world"
; hex bin color ; ; 0 0000 black ; 1 0001 blue ; 2 0010 green ; 3 0011 cyan ; 4 0100 red ; 5 0101 magenta ; 6 0110 brown ; 7 0111 light gray ; 8 1000 dark gray ; 9 1001 light blue ; a 1010 light green ; b 1011 light cyan ; c 1100 light red ; d 1101 light magenta ; e 1110 yellow ; f 1111 white
org 100h
; set video mode mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3) int 10h ; do it!
; cancel blinking and enable all 16 colors: mov ax, 1003h mov bx, 0 int 10h
; set segment register: mov ax, 0b800h mov ds, ax
; print "hello world" ; first byte is ascii code, second byte is color code.
mov [02h], ' '
mov [04h], ' '
mov [06h], ' '
mov [08h], ' '
mov [0ah], ' '
mov [0ch], ' '
mov [0eh], ' '
mov [10h], ' '
mov [12h], ' '
mov [14h], ' '
mov [16h], ' '
mov [18h], ' '
mov [1ah], ' '
mov [1ch], ' '
mov [1eh], ' '
mov [20h], ' '
; color all characters: mov cx, 34 ; number of characters. mov di, 03h ; start from byte after 'h'
c: mov [di], 11101100b ; light red(1100) on yellow(1110)
add di, 2 ; skip over next ascii code in vga memory.
loop c
; wait for any key press: mov ah, 0 int 16h
ret