首页 > 其他 > 详细

将内存中的数字转换成字符串并保存于内存中,随后将转换好的字符串输出到屏幕上(汇编)

时间:2020-11-03 23:25:32      阅读:73      评论:0      收藏:0      [点我收藏+]
;object: change number to string and put teh string to the screen
;writer: mike
;time: 2020.11.02


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


data segment
        dw 1234

data ends

data1 segment
        db 0000000000,0
data1 ends

stack segment stack
        db 30 dup(0)


stack ends

code segment
        ;数据从哪里来        
start:        mov ax,data
        mov ds,ax
        mov si,0
        ;数据到那里去    
        mov ax,data1
        mov es,ax
        mov di,10    ;从最后一位开始输入
        
        mov ax,ds:[si]   ;将内容放到寄存器,用于除法
        mov dx,0

        call shortDiv  ;调用函数


        mov bx,data1    ;将内存中的字符串显示在屏幕上
        mov ds,bx       ;数据从哪里来
        mov si,di       ;其实di是1

        mov bx,0B800H    ;数据到那里去,显示在屏幕上
        mov es,bx
        mov di,160*10
        add di,40*2

        call showString
        
        mov ax,4c00H
        int 21H

;===================================
shortDiv:      mov cx,10
        div cx        ;结果放在ax中
        add dl,30H     ;将余数数字,变成数字字符串,这里用的是16位除法,这里cx是16位
        sub di,1       ;修改栈顶标记    
        mov es:[di],dl   ;将结果放进内存
            
        mov cx,ax          ;jcxz比较的是cx
        jcxz shortDivRet  ;比较商是不是得零


        mov dx,0          ;如果商不是零,也就是没有除到最后,重新将余数存储器归为0
        jmp shortDiv      ;重新循环程序,这里ax默认已经放上了除法之后的商。

shortDivRet:      ret    
        
;=======================================    

showString:    push cx
        push ds
        push si
        push es
        push di               ;将寄存器入栈
        
        mov cx,0               ;初始化cx    
        
showString1:    mov cl,ds:[si]         ;检查是否到字符串的最后
        jcxz showStringRet     
        mov es:[di+0],cl         ;将内存中的字符串送到屏幕上
        mov byte ptr es:[di+1],00000010B   ;给字符串加上颜色
        add di,2             ;不明白为什么是加2? 
        inc si
        jmp showString1

showStringRet:  pop di
        pop es
        pop si
        pop ds
        pop cx

        ret

code ends
end start
end

 

技术分享图片

 

将内存中的数字转换成字符串并保存于内存中,随后将转换好的字符串输出到屏幕上(汇编)

原文:https://www.cnblogs.com/zijidefengge/p/13923088.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!