浮生只若初见 发表于 2020-4-21 22:09:28

实验10第一个子程序

show_str:   mov ch,0
                        mov ax,0b872h
                        mov bx,460h
                        mov di,04h
                        mov es,ax
                        mov dh,cl
                s:        mov cl,
                        jcxz ok
                        mov al,
                        mov es:,al
                        mov es:.1,dh
                        inc si
                        add di,2
                        loop s
                       
                ok: ret

sbx 发表于 2020-8-17 20:42:45

;问题
;显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供
;灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色
;子程序描述
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
;参数(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
;(cl)=颜色,ds:si指向字符串的首地址。
;返回:无
;应用举例:在屏幕的8行3列,用绿色显示data段中的字符串。

assume cs:code
data segment
db 'Welcome to masm!',0
data ends

code segment
start: mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str

mov ax,4c00h
int 21h

show_str:push cx
mov ax,0b800h
mov es,ax
mov al,dh
mov ah,160
mul ah
mov bx,ax
mov al,dl
mov ah,2
mul ah
add bx,ax
mov di,0

s0:mov cl,
mov ch,0
jcxz s
mov al,
pop cx
mov ah,cl
mov es:,ax

inc si
add di,2
push cx
jmp short s0

s:ret


code ends
end start
页: [1]
查看完整版本: 实验10第一个子程序