开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1601|回复: 4
收起左侧

[其它] 进制数据输出的通用程序

[复制链接]

发表于 2013-2-3 11:37:13 | 显示全部楼层 |阅读模式   山东省聊城市
进制输出的原理很简单,就是先建一个‘0123456789ACDEF’的数据表
然后根据 除(2,10或者16 这要看你想以什么进制数据形式输出了) 取余,再拿商去除(2,10,16) 再取余的原理。  拿余数跟数据表比较,取得相应的ASCII码。
哎说不清楚,还是看程序吧。自认为程序写的还算清晰明了
assume cs:codes
codes  segment
  
start:
       mov ax,cs
       mov ds,ax
       mov ax,0b800h
      
       mov es,ax
      
       mov cl,2
       mov dl,011111111b
       call data_turn
       mov cx,ax
       mov di,160*10+40
moves: mov ah,[si]
        mov es:[di],ah
        inc si
        add di,2
        loop moves
       mov ah,04ch
       int 21h
      

;/**////////////////////////////////////////////////////////////////////////////////转换程序开始nc
;数制转换通用程序
;功能:将内存中的数据转换成以2进制 16进制 或 10进制 表示的 相应的ASCII码字符串
;进口参数CL  需要转换成的进制
;进口参数DL  被转换数
;出口参数AX  转换后的字符串的长度
;出口参数SI  转换后的字符串的起始偏移地址  段地址为CS

data_turn proc
            jmp turn_start
            table_t1 db '0123456789abcdef'
            table_t2 db 8 dup(?)  ;用来存储转换后的数据
turn_start: push ds
            push bx
            
            mov ax,cs
            mov ds,ax
            mov si,7   
            mov al,dl
            cmp al,0
            je dl_zero  ;如果被转换数为0 则直接将0写入table_t2+7处
        LP: xor bh,bh
            xor ah,ah
            DIV cl
            mov bl,ah
            mov bh,table_t1[bx]
            mov table_t2[si],bh
            dec si
            cmp al,0
            je turn_end
            jmp LP
            
            
dl_zero:  mov ds:[table_t2+7],'0'
           mov ax,1
           lea si,table_t2
           add si,7
           jmp over
turn_end:  mov ax,7
           sub ax,si
           lea si,table_t2
           add si,8
           sub si,ax
  
    over:  pop bx
           pop ds
           ret
data_turn  endp
;/**//////////////////////////////////////////////转换程序结束

codes ends
end start

结帖率:100% (6/6)
发表于 2013-2-3 13:11:08 | 显示全部楼层   广东省东莞市
宇智波·小岩 发表于 2013-2-3 11:38
- -  你看得懂么

谁能看懂了   易语言只是爱好  又不是专业
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)
发表于 2013-2-3 11:43:48 | 显示全部楼层   河北省衡水市
ljmst 发表于 2013-2-3 11:43
给看懂的人看

你们总是找各种理由
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-3 11:43:20 | 显示全部楼层   山东省聊城市
宇智波·小岩 发表于 2013-2-3 11:38
- -  你看得懂么

给看懂的人看{:soso_e112:}
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)
发表于 2013-2-3 11:38:09 | 显示全部楼层   河北省衡水市
- -  你看得懂么
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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