王爽 汇编语言 实验十 2、数值显示

assume cs:code

data segment
        db 10 dup(0)
data ends

code segment
start:
        
        mov ax,13666
        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:
        push dx
        push ds
        push si
        push cx 
        push ax 
        push di

        mov di,0
        mov bx,10
        mov si,0
pushnumber:                 ;将数据压入栈(否则显示顺序是反的)
        mov dx,0            ;dx每次都要赋值为0,否则导致除法不正确
        div bx
        add dl,030h
        push dx
        mov cx,ax
        inc si
        jcxz popnumber
        jmp short pushnumber
        
popnumber:    
        
        pop dx
        mov ds:[di],dl
        inc di
        dec si
        mov cx,si
        jcxz ok1
        jmp short popnumber
       
        
 ok1:
        pop di
        pop ax
        pop cx
        pop si
        pop ds
        pop dx
        
        ret
        
show_str: 
        push ax
        push bx
        push cx
        push dx
        push si
        push di
        push es
        
        mov bl,dl   ;乘法运算要用到dx
        mov ax,0b800h
        mov es,ax
        mov ax,0
        mov al,dh
        mov di,050h
        mul di
        add al,bl
        add ax,ax
        mov bx,ax   ;此时dx值肯定为0
        mov di,0
        mov ah,cl
     s: mov al,ds:[si]    ;给相应的显示缓存赋值,直到字符串出现0
        mov cx,0
        mov cl,al
        jcxz ok
        mov es:[bx+di],ax
        inc si
        add di,2
        jmp short s
        
    ok: pop es
        pop di
        pop si
        pop dx
        pop cx
        pop bx
        pop ax
        
        ret

code ends

end start

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值