. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  一个关于进制的问题,急  [已解决] 回复[ 9次 ]   点击[ 588次 ]  
xiaofeng176
[帖 主]   [ 发表时间: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,如何将这个化为十进制,麻烦了
wdm
[第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
yzh127
[第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
xiaofeng176
[第3楼]   [ 回复时间:2008-04-18 14:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2008-04-17 11:21
晕,我说的是如何让机器显示成10进制,也就是说让AX的数据以10进制显示,不是说我不会算那个转换规律,而是我说的是如何让机器识别,网上有人发表了一长串代码,我想问一下有没有简单的方法,比如说把debug设置一下等等,谢谢
yzh127
[第4楼]   [ 回复时间:2008-04-18 15:18 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:0
注册日期:2008-04-17 02:17
觉的如果打算学习汇编,就必须去掉你大脑的十进制概念,这样以后会很轻松,我也在努力改变中,个人看法!
wdm
[第5楼]   [ 回复时间:2008-04-18 16:39 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
晕,我说的是如何让机器显示成10进制,也就是说让AX的数据以10进制显示,不是说我不会算那个转换规律,而是我说的是如何让机器识别,网上有人发表了一长串代码,我想问一下有没有简单的方法,比如说把debug设置一下等等,谢谢
------------------
回复:bebug下是不能设置显示10进制的。就是十六进制的。
如果想把一个数据作为10进制的显示出来,这个在《汇编语言》后面的讲解中会提到。但是,那是用程序自己实现的。如果你想debug下看着方便,顺眼,只有一个办法:习惯16进制。
limitasm
[第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进制
xiaofeng176
[第7楼]   [ 回复时间:2008-04-19 10:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2008-04-17 11:21
thank you
zmlyjr
[第8楼]   [ 回复时间:2008-04-19 16:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-17 08:48
支持楼上意见.
xiaofeng176
[第9楼]   [ 回复时间:2008-04-19 16:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2008-04-17 11:21
此贴由 贴主 于 [ 2008-04-19 16:53 ] 结贴。 结贴原因:问题已解决
得分情况: 5楼(wdm):2分   6楼(limitasm):9分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved