编程,将data段中的数据以二进制的形式显示出来。
子程序描述
名称: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 ;将ax的每一位转化为字符串 mov dh, 8 mov dl, 3 mov cl, 2 call show_str ;显示data段的字符串 mov ax, 4c00h int 21h dtoc: push dx push bx push cx push si mov dx, 0 ;做除法的高16位 mov bx, 10 s4: div bx mov cx, ax jcxz s5 ;余数为0时函数退出返回 add dx, 30h ;将余数转换为对应的ASCII值 mov ds:[si], dl ;除以10的余数存在dl中 inc si mov dx, 0 ;上一次的商作为被除数 mov cl, 1 ;保证余数为0时才退出,让cl不为0 loop s4 s5: mov ds:[si], dl ;字符串以0为结尾符 mov si, 0 pop si pop cx pop bx pop dx ret show_str: push es push ax push bp push di push si mov ax, 0b800h mov es, ax mov al, cl mov bp, 0 mov ch, 0 mov cl, dh s0: add bp, 160 loop s0 ;循环计算行偏移量 mov di, 0 mov ch, 0 mov cl, dl s1: add di,2 loop s1 ;循环计算列偏移量 s2: mov cl,ds:[si] jcxz s3 mov es:[bp + di],cl ;字符 inc di mov es:[bp +di], al ;颜色 inc di inc si loop s2 s3: pop si pop di pop bp pop ax pop es ret code ends end start