|
主题 : : 一个关于进制的问题,急 [已解决] |
回复[ 9次 ]
点击[ 588次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-04-17 11:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2008-04-17 11:21 |
大家好,我是刚学王老师的汇编语言的学生,对与课本上例如43页习题3的进制有点晕,它说把mov ax,1 add ax,ax jmp 2000;0003 我按照这样做了,但是到ax=8时就有问题了,十六进制下8+8=10,如何将这个化为十进制,麻烦了 | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-04-17 21:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21 |
debug下的显示数据默认就是十六进制的。如果想转化成十进制的很简单啊
如1101H = 1*16^3+1*16^2+0*16^1+1*16^0 | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-04-18 02:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:0
注册日期:2008-04-17 02:17 |
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 160 = 5
第1位: F * 161 = 240
第2位: A * 162 = 2560
第3位: 2 * 163 = 8192 +
-------------------------------------
10997
直接计算就是:
5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:
1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100 | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-04-18 14:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2008-04-17 11:21 |
晕,我说的是如何让机器显示成10进制,也就是说让AX的数据以10进制显示,不是说我不会算那个转换规律,而是我说的是如何让机器识别,网上有人发表了一长串代码,我想问一下有没有简单的方法,比如说把debug设置一下等等,谢谢 | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-04-18 15:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:0
注册日期:2008-04-17 02:17 |
觉的如果打算学习汇编,就必须去掉你大脑的十进制概念,这样以后会很轻松,我也在努力改变中,个人看法! | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-04-18 16:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21 |
晕,我说的是如何让机器显示成10进制,也就是说让AX的数据以10进制显示,不是说我不会算那个转换规律,而是我说的是如何让机器识别,网上有人发表了一长串代码,我想问一下有没有简单的方法,比如说把debug设置一下等等,谢谢
------------------
回复:bebug下是不能设置显示10进制的。就是十六进制的。
如果想把一个数据作为10进制的显示出来,这个在《汇编语言》后面的讲解中会提到。但是,那是用程序自己实现的。如果你想debug下看着方便,顺眼,只有一个办法:习惯16进制。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-04-18 21:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:0
注册日期:2008-04-12 14:46 |
如果想用10进制的话,你可以用codeview调试程序,这个环境下能用10进制显示,Microsoft 的masm 自带的一个比较好的调试工具,你可以试一下,命令如下
>N 16
将数制改变为16进制
>N 10
将数制改变为10进制 | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-04-19 10:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2008-04-17 11:21 |
|
|
|
|
|
[第8楼]
[ 回复时间:2008-04-19 16:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-17 08:48 |
|
|
|
|
|
[第9楼]
[ 回复时间:2008-04-19 16:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2008-04-17 11:21 |
此贴由 贴主 于 [ 2008-04-19 16:53 ] 结贴。 结贴原因:问题已解决 | | |