马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ds:data,ss:stack
data segment
db 'hello world!',0 ;要显示的字符串
data ends
stack segment
dw 4 dup(0) ;开辟栈,8B
stack ends
code segment
start:mov dh,24 ;行号[0,24]
mov dl,25 ;列号[0,79]
mov cl,2 ;属性
mov ax,data
mov ds,ax
mov si,0
mov ax,stack
mov ss,ax
mov sp,8
call show_str
mov ax,4c00h ;此语句IP保存在 ss:6 7,(sp)=6
int 21h
show_str:mov ax,0b800h ;显存段地址es
mov es,ax
mov al,160 ;显存偏移地址bx=ah*160+al*2
mul dh
push ax ;(sp)=4
mov al,2
mul dl
mov bx,ax
pop ax ;(sp)=6
add bx,ax
change:push cx ;cx入栈,保存属性值 ip (sp)=4
mov cl,[si]
mov ch,0
jcxz ok
pop cx ;(sp)=6
mov al,[si]
mov ah,cl
mov es:[bx],ax
inc si
add bx,2
jmp short change
ok:pop cx ;因为cx==0,条件成立,执行此语句之前 (sp)=4 ,执行后(sp)=6,可使ret转移到mov ax,4c00h
ret
code ends
end start
|