汇编语言的一个简单计算
来源:百度知道 编辑:UC知道 时间:2024/05/22 05:42:43
请问这是怎么算的啊?CS是什么啊?IP是什么啊?具体怎么算的啊?请高手教的详细点,谢谢了!
cs 是代码的段寄存器
ip 是代码的寄存器
两者共同指定下一条指令的地址
具体计算如下:
cs*16+ip
效果就是cs向左移动一位(16进制),如0FE00H 变为 0FE000H
再加上ip
就变成了0FE400H
答:
CS是段寄存器 SREG
IP是寄存器 REG
算法:
CS×16+IP=物理地址0FE400H
CS是什么啊?IP是什么啊?
lz先找一个汇编基础教程看看,应该会解除你的疑惑。
0fe00十六进制左移一位(加一个0,十进制乘以16)为0fe000
然后加上0400h为0fe400
其中cs代表代码段物理地址
ip代表指针位置
Intel公司的80X86系列的CPU基本上采用内存分段的管理模式。它把内存和程序分成若干个段,每个段的起点用一个段寄存器来记忆,所以,学习微机汇编语言,必须要清楚地理解存储器的分段含义、存储单元的逻辑地址和其物理地址之间的转换关系。
; -------------------------------------
16位微机的内存管理模式
1、存储器的分段
我们知道:计算机的内存单元是以“字节”为最小单位进行线性编址的。为了标识每个存储单元,就给每个存储单元规定一个编号,此编号就是该存储单元的物理地址。
存储单元的物理地址是一个无符号的二进制数。但为了书写的简化,物理地址通常用十六进制来表示。
16位CPU内部有20根地址线,其编码区间为:00000H~0FFFFFH,所以,它可直接访问的物理空间为1M(220)字节。而16位CPU内部存放存储单元偏移量的寄存器(如:IP、SP、BP、SI、DI和BX等)都是16位,它们的编码范围仅为:00000H~0FFFFH。这样,如果用16位寄存器来访问内存的话,则只能访问内存的最低端的64K,其它的内存将无法访问。为了能用16位寄存器来有效地访问1M的存储空间,16位CPU采用