|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:codesg
datasg segment
db 16 dup(0)
db 'Hello',0
datasg ends
stacksg segment
db 32 dup(0)
stacksg ends
codesg segment
start:
;用户给出参数:行、列、颜色
mov dh,4
mov dl,3
mov cl,01000011B
;设置栈段
mov ax,stacksg
mov ss,ax
mov sp,32
;设置数据段
mov ax,datasg
mov ds,ax
call showstr
mov ax,4c00H
int 21H
showstr:
;说明:将字母转换为大写,字符串遇到0结束
;参数:
;结果:
;子程序中要用到的寄存器入栈
push ax
push bx
push cx
push si
push di
;参数放入内存,解放寄存器给子程序使用
mov ds:[0],dh
mov ds:[1],dl
mov ds:[2],cl
;指定显存位置,并初始化参数
mov ax,0b800H
mov es,ax
add byte ptr ds:[0],2 ;0.1行不显示
;清空屏幕中用户给定的行
mov al,byte ptr ds:[0]
mov ah,0a0H
mul ah
mov bx,ax
mov si,0
mov cx,160
z1: mov byte ptr es:[bx+si],0
inc si
loop z1
mov si,0
mov di,0
mov cx,0
z2: mov cl,ds:[16+si]
jcxz z0 ;判断字符串结束标志0
mov byte ptr es:[bx+di],cl
mov cl,ds:[2]
mov byte ptr es:[bx+di+1],cl ;设置用户给定的颜色
inc si
add di,2
jmp z2
z0: pop di
pop si
pop cx
pop bx
pop ax
ret
codesg ends
end start |
|