;实现把一段内存中的一串确定长度的代码打印出来,用02;
;注意行列号,万一debug看到变化
;cls清屏
assume cs:code
data segment
db 'welcome to masm!',0
data ends
code segment
;将data地址放入ds
start:
mov ax,data
mov ds,ax
;用es存放目标显存的地址
mov ax,0b800h
mov es,ax
;用cx循环将写入7个字母(开始可以尝试先实现直接输出一段)
mov di,0
mov dh,8 ;行号
mov dl,3 ;列数
call show_str
mov ax,4c00h
int 21h
show_str:
;mov bl,2
;si控制es,di控制ds
;es:bx指向显存首地址,160*dh+dl*2
;把颜色c1赋值给al
;计算es的地址
; ;
mov ax,160 ;
mul dh ;
mov bx,ax ;bx=ax*160 ;
mov al,2 ;
mul dl ;
add ax,bx ;
mov bx,ax ;
;
s:
mov cl,[di];低位存字符,高位存属性
mov ch,0 ;将cx高八位置为0
jcxz ok
mov es:[bx],cl
mov ch,0c2h
mov es:[bx+1],ch
inc di
add bx,2
loop s
ok: ret
code ends
end start
王爽《汇编语言》实验10:编写子程序show_str
最新推荐文章于 2024-07-08 17:33:51 发布