名称:show_str
功能:在指定位置,用指定的颜色,显示一个用0结束的字符串。
参数:(dh)=行号(取值范围024),(dl)=列号(取值范围079),(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 dx
push cx
mov ax,0b800h
mov es,ax
mov al,160
mul dh
mov bx,ax
mov al,2
mul dl
mov di,ax
mov ah,cl
mov ch,0
s: mov cl,[si]
jcxz ok
mov es:[bx+di],cl
mov es:[bx+di+1],ah
add di,2
inc si
jmp short s
ok: pop cx
pop dx
ret
code ends
end start
名称:divdw
功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型。
参数:(ax)= dword 型数据的低16位
(dx)= dword 型数据的高16位
(cx)= 除数
返回:(dx)= 结果的高16位,(ax)=结果的低16 位
(cx)= 余数
应用举例:计算1000000/10(F4240h/0AH)
mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
结果:(dx)= 0001h,
(ax) = 86a0h,
(cx) = 0
assume cs:code
code segment
start: mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw: mov bx,ax
mov ax,dx
mov dx,0
div cx
mov si,ax
mov ax,bx
div cx
mov cx,dx
mov dx,si
ret
code ends
end start
名称:dtoc
功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。
参数:(ax)= word型数据
ds:si指向字符串的首地址
返回:无
应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。在显示时我们调用本次实验中的第一个子程序 show_str。
assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:
mov si,8
mov dx,0
mov di,10
s: mov cx,ax
jcxz ok
div di
add dl,30h
mov [si],dl
mov dx,0
sub si,1
jmp short s
ok: inc si
ret
show_str: push dx
push cx
push si
mov ax,0b800h
mov es,ax
mov al,160
mul dh
mov bx,ax
mov al,2
mul dl
mov di,ax
mov ah,cl
mov ch,0
s1: mov cl,[si]
jcxz ok1
mov es:[bx+di],cl
mov es:[bx+di+1],ah
add di,2
inc si
jmp short s1
ok1: pop si
pop cx
pop dx
ret
code ends
end start