assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
push dx
push bx
push cx
mov ax,0b800h
mov es,ax
mov ah,0
mov al,0a0h
mul dh
mov bx,0
mov bl,dl
add bx,ax
do:
mov cl,[si]
mov ch,0
jcxz ok
mov es:[bx],cl
pop cx
inc bx
mov es:[bx],cl
push cx
inc bx
inc si
jmp short do
ok:
pop cx
pop bx
pop dx
ret
code ends
end start
结果显示如下:
-u
0C89:0☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻ MOV DH,08
哪错了呢?
code segment
start:mov dh,8
mov dl,3
mov cl,2
是这里,因为bx=(0a0*dh+dl)是个奇数,而此时es:[bx]是字符的颜色属性,不是它的ascii码。
当更改为:mov dl,4后
运行如下:
LINK : warning L4021: no stack segment
C:\DOCUME~1\ADMINI~1>debug 177.exe
-u
0CWelcome to masm! ///这里呢^^ MOV DH,08
0C89:0002 B204 MOV DL,04
0C89:0004 B102 MOV CL,02
0C89:0006 B8870C MOV AX,0C87 |