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,07h ;白色字
mov ax,data
mov ds,ax
mov si,0 ;循环加入字
call show_str
mov ax,4c00h
int 21h
show_str:
push cx ;保存用到的寄存器
push si
push es
push di
push bx
mov ax,0b800h
mov es,ax
mov al,0a0h ;一行的总列数160字节
dec dh ;行号减1,因为是从0开始的
mul dh ;计算行开始偏移地址
mov bx,ax
mov al,2
mul dl ;计算列
sub ax,2 ;列也是从0开始,而且一个字符占两个字节
add bx,ax ;求出开始位置
mov di,0
mov al,cl
mov ch,0 ;高8位为0
s:
mov cl,ds:[si] ;判断是否到了字符结束
jcxz ok
mov es:[bx+di],cl
mov es:[bx+di+1],al
inc si
add di,2
jmp short s
ok:
pop bx
pop di
pop es
pop si
pop cx
ret
code ends
end start
王爽《汇编语言》实验10:编写子程序show_str 解答
最新推荐文章于 2022-10-26 15:19:18 发布