实验十
assume cs:code,ds:datadata segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8 ;行号
mov dl,3 ;列号
mov cl,2 ;颜色
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
mov ax,0b800h
mov es,ax
mov al,160
sub dh,1
mul dh ;结果在AX中
mov bx,ax
sub dl,1
mov al,dl
mov ah,0
add bx,ax ;得到显存的 起始位置....
mov dl,cl
mov si,bx ;si是显存的偏移地址...
mov di,0;di数据库的偏移地址
ks: mov ax,ds:
mov es:,ax
mov es:,dl
mov bl,ds:
mov ch,0
mov bh,0
mov cx,bx
jcxz ok
inc di
add si,2
jmp short ks
ok: ret
code ends
end start
写出来了,,,开心{:5_95:}....没用 push pop 不知道会不会出问题, 改行号和列号,颜色值都没问题....
assume cs:code,ds:data
data segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8 ;行号
mov dl,3 ;列号
mov cl,2 ;颜色
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
;<<<<<<<<<<<<<<<<<<<<<<<<<<
;名称:show_str
;
;功能:指定位置,指定颜色,显示用0结束的字符串
;
;参数: (dh)=行号,(dl)=列号
; (cl)=颜色,ds:si指向字符串首地址
;
show_str:
mov ax,0b800h
mov es,ax
mov al,160
sub dh,1
mul dh ;结果在AX中
mov di,ax
sub dl,1
add dl,dl
sub dh,dh
add di,dx
;显存行列地址
mov ah,cl
;方便将字符属性和字符同时送至显存
sub cx,cx
;检测字符用
ks:
mov al,ds:
mov es:,ax
mov cl,al
jcxz ok
inc di
add si,2
jmp short ks
ok: ret
code ends
end start
这是我对你的程序进行改造的样子,你看如何? mov ah,cl
;方便将字符属性和字符同时送至显存
sub cx,cx
;检测字符用
这思路很不错呢...谢谢分享...不过你这个debug了 结果出错了....
额...上传不了图片....{:5_96:}
『香`草の゛芭芙 发表于 2012-7-16 11:31
mov ah,cl
;方便将字符属性和字符同时送至显存
额额呃呃。。。。什么错误。。。论述下。
页:
[1]