汇编语言——段寄存器
2022-10-31 23:24 作者:Vector永远的神 | 我要投稿
CS 指令代码段寄存器 IP指令偏移地址寄存器,CPU只认为被CS:IP指向的内存单元的内容是指令。通过jmp指令对于CS:IP进行修改操作,可以同时修改,也可以只修改偏移地址。
CPU找到内存中对应CS:IP地址的二进制数据,通过控制总线读取相应的指令,将其存入指令缓冲器中。然后IP=IP+当前指令长度,偏移地址指向下一条指令的位置。再执行当前指令。最后回到最开始进行循环。
任何两个地址连续的内存单元,N号和N+1号,可以把他们看成两个单独的内存字节(8bit),也可以把他们看成是地址为N的字(16个bit长度的字)单元中的高位字节与低位字节。
DS寄存器,存储访问数据的段地址。mov指令可以自动获取DS中已经存储的访问数据的段地址,然后加上赋值的偏移地址,把对应的内存单元中的数据读入通用寄存器。8086CPU不支持直接将数据放入段寄存器中,只能通过通用寄存器中转。
DS内部存储段地址,【address】内表示偏移地址,共同构成物理地址。
一定要注意ax是16位bit长度,两个字节一个字,mov,add等指令执行的时候需要获取内存中连续地址的两个字节长度的数据,字节与字的长度对应关系。8086CPU 一组若干长度的内存单元可以被指定为一个段 段长不能超过64KB。