| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1323 人关注过本帖
标题:[讨论]还是这个问题:二进制转化为八进制
只看楼主 加入收藏
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
收藏
 问题点数:0 回复次数:2 
[讨论]还是这个问题:二进制转化为八进制
看过story 的程序觉得不行,看过各位的解释还是不明白.
还请各位帮帮忙,再写写.
谢谢!!!!!!!!!!
搜索更多相关主题的帖子: 八进制 二进制 讨论 
2006-12-29 19:04
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 

我不知道你要的是字节转换还是字转换,来个字转换的吧:
这里已经定义好了一个数,当然还可以通过输入
DSEG SEGMENT
NUM DW 123
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV CX,0503H ;应该都知道通过8421码换算二--十六进制,转换八进制,是取3位为一换成一位八进制数
而寄存器普遍不是3的整数位长,而取3位都必须从低位开始取,如果我们是先取低位的话
虽然容易,但会出现倒序输出,所以在这里先进行了高位,去除最高位1位后,剩下的就可
正常取啦
MOV AH,2
MOV BX,NUM
ROL BX,1 ;先取第1位,具体看最后说明
MOV DX,BX
AND DX,1 ;只有一位,所以其余高位清零
OR DL,30H ;转ASCII码
INT 21H
NEXT: ROL BX,CL ;开始正常取3位数转换
MOV DX,BX
AND DX,7 ;因为只最低3位有效,所以和7进行逻辑与,清零其余高位
OR DX,30H
INT 21H
DEC CH
CMP CH,0 ;统计取3位的次数
JNZ NEXT
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN

例中的123形式为 1111011,在寄存器中的存放为 0000000001111011,如果每次取3位该从最低位开始,分成这样
0 000 000 001 111 011,最高位只能取1位,所以为了正常输出,从最高位取,必然先移位的是次数为1,其余便可正常
移位


我是金子,我要闪光的
2006-12-30 20:12
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
收藏
得分:0 
我明白了

2006-12-31 19:07
快速回复:[讨论]还是这个问题:二进制转化为八进制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015278 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved