. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
寄存器(CPU工作原理)
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
第二章的疑问
[待解决]
回复[
2
次 ] 点击[
277
次 ]
longyi
[帖 主]
[ 发表时间:2011-03-09 00:08 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-03-04 19:33
1,图2.15 从内存20000H单元开始存放的机器指令 B8 23 01 通过数据总线被送入cpu
cpu怎么判断内存应该读到哪个地址就可以停下来等下一条指令的?
这个有人讨论过,
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=idea&kind=1022&qkSg=2&qID=22837&readSg=1,
可我看完还是感觉没有说明为什么要3个字节就结束,cpu怎么判断我这个语句这里就可以结束了。
自己找的其他汇编书关于IP的介绍“IP,指令指针寄存器,又称程序计数器,是一个专用寄存器,用于存放当前要执行指令的地址。IP实际上存放的是指令在当前代码段的偏移地址,它随程序的执行而变化,硬件上总是保证自动修改IP的值为下一条指令的便宜地址,由CS于IP计算出指令的具体地址。计算机用IP寄存器来控制指令序列的执行流程,程序不能直接访问IP,也不能直接修改它,但转移,子程序调用与返回等指令可使其改变”
这个如果简单理解是硬件来保证,那感觉还可以说通,可还是不太具体,求具体解释!
2 实验任务(1)
我先把CS:IP修改为1000:0000,然后开始实验,用命令-e 1000:0 开始修改内存,最后这里是改到1000:0020这个地址的。修改正确,而且我用U 1000:0命令查看汇编命令是否一致,结果是正确的。可现在我的问题来了,我在上面修改的内存后面(从1000:0021开始)接着又把那些机器码再输入一次,到1000:0041结束。内容也是输入正确的,可我在次用-u 1000:0查看汇编命令,结果显示的内容和我第一修改到1000:0020的内容一样,只显示一次汇编命令。
是什么决定U命令到1000:0020结束的,而不是其他地址呢
我用-u 1000:0 41才可以看到输入的2次汇编命令
zaixuexi
[第
1
楼]
[ 回复时间:2011-03-10 10:00 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28
1. 指令会经过译码器译码,对于CISC来说因为指令字节不固定,所以这个过程很复杂
2. 硬件上怎么做就要看电路了
3. GOOGLE->8086 debug u命令
hongdan0714jin
[第
2
楼]
[ 回复时间:2011-04-13 18:19 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-03-27 21:54
和我的问题一样。。。
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved