帮下忙菜鸟问题!!!!
assume cs : code_sg , ds : data_sg , ss : stack_sg
data_sg segment
db 'welcome to masm!' , 0
data_sg ends
stack_sg segment
dw 8 dup (0)
stack_sg ends
code_sg segment
start: mov dh , 8
mov dl , 3
mov cl , 2
mov ax , stack_sg
mov ss , ax
mov sp , 16
mov ax , data_sg
mov ds , ax
mov si , 0
call show_str
mov ax , 4c00H
int 21H
show_str:
push si
push cx
mov ax , 0
mov al , dl
mov bl , 2
mul bl
mov si , ax
mov al , dh
mov bl , 160
mul bl
mov bx , ax
mov di , 0
pop bp
heart_sg: mov ax , 0B800H
mov es , ax
mov cl , ds : [di]
mov es : bx[si], cl
mov ch , 00
jcxz ok
and byte ptr es : bx[si], 11011111B
inc si
mov es : bx[si], bp //问题在这..bp寄存器是16位的..他的内容有可能把es:bx[si]的内容覆盖
//一个显示的字符他是由2个部分组成..ASCII和他的属性...我这的bp只是想
//把2这个属性给es:bx[si]我调试看了bp=0002为什么覆盖了..结果还正确
//希望大家帮我解释下谢谢 ...我的表达能力比较差....
inc si
inc di
jmp short heart_sg
ok: pop cx
pop si
ret
code_sg ends
end start