社区
汇编语言
帖子详情
●●●一个IP寄存器如何知道下一条指令长度的问题!请各位指教●●●
1423567
2005-09-05 11:07:23
在8088/8086的CPU逻辑结构中
我们都知道每当一条指令执行以后IP寄存器的值会自动指向下一条指令的首地址,然后CPU的BIU部件就会去刚内存地址去读指令,我的问题也就在这里,他只知下一条指令始地址,并不知道下一条指令有多长有多少个字节。程序加载到内存中后指令也都是以2进制保存的,每条指令长度也都是不一样的
CPU怎么知道下一条指令的长度是多少?
感谢各位大侠的赐教!谢谢!解决马上给分!大家多给说说~
...全文
393
5
打赏
收藏
●●●一个IP寄存器如何知道下一条指令长度的问题!请各位指教●●●
在8088/8086的CPU逻辑结构中 我们都知道每当一条指令执行以后IP寄存器的值会自动指向下一条指令的首地址,然后CPU的BIU部件就会去刚内存地址去读指令,我的问题也就在这里,他只知下一条指令始地址,并不知道下一条指令有多长有多少个字节。程序加载到内存中后指令也都是以2进制保存的,每条指令长度也都是不一样的 CPU怎么知道下一条指令的长度是多少? 感谢各位大侠的赐教!谢谢!解决马上给分!大家多给说说~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大熊猫侯佩
2005-09-07
打赏
举报
回复
你可以参考 计算机体系结构 指令的编码 一章。
1423567
2005-09-06
打赏
举报
回复
谢谢楼上的回复!据我知道的指令列队也就是你上面说的(缓冲区)8086是里是有6个字节
8088有4个字节,这是我所知道的。
那问题就在这里 我们都知道每条指令的机器码长度都是不同的有的可能2个字节也可能3个字节 然后我们再看8086的结构每次读入6个字节到缓冲区里 这跟我前面说的每条指令长度不符合了
CPU又怎么辨别呢?
我看了8086的逻辑结构图上 指令列队的下一个处理器件就是EU 会不会在这里做了什么?
请各位指教!
谢谢!
zara
2005-09-06
打赏
举报
回复
cpu 不是读入下一条指令的完整的长度的, 而是它有个指令缓冲池, 大小是固定的, 即一次读入的长度是一定的, 缓冲池空了的时候就再次读入. 当前指令的长度是由解码器部分来确定完成的, 除了转移类的指令外, 后续的被认为是下一条指令; 如果是转移类指令, 包括 jmp/j??/call 之类的, 指令缓冲池会被清空, 再次读入新的目标处的指令
1423567
2005-09-06
打赏
举报
回复
也先谢谢楼上的回复,我明白了一点 你的意思就是说 “ 知道了操作码,就可以确定当前指令的长度” 我想知道一下处理这个部件是否是EU呢? 希望各位有啥就补充点。没问题了我就想结帖了!
我的QQ:346749130 希望大家多多探讨
liangbch
2005-09-06
打赏
举报
回复
1
所有的x86指令的第一个字节都是操作码(有的第二个字节也是操作码),操作码包含了3部分信息,1.作什么操作,2。操作数(或寄存器)是什么。3.操作数(或者寄存器)的宽度是多少,字节,字还是双字。知道了操作码,就可以确定当前指令的长度,进而可以确定下一条指令的地址:
注意,在汇编语言中,相同的指令其操作码并不一定相同,如 指令 mov ax,[si+4], mov ax,[si+1234] 粗看出来,功能,寄存器都是一样。但操作码并不相同,它们的操作码分别是,8B44 和8B84,下面是在debug下反汇编的结果。
138E:0100 8B4404 MOV AX,[SI+04]
138E:0103 8B843412 MOV AX,[SI+1234]
C++第4课:C++协程及高并发网络协程库State-Threads
C++第4课:C/C++协程及高并发网络协程库State-Threads 大家好,我将带领大家一起来学习CC/C++协程的基础知识,包括setjmp, longjmp,和ucontext。 然后讲解汇编语言的CPU寻址,以及CS:
IP
控制CPU走向的原理。 然后...
汇编笔记
1.
寄存器
: ...段
寄存器
CS(段
寄存器
),
IP
(段指针),CPU通过CS * 16 +
IP
读取
指令
并执行。 执行内容如 B8 01 00 执行后
IP
加3 2.命令 r 查看修改
寄存器
内容 ...
网工知识问答精华
●
设某单总线LAN,总线
长度
为1000米,数据率为10mbps,数字信号在总线上的传输速度2C/3(C为光速),则每个信号占据的介质
长度
为__ 米.当CSMA/CD(非IEEE802.3标准)访问时,如只考虑数据帧而忽略其他一切因素,则最小时间片的...
单片机学生,来认识认识Jtag--Boundary Scan
\\\插播
一条
:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我(禾厶-亻言-手戈)免費的。最近比较闲,带做毕设,带学生参加省级以上比赛///想必玩过单片机或者 FPGA开发板的同鞋对...
闭关六个月涉及到的微机原理简答题(特别适用河北专接本)
如有不足,还望大佬们
指教
第一章 冯·诺依曼计算机的基本设计思想是什么? 答:(1)采用二进制,机器用二进制表示数据和
指令
。 (2) 存储程序,将程序和数据存放在存储器中。 (3) 程序控制,计算机在工作时从...
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章