汇编语言的一个简单计算

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:42:43
CS=0FE00H,IP=0400H,则表示要取指令代码的物理地址为0FE400H。
请问这是怎么算的啊?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采用