. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  2.12 代码段 章节中有个例子不明白  [待解决] 回复[ 9次 ]   点击[ 395次 ]  
gaowei_hb
[帖 主]   [ 发表时间: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?
tomato
[第1楼]   [ 回复时间:2012-05-17 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
每条指令都有相应的指令长度,加起来是10个字节,不太明白楼主的意思是什么,为什么对这段代码的长度有疑问?也为什么对这段指令在内存中存放的位置也有疑问?
gaowei_hb
[第2楼]   [ 回复时间:2012-05-18 14:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28
感谢楼上的朋友,我刚刚接触汇编,基础不好,望见谅 !
括号里面的是代表机器码吧? 它是通过什么计算出来的,还是随机生成的啊?
yahwei
[第3楼]   [ 回复时间:2012-05-18 18:59 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2012-02-13 18:24
括号里面的是机器码,不是计算出来的,也不是随机生成的,它是人们规定的,每个指令都有固定的数值来代替它。建议你把教材的前面几章认真多看几遍,这些问题就都有答案了。
hongchao
[第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的计算所指出向的就是指令。
楼主你觉得我这么解释对不对?
gaowei_hb
[第5楼]   [ 回复时间:2012-06-05 16:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28
回看了前面2章内容 稍微有点理解了
hades
[第6楼]   [ 回复时间:2012-08-24 18:20 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2012-08-22 18:48
第一章中说得很明白。实在不行,就数有几个16进制后的两位数,反正每个是占用4bit,两位数就刚好是一个字节8bit。
xberlino
[第7楼]   [ 回复时间:2012-12-05 17:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-12-03 23:50
mov是3个,add和jmp是两个
palm1949
[第8楼]   [ 回复时间:2012-12-20 15:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-24 18:03
回复:[贴 主]
------------------
是这样的。汇编是啥你知道吗?
汇编是为了方便人编写代码的。它和机器码是一一对应的关系。计算机智能理解二进制的机器码。为啥?因为当初设计cpu时电路里面的规定就是这样的。
汇编相当于把0或1组成的二进制机器码翻译成又助记词组成的人们能记住的代码。
add是啥,是英语加法的意思。人们能看懂,比什么0101001啥的明白多了。
但是:汇编指令到了计算机里面都会变成二进制代码,计算机只认二进制,内存里也存二进制也就是机器码。
palm1949
[第9楼]   [ 回复时间:2012-12-20 15:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-24 18:03
回复:[贴 主]
------------------
    还有,那10个代码是存在内存中的。但是用十六进制表示的。如果用二进制表示你可能就懂了。
    b8换成二进制是;10111000你看正好8位。等于一个字节。而内存的最小单元就是一个字节
这不都联系起来了吗?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved