鱼C论坛

 找回密码
 立即注册
查看: 2162|回复: 0

[汇编作业] 将ax中的数据以10进制ascii码显示

[复制链接]
发表于 2014-5-19 20:42:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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 [di],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,[si]
                        mov ch,0
        
                        jcxz jishu
                        
                        mov es:[di],cl
                        mov byte ptr es:[di+1],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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 00:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表