|
主题 : : 2.12 代码段 章节中有个例子不明白 [待解决] |
回复[ 9次 ]
点击[ 395次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-05-17 15:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28 |
比如,将:
mov ax,0000 (B8 00 00)
add ax,0123 (D5 23 01)
mov bx,ax (8B D8)
jmp bx (FF E3)
这段长度为10个字节的指令,存放在123B0H-123B9H的一组内存单元中,我们就可以认为,123B0H-123B9H这段内存是用来存放代码的
这段指令代码长度怎么就是10个字节呢?还有存放在内存单元中的地址段,为什么是123B0H-123B9H? | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-05-17 21:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
每条指令都有相应的指令长度,加起来是10个字节,不太明白楼主的意思是什么,为什么对这段代码的长度有疑问?也为什么对这段指令在内存中存放的位置也有疑问? | | |
|
|
|
|
[第2楼]
[ 回复时间:2012-05-18 14:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28 |
感谢楼上的朋友,我刚刚接触汇编,基础不好,望见谅 !
括号里面的是代表机器码吧? 它是通过什么计算出来的,还是随机生成的啊? | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-05-18 18:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2012-02-13 18:24 |
括号里面的是机器码,不是计算出来的,也不是随机生成的,它是人们规定的,每个指令都有固定的数值来代替它。建议你把教材的前面几章认真多看几遍,这些问题就都有答案了。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2012-05-25 15:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-25 15:12 |
我觉得应该是这样的:
总共有10个8位的数字,则8*10=80,那么就是在计算机中总共占据了80位。
而位于字节的转换为80/8=10(字节)。这是因为代码和数据都是以二进制的形式占据内存的空间,而计算机区分指令和数据时,是通过CS:IP的计算所指出向的就是指令。
楼主你觉得我这么解释对不对? | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-06-05 16:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28 |
|
|
|
|
|
[第6楼]
[ 回复时间:2012-08-24 18:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2012-08-22 18:48 |
第一章中说得很明白。实在不行,就数有几个16进制后的两位数,反正每个是占用4bit,两位数就刚好是一个字节8bit。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2012-12-05 17:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-03 23:50 |
|
|
|
|
|
[第8楼]
[ 回复时间:2012-12-20 15:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-24 18:03 |
回复:[贴 主]
------------------
是这样的。汇编是啥你知道吗?
汇编是为了方便人编写代码的。它和机器码是一一对应的关系。计算机智能理解二进制的机器码。为啥?因为当初设计cpu时电路里面的规定就是这样的。
汇编相当于把0或1组成的二进制机器码翻译成又助记词组成的人们能记住的代码。
add是啥,是英语加法的意思。人们能看懂,比什么0101001啥的明白多了。
但是:汇编指令到了计算机里面都会变成二进制代码,计算机只认二进制,内存里也存二进制也就是机器码。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2012-12-20 15:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-24 18:03 |
回复:[贴 主]
------------------
还有,那10个代码是存在内存中的。但是用十六进制表示的。如果用二进制表示你可能就懂了。
b8换成二进制是;10111000你看正好8位。等于一个字节。而内存的最小单元就是一个字节
这不都联系起来了吗? | | |