. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  段的起始地址要为16的倍数,我可不可以这样理解  [待解决] 回复[ 69次 ]   点击[ 6833次 ]  
styleskyb
[帖 主]   [ 发表时间:2007-08-22 15:04 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:3
注册日期:2007-08-21 01:10
比如说1000x16  意思是在10000  在1000的后面加个零了
fishboy
[第1楼]   [ 回复时间:2007-08-22 17:21 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
表面上是这样的!其实你的这种理解写成 1000H X 10H,这样的表示才对,也更符合你的这个思维逻辑。但是1000 x 16 好像就不太好了,左右进制不统一。
其实,就像2进制左移一位与X2等价一样,16进制的x10h(即16)其实也可以看成16进制的左移一位,不过,此处所说的一位相当于2进制中的4位了。
我觉得关键是理解,表面的形式只是个给人的直观感觉。
styleskyb
[第2楼]   [ 回复时间:2007-08-22 21:29 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:3
注册日期:2007-08-21 01:10
恩   谢谢  

可能是我那个地方还有些没看懂吧 


谢谢你
styleskyb
[第3楼]   [ 回复时间:2007-08-22 21:41 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:3
注册日期:2007-08-21 01:10
cxn   

基础知识 你可以找几个例子试试 比如 101B 中每一位和各位的左边位的位权有什么关系?在二进制中该位的左边一位的位权都是该位的2倍 位权的值是这样的该位为1其它位为0时该数的值。 
比如100101B各位的位权从左到右为2^5=32,2^4=16,2^3=8,2^2=4,2^1=2,2^0=1 
又比如3DF8H各位的位权从左到右为16^3=4096,16^2=256,16^1=16,16^0=1 

建议重新学习下进制的转换 
 
 
jiyunyan  
 
其实这很简单! 
生活中是以10进位的!例如!150 你左移一位就是1500!相当于 150*10 
机器数是以2进位的!左移当然*2咯 
 
 
看了他们两个人的帖子我就明白了  谢谢    呵呵
flysnow163
[第4楼]   [ 回复时间:2007-10-20 23:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2007-10-19 21:34
各位朋友,真热心,这个问题我直到今天才明白1000*16是怎么算出结果来的,原来是进制不同,谢谢!
smbird
[第5楼]   [ 回复时间:2007-10-30 11:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-30 10:46
你想啊~10进制的数乘10
比如123x10 不就是1230么
那么你说的1000Hx16 也就是这个1000H是个16进制数,再成一个16就是在后面加了个0,在机器里所有的数据都是2进制存放的,那么就相当于2进制数左移了两位
shanguianti
[第6楼]   [ 回复时间:2007-10-31 16:46 ]   [引用]   [回复]   [ top ] 
荣誉值:19
信誉值:0
注册日期:2007-10-31 16:24
段地址为16的倍数实际上就是说段地址的末尾必须是0。
suzukilt
[第7楼]   [ 回复时间:2007-11-10 23:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-29 22:20
因为段地址是 20位二进制地址 的高 16位
jedcai
[第8楼]   [ 回复时间:2007-11-20 22:25 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:5
注册日期:2007-11-03 11:40
10(一零)在十六进制中相当于十进制的16,所以段地址是十六的倍数,即xxx0.
这个网站氛围很好
faseter
[第9楼]   [ 回复时间:2008-01-10 12:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-01-10 12:11
段的起始地址要为16的倍数,我可不可以这样理解  
------
看楼主的理解没什么问题,但这个说法肯定是错的。

根据公式:物理地址=段地址*10h+偏移地址
这里的段地址可以为0~ffffh的任意值。
taotling
[第10楼]   [ 回复时间:2008-02-10 17:45 ]   [引用]   [回复]   [ top ] 
荣誉值:53
信誉值:0
注册日期:2008-02-09 02:55
嗯,
要分清楚段地址与段的起始地址或基础地址的区别。
wzwmm2006
[第11楼]   [ 回复时间:2008-02-11 20:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-11 20:20
其实就是一个进制问题
negatlov
[第12楼]   [ 回复时间:2008-02-25 02:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-24 19:41
就是这样嘛。小学学10进制。。乘10就是加个0这是16进制当然是乘以16就加个0喽!!!
1301751
[第13楼]   [ 回复时间:2008-04-15 10:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-13 13:14
当初我也迷茫了好长时间,搞不懂,就记着移一位就加个0,怎么说的是二进制左移就相当与*2,怎么10进制做移相当乘10,16进制相当于*16。

我算啊算的,比如2000H,左移一位,按照定义,应该*16,我乘啊乘的,怎么也不对。 后来一想,我靠,人家是16进制,你把16进制非要去乘10进制的16,能对吗? 应该把16转换成16进制就是10H拉。这样在乘就没错了。郁闷。
duckgaga
[第14楼]   [ 回复时间:2008-04-16 03:04 ]   [引用]   [回复]   [ top ] 
荣誉值:44
信誉值:0
注册日期:2008-04-11 13:33
学习了……
ymzyf2007
[第15楼]   [ 回复时间:2008-04-19 18:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-16 15:28
以后要多注意这些进制问题,呵呵
oldmtn
[第16楼]   [ 回复时间:2008-07-27 12:22 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:3
注册日期:2008-07-14 19:30
十进制的16不就是16进制的10嘛
所以一个十六进制是16(注意:该16是10进制)倍数,其实就10H的倍数,,
个人见解!!!
zhtao315
[第17楼]   [ 回复时间:2008-07-28 11:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-25 10:35
小弟 建立了汇编语言交流群,希望大家有什么问题可以在线交流.不知道这算不算违反了论坛的规定,如果是 就请删除吧,想一起交流的加:67024984
bsney4652817
[第18楼]   [ 回复时间:2008-08-11 16:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-29 18:00
回复:[贴 主]
------------------
受教了!!!
bsney4652817
[第19楼]   [ 回复时间:2008-08-11 16:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-29 18:00
原来我也不太明白   今天看完你们的我终于明白了
kawaguchi
[第20楼]   [ 回复时间:2008-08-21 18:48 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2007-08-20 03:11
二进制*2
八进制*8
十进制*10
十六进制*16

道理都是一样的,就是左移一位,后面补零
ktlwj
[第21楼]   [ 回复时间:2008-08-27 06:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-20 17:22
学习了!~ 很受用~!
wjqaone
[第22楼]   [ 回复时间:2008-09-02 17:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-18 10:34
到现在我才弄懂是怎么回事.
ai_cr
[第23楼]   [ 回复时间:2008-09-09 16:04 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:2
注册日期:2008-09-04 17:29
二进制*2
八进制*8
十进制*10
十六进制*16

道理都是一样的,就是左移一位,后面补零
------------------
回复:错,全*16.
20-16=4;20根总线
2^4=16;2的4次方。
e56004474
[第24楼]   [ 回复时间:2008-09-10 16:58 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35
p20,由段地址X16引发的讨论。
kang833
[第25楼]   [ 回复时间:2008-09-12 15:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-12 15:07
呵呵,我终于找到组织。
erwinlee
[第26楼]   [ 回复时间:2008-09-16 16:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-16 16:23
哈哈~~~
原来如此,*16就是向左移一位啊!!!
ohoh256
[第27楼]   [ 回复时间:2008-10-04 05:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-03-30 04:18
还是不大明白~
zhaozhao
[第28楼]   [ 回复时间:2008-11-22 20:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-16 22:43
是左移四位不是一位。你搞错了。
jungool
[第29楼]   [ 回复时间:2008-12-07 23:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-22 13:39
呵呵,气氛很好哦
  一起学习学习
cnhnyu
[第30楼]   [ 回复时间:2008-12-29 23:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-22 14:47
左移多少位要看进制的
说段地址左移1位的是16进制表示的
说段地址左移16位的是16进制表示的
cnhnyu
[第31楼]   [ 回复时间:2008-12-29 23:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-22 14:47
上面打错了,更正一下:
说段地址左移1位的是16进制表示的
说段地址左移16位的是2进制表示的
yky
[第32楼]   [ 回复时间:2009-01-01 08:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-21 21:41
我的看法是“段地址*16”是以平常的十进制思维来描述的,在具体操作时,段地址是十六进制的,偏移地址也应是十六进制的,如:1005H*10H ,而不应是:1005H*16.
super.w
[第33楼]   [ 回复时间:2009-02-12 16:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-02-12 14:29
理解就好理解就好,多思考会体会更深,我想这也是王老师之意吧
doit
[第34楼]   [ 回复时间:2009-02-13 17:08 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:6
注册日期:2009-02-09 10:54
当初我也迷茫了好长时间,搞不懂,就记着移一位就加个0,怎么说的是二进制左移就相当与*2,怎么10进制做移相当乘10,16进制相当于*16。

我算啊算的,比如2000H,左移一位,按照定义,应该*16,我乘啊乘的,怎么也不对。 后来一想,我靠,人家是16进制,你把16进制非要去乘10进制的16,能对吗? 应该把16转换成16进制就是10H拉。这样在乘就没错了。郁闷。
------------------
回复:
呵呵,你描述的还真生动。。。
我理解的整个过程就是你说的那样的
lbl123
[第35楼]   [ 回复时间:2009-03-11 11:06 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-09 22:52
段地址为16的倍数实际上就是说段地址的末尾必须是0。
------------------
回复:把这句话理解就好了!
linux_xfce
[第36楼]   [ 回复时间:2009-03-17 13:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-17 13:02
为了这个问题 找到了这个论坛 不错~~~~~~~:)
mainred
[第37楼]   [ 回复时间:2009-03-19 16:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-19 16:05
我也是刚起步,来到这个网站,当初也被这个问题迷住,现在解决了。
fhefh
[第38楼]   [ 回复时间:2009-06-04 12:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-06-01 18:22
二进制*2
八进制*8
十进制*10
十六进制*16

其中2,8,10,16都是十进制的 要将十进制转换为相应的进制才行  我被迷惑很久了 ⊙﹏⊙b汗
kissbill
[第39楼]   [ 回复时间:2009-06-09 03:06 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-06-06 16:46
我就纳闷了.书上为什么整个16进制的地址和十进制16相乘.  还不如直接统一成,十六进制:段地址*10H.
w842030333
[第40楼]   [ 回复时间:2009-07-25 21:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-23 20:48
书上2.8绝对有问题 主要是没说清楚 这让初学者怎么学啊 一个多的最大长度是64KB 意思不就是 以16位进制的段地址的首位来分段 即1000和2000 这之间的就是64KB 不过 他说那么麻烦干嘛? 还有 这有什么意义阿
w842030333
[第41楼]   [ 回复时间:2009-07-25 21:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-23 20:48
如果是1000和3000 中间就有128KB 问题来了 偏移地址只能寻址64KB 于是乎 2000和3000就无法寻址了 所以 书里还是很罗嗦的
w842030333
[第42楼]   [ 回复时间:2009-07-25 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-23 20:48
2.12又错了 123B0H到123BAH 长度应该是11字节吧!!!!!!!!!
tanyouf
[第43楼]   [ 回复时间:2009-10-27 15:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-09-01 14:59
这个问题晕了我好多天,看到这终于明白了
release_lag
[第44楼]   [ 回复时间:2009-11-04 15:43 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:0
注册日期:2009-10-27 16:12
刚开始的时候,我也没看懂,后来自己用计算器算了一下,才懂了,十进制X16,其实数值上看,就相当于十六进制X10
kawaguchi
[第45楼]   [ 回复时间:2009-12-20 19:05 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2007-08-20 03:11
二进制*2
八进制*8
十进制*10
十六进制*16

道理都是一样的,就是左移一位,后面补零
------------------
回复:错,全*16.
20-16=4;20根总线
2^4=16;2的4次方。
------------------
回复:呵呵,其实我没有说清楚,我以为大家都挺明白的~
实际上我列出的仅仅是以十进制数为基础,从纯数学运算的角度考虑,等效于:
二进制*10B
八进制*10Q
十进制*10D
十六进制*10H
对于不同进制数而言,都是左移1位。右边补一个0,哈哈
hdlyoyo
[第46楼]   [ 回复时间:2010-01-14 12:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-08 13:00
感谢,终于明白了!
huangshan
[第47楼]   [ 回复时间:2010-02-02 10:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-30 10:11
干嘛那么费劲呢,我是这样理解的,1000H是个16进制的数,而16是个10进制的数,所以,无论是左右转换统一进制,结果都是 10000H
qa6791558
[第48楼]   [ 回复时间:2010-05-26 14:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-12-29 03:03
受教了。。。
yaglive
[第49楼]   [ 回复时间:2010-07-18 00:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-16 07:48
太受用了,幸好发现了这个站
xshz
[第50楼]   [ 回复时间:2010-09-08 19:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-24 22:41
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1003&qkSg=2&qID=50255&readSg=1
这几位学长的分析简单、易懂。佩服。
udbduty
[第51楼]   [ 回复时间:2010-11-09 14:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-06 01:57
问下。。。怎么发贴啊。。还有,那个寄存器那里,20000的数据,高8位是78,低8位是32。。。这个怎么和20000相等。。我不懂了。。还有后面的一个习题,是要写汇编指令的。。在哪写?。。我知道是mov ax,2。。然后就一直add ax,ax。。。就是不知道在哪写。。
hhxylijiajia
[第52楼]   [ 回复时间:2011-02-01 10:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-02-01 10:19
我们一般用十六进制来表示段地址,段地址必须是十六的倍数,那么段地址可以这样理解:凡是段地址其最后一位必须是0.
hhxylijiajia
[第53楼]   [ 回复时间:2011-02-01 11:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-02-01 10:19
刚刚所说是段首址最后一位必须为零
leizhengpeng
[第54楼]   [ 回复时间:2011-02-11 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-02 04:30
原来我也不太明白   今天看完你们的我终于明白了
------------------
回复:同感啊。。。
moonrose
[第55楼]   [ 回复时间:2011-09-15 21:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-13 08:27
二进制*2
八进制*8
十进制*10
十六进制*16

其中2,8,10,16都是十进制的 要将十进制转换为相应的进制才行  我被迷惑很久了 ⊙﹏⊙b汗
------------------
回复:看到这里才算理解。我用XP自带的计算器也是用1000*16=16000把我都搞懵了。。。原来乘以16(10进制的)其实就是乘以10(16进制的)
laowang
[第56楼]   [ 回复时间:2012-05-10 23:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-09 18:59
首先说,个人认为自己头脑不算灵光,但是我为什么提不出这样的问题呢?我好像根本就没想过这一点,就理解过去了。不过我有一点不明白:每个段的起始地址必须为16的整数倍,所以一个段最小为16B。为什么一个段最小为16B啊?前半句话,每个段的起始地址必须为16的整数倍,能作为后半句话,一个段最小为16B。的原因吗?不理解。物理地址,应该是指具体某一内存单元的物理地址吧?
sz_hgc
[第57楼]   [ 回复时间:2012-07-26 11:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-21 21:21
当初我也迷茫了好长时间,搞不懂,就记着移一位就加个0,怎么说的是二进制左移就相当与*2,怎么10进制做移相当乘10,16进制相当于*16。

我算啊算的,比如2000H,左移一位,按照定义,应该*16,我乘啊乘的,怎么也不对。 后来一想,我靠,人家是16进制,你把16进制非要去乘10进制的16,能对吗? 应该把16转换成16进制就是10H拉。这样在乘就没错了。郁闷。
------------------
回复:

哈哈,我开始也是这样乘啊乘怎么乘都不对.....郁闷
flower12355
[第58楼]   [ 回复时间:2012-11-14 23:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-11-14 22:39
当初我也迷茫了好长时间,搞不懂,就记着移一位就加个0,怎么说的是二进制左移就相当与*2,怎么10进制做移相当乘10,16进制相当于*16。

我算啊算的,比如2000H,左移一位,按照定义,应该*16,我乘啊乘的,怎么也不对。 后来一想,我靠,人家是16进制,你把16进制非要去乘10进制的16,能对吗? 应该把16转换成16进制就是10H拉。这样在乘就没错了。郁闷。
------------------
回复:还是这个论坛好啊,我也是自学的,很迷茫书上的*16,找了很多网站,百度了好久,逛到这里,终于解开了我的谜团,自学就是苦啊,书都看到第4章了,总是想不通一些问题。上面的一句话点醒了我,以后要常来才行
doing1984
[第59楼]   [ 回复时间:2013-04-18 11:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-08-21 09:46
是的,书上写的进制有点混乱的,一定要把进制弄清楚,才能明白书上写的意思

其实就是一个16进制数*16=进了一位,跟一个10进制数*10=进了一位一样
floverseas
[第60楼]   [ 回复时间:2013-08-09 22:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-08-09 19:11
因为物理地址的最低位一定是偏移地址贡献的,所以段地址的最低位最多只能移到倒二位,移不到最低位的就一定是16(进制中的基数)的倍数。            (以上在16进制表达下)
a610300
[第61楼]   [ 回复时间:2015-12-25 15:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-03-05 11:06
计算时按各自的进制计算就对了
xiaorao
[第62楼]   [ 回复时间:2020-03-23 09:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2020-03-23 09:17
其实我是这样理解的:就是像左移动一个十六进制位!
比如:12FCH=1 0010 1111 1100B
向左一个一个十六进制位就是
向左移动一个十六进制位:12FC0H=0010 1111 1100 0000B

不知道我这样理解是否正确,希望大家可以指正.
xiaorao
[第63楼]   [ 回复时间:2020-03-23 09:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2020-03-23 09:17
回复:[第62楼]
------------------
我这边没有用乘法,只是向左一动一个十六进制位而已
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved