|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
;(dh) = 行号 (dl) = 列号 (cl) = 颜色 ds:si指向字符串地址
;在屏幕的8行3列显示绿色的打data段中的数据
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov dh,8;
mov dl,3;
mov cl,2;
mov ax,data;
mov ds,ax;
mov si,0;
mov ax,stack;
mov ss,ax;
mov sp,16;
call show_str
mov ax,4c00h;
int 21h;
show_str:
;首先把该压栈保存的压栈保存 ,
push dx
push ax
push si
push cx
;计算出dh行dl列的数据缓冲地址
;计算行数所用的字节数
mov ax,160
mul dh
mov cx,ax;
;计算列数字节数
mov ax,2
mul dl
;计算要填充数据的缓冲区地址偏移
add ax,cx;
;填充缓冲区
mov si,0;
mov di,ax;
mov ax,0b800h;
mov es,ax;
mov ch,0;
pop ax;
s:
mov cl,ds:[si];
jcxz funcend;cx为0就填充颜色
mov es:[di],cl;
mov es:[di+1],al;颜色属性
add di,2
inc si;
jmp s;
;函数结束前把该出栈的全部出栈
funcend :
pop si
pop ax
pop dx
ret
code ends
end start
|
|