汇编语言 实验10.3 数值显示

汇编语言 实验10.3 数值显示

写给自己的一些题外话:这个题目做了两天。这几天状态一直不太好,书都看不进去,题也看不进去。。

子程序描述

名称: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
    mov si,0
    call show_str

    mov ax,4c00h
    int 21h

dtoc:   
    mov cx,ax
    jcxz reverse
    mov bx,10
    div bx
    mov cx,dx
    add cx,30h
    push cx
    mov dx,0;使下一次循环的ax的值为上一次结果的商
    add si,2
    loop dtoc
reverse:
    mov ax,si
    mov bx,2
    div bx
    mov cx,ax;ax是循环次数,即显示数字的位数
    jcxz good
    mov si,0
reverse1:
    pop ax
    mov ds:[si],ax
    add si,2
    loop reverse1
good:   ret

show_str:
    push dx
    push cx
    mov ax,0b800h
    mov es,ax
    mov al,160;注意!!
    sub dh,1
    mul dh
    mov bx,ax
    mov al,2
    mul dl
    add bx,ax;bx存放的是显存地址
    mov dh,cl
s:  mov ch,0
    mov cl,ds:[si]
    jcxz ok
    mov dl,cl
    mov es:[bx],dx
    add si,2
    add bx,2
    jmp short s
ok: pop cx
    pop dx
    ret

code ends
end start
原文地址:https://www.cnblogs.com/litlife/p/7512773.html