首页 > 编程 > ASM > 正文

汇编语言在屏幕指定位置输出字符串

2019-11-10 20:19:03
字体:
来源:转载
供稿:网友

代码及解释如下:

;在屏幕的指令位置(8行8列处以指定颜色输出 data段中的字符串),可记录到Blogassume cs:codedata segment	db 'welcome to masm',0				;data段定义好要输出的字符串,以'0'作为结束标志data endsstack segment	db 128 dup(0)code segmentstart:			mov ax,data				mov ds,ax				mov ax,stack				mov ss,ax				mov sp,128				call init_data				;初始化数据				call show_str				;显示的方法				mov ax,4c00h				int 21h;============================================================init_data:		mov ax,0B800h				mov es,ax				mov dh,8		;指定行号				mov dl,8		;指定列号				mov cl,00000011B;指定颜色				mov si,0				mov di,0				ret;============================================================show_str:		call clear_screen			;清屏				call getRow					;获取指定行号的字节偏移数				call getCol					;获取指定列号				call show_String			;真正的显示字符串方法				ret;============================================================clear_screen:	push cx				push dx				push es				push bx				mov cx,2000     ;一页有2000字符,每个字符2个字节				mov dx,0700h	;将屏幕上的双字用0700h代替				mov bx,0clearScreen:	mov es:[bx],dx				add bx,2				loop clearScreen								pop bx				pop es				pop dx				pop cx				ret;============================================================show_String:	push cx     ;保存下面将要用到的寄存器				push ds				push es				push dx				push si				push di								mov dh,cl		;高位存颜色				mov cx,0showString:		mov cl,ds:[si]				jcxz showStringRet				mov dl,ds:[si]	;低位存字符				mov es:[di],dx				add di,2				inc si				jmp showString				showStringRet:	pop di		;还原寄存器				pop si				pop dx				pop es				pop ds				pop cx				ret				;============================================================getRow:			mov al,dh				mov bl,160   ;一行80字符,160字节				mul bl				mov di,ax				ret;============================================================getCol:			mov al,dl				mov bl,2				mul bl				add di,ax				ret;============================================================					code endsend start


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选