lab10
10.1
assume cs:codedata segmentdb 'Welcome to masm!',0data endscode segmentstart: call init_reg ;初始化寄存器call get_place ;获得目标位置call show_string ;显示字符串mov ax,4c00hint 21h;====================================================init_reg: mov bx,0b800hmov es,bx ;es指向显存段mov bx,data mov ds,bx ;ds指向数据段mov dh,8mov dl,3mov cl,2 ;设置位置和颜色mov di,0 ;di寄存器确定显示位置, 通过es:[di]的方式表示显示的位置mov si,0 ;si寄存器确定每个字的位置,通过ds:[si]的表示字符串的每个字mov bh,cl ret ;====================================================get_place: mov al,160mul dh ;8位乘法的规则mov di,ax mov al,2mul dladd di,axret;====================================================show_string:mov cx,0mov cl,ds:[si]jcxz showStringRet ;时刻关心每个数据的大小,从而确定合理的寄存器mov bl,ds:[si] ;bl是偶数位,存字符mov es:[di],bx add di,2 ;di指向下一个显存inc si ;si指向下一个字符jmp show_stringshowStringRet:ret code endsend start
