献给初学者
;--------------------------------------------------------------------------------------
show_str:
;push指令保护子程序用到的寄存器
push bx
push cx
push dx
push si
push di
;指定显存区域
mov ax,0b800h
mov es,ax
;初始化行
mov ax,0a0h
mul dh
mov bx,ax
;初始化列
mov ax,2
mul dl
mov di,ax
;将字符属性存入AH中
mov ah,cl
mov cx,16
;开始逐字符显示
s:
mov al,[si] ;源地址DS:SI指向数据段字符
cmp al,0 ;如果遇到0,则表示循环结束跳至ok处退出子程序
jz ok
mov es:[bx+di],ax ;目标地址ES:[BX+DI],AH=属性,AL=字符
inc si ;指向数据段下一个字符
add di,2 ;指向下一列
loop s ;如果CX≠0,继续循环
ok:
;恢复保护的寄存器
pop di
pop si
pop dx
pop cx
pop bx
;返回调用
ret
;-------------------------------------------------------------------------------------- |