xiaosawanjava 发表于 2014-5-19 20:42:38

将ax中的数据以10进制ascii码显示

assume cs:code,ds:data,ss:stack

data segment
        db 10 dup(0)
data ends

stack segment
        db 0
        dw 8 dup(0)
stack ends

code segment
start:
        mov ax,stack
        mov ss,ax
        mov sp,16
       
        mov ax,data
        mov ds,ax
        mov di,1
       
        mov ax,0A1C2hs
        call dtoc
       
        mov dh,10                ; 行数
        mov dl,50                ; 列数
        mov si,di
        call show_str
        mov ax,4c00h
        int 21h

        ; 将数据以10进制ascii码存放到di目标空间去
        dtoc:
                push cx
                push bx
                mov bx,10
                s:
                        mov cx,ax
                        jcxz jisu

                        mov dx,0
                        div bx
                        add dl,30h
                        mov ,dl
                       
                        inc di
                        jmp s
                       
                        jisu:
                        dec di
                        pop bx
                        pop cx
                        ret
                       
          ;名称:show_str
      ;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
      ;参数:(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79),(cl)=颜色,ds:si指向字符串的首地址
      ;返回无
      show_str:
                push cx
                push si
                push ax
                push di
                push es
               
                mov ax,0b800h
                mov es,ax
               
                                push dx
                                mov ah,0
                                mov al,dh
                                mov bx,160
                                mul bx
                               
                                pop dx
                                push ax
                               
                                mov ah,0
                                mov al,dl
                                mov bx,2
                                mul bx
                               
                                pop bx
                                add ax,bx
                               
                        
                mov di,ax
               
                ks:      
                        mov cl,
                        mov ch,0
      
                        jcxz jishu
                        
                        mov es:,cl
                        mov byte ptr es:,02h
                        
                        dec si                ; 下一个字符
                        add di,2      ; 下一个要显示的位置
                        
                        jmp short ks
               
                jishu:
                        pop es
                        pop di
                        pop ax
                        pop si
                        pop cx
                        ret
code ends
end start

页: [1]
查看完整版本: 将ax中的数据以10进制ascii码显示