现在的位置: 首页 > 综合 > 正文

直接写显存 0b800h 显示 字符串

2013年12月07日 ⁄ 综合 ⁄ 共 977字 ⁄ 字号 评论关闭

;==========================================================================

;文件名:exp10a.asm

;目的:完成并测试在指定的位置,用指定的颜色,显示一个用0结束的字符串的子程序

;==========================================================================

assume cs:code,ds:data

data segment

str db '^_^Welcome to masm! fengge 嘀嘀嘀^_^',0

data ends

code segment

start:

mov ax,data

mov ds,ax

mov dh,12

mov dl,30

mov cl,10001010b

mov si,0

call show_str

mov ax,4c00h

int 21h

;==============================================================

;名称:show_str

;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串

;参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),

; (cl)=颜色,ds:si指向字符串的首地址

;返回:无

;==============================================================

show_str:

push dx

push si

push di

push cx

push ax

        mov ax,0b800h

        mov es,ax

mov ax,160

mul dh

        mov dh,0

        add ax,dx

        add ax,dx

sub ax,2

mov di,ax

        mov ah,cl

output:

        mov ch,ds:[si]

        mov cl,0

jcxz ok

        mov byte ptr es:[di],ch

        mov byte ptr es:[di+1],ah

   inc si
  
   inc di
  
   inc di

        jmp short output

ok:

pop ax

pop cx

pop di

pop si

pop dx

ret

code ends

end start

抱歉!评论已关闭.