|
主题 : : 问题2.3 [已解决] |
回复[ 6次 ]
点击[ 605次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-02-02 01:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-10-25 00:56 |
"http://www.asmedu.net/blog/user/multimedia/252152130/images/pic_1328115526562.jpg" alt="图">"
"http://www.asmedu.net/blog/user/multimedia/252152130/images/pic_1328115648437.jpg" alt="图">"
初始状态是到内存20000H中读取数据 为什么就一定就读取 前3个数据B8 22 66 而不是B8 22 66 EA。。。连续下去呢? | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-02-02 01:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-10-25 00:56 |
|
|
|
|
|
[第2楼]
[ 回复时间:2012-02-02 01:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-10-25 00:56 |
http://www.asmedu.net/blog/user/multimedia/252152130/images/pic_1328115526562.jpg"" alt="图">
http://www.asmedu.net/blog/user/multimedia/252152130/images/pic_1328115648437.jpg" alt="图"> 初始状态是到内存20000H中读取数据 为什么就一定就读取 前3个数据B8 22 66 而不是B8 22 66 EA。。。连续下去呢? | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-02-02 01:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
因为,指令所操作的数据是有长度的。b8是mov ax,立即数 这个立即数必须是两个字节。0~65535的范围。如果是mov al,立即数,这么数就是一个字节的,但是指令就不是b8...了。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2012-02-02 02:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-10-25 00:56 |
因为,指令所操作的数据是有长度的。b8是mov ax,立即数 这个立即数必须是两个字节。0~65535的范围。如果是mov al,立即数,这么数就是一个字节的,但是指令就不是b8...了。
------------------
回复:B8 是 mov ax,立即数 也就是在初始状态 以书本上为例CS=2000H IP=0H 为初始状态 当CPU通过地址加法器 将CS:IP 合成为一个地址再去内存中找到该地址20000H 读取其中的值 若为B8开头则IP+1地址为20001H 继续读取下一个地址 20002H 下一阶段 IP=IP+3(若无jmp) | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-02-02 09:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第6楼]
[ 回复时间:2012-02-02 11:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-10-25 00:56 |
此贴由 贴主 于 [ 2012-02-02 11:31 ] 结贴。 结贴原因:问题已解决 | | |