. : : 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