汇编语言入门:段寄存器
2018-02-14 11:07
513 查看
接着上一篇“段的概念”,本篇详细讲解“段寄存器”
8086CPU有4个段寄存器:CS、DS、SS、ES
当8086CPU要访问内存时,由着4个寄存器提供内存单元的段地址
CS为代码段寄存器,IP为指令指针寄存器
说明:IP寄存器中存储偏移地址,每次读取指令后,IP的值增加相应的指令长度(如上图就是3,第三四次是2)而CS暂时不变;一个操作码占一个字节,后面的操作数具体而定,所以一条指令的大小也要具体而定;比如上面的图中,
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H
即在8086CPC机刚启动时,CPU从内存FFFF0H单元中读取指令执行
FFFF0H单元中的指令是8086PC机开机后执行的第一条指令
但是
8086CPU为CS、IP提供了专门的指令来修改它们的值:
下图是一个“死循环”:
程序最后一直在左边的段循环……
这段长度为10个字节的指令,假设存放在从123B0H~123B9H的一组内存单元中,就可以认为123B0H~123B9H这段内存单元是用来存放这段代码的,是一个代码段,它的段地址为123BH,长度为10个字节
通过修改CS、IP的值让CPU来执行代码指令
(任意时刻,CS、IP指向的就是“指令”,这一点切记!)
最后小结:8086CPU的工作过程
1. 从CS: IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2. IP指向下一条指令
3. 执行指令并重复步骤一(循环往复)
段寄存器的基本概念
段寄存器就是提供段地址的寄存器8086CPU有4个段寄存器:CS、DS、SS、ES
当8086CPU要访问内存时,由着4个寄存器提供内存单元的段地址
CS和IP寄存器介绍
CS和IP是8086CPU中最重要的寄存器,它们指示了CPU当前要读取指令的地址CS为代码段寄存器,IP为指令指针寄存器
mov AX, 0123H指令的过程图示:
说明:IP寄存器中存储偏移地址,每次读取指令后,IP的值增加相应的指令长度(如上图就是3,第三四次是2)而CS暂时不变;一个操作码占一个字节,后面的操作数具体而定,所以一条指令的大小也要具体而定;比如上面的图中,
mov AX, 0123H由于0123H占2个字节,所以该指令共占(2+1)=3个字节长度
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H
即在8086CPC机刚启动时,CPU从内存FFFF0H单元中读取指令执行
FFFF0H单元中的指令是8086PC机开机后执行的第一条指令
修改CS、IP寄存器的指令
修改AX寄存器的指令:mov AX, 23
mov指令可以改变8086CPU大部分寄存器的值,被称为传送指令
但是
mov指令不能修改CS、IP寄存器的值!!
8086CPU为CS、IP提供了专门的指令来修改它们的值:
jmp指令
jmp指令可以同时修改CS、IP的值:
jmp 2E3:3 ; 要得到物理地址套用公式即可 jmp 3:0B16 ; 3相当于0003
jmp指令还可以只修改IP寄存器的值:
mov ax, 200H jmp ax ; IP地址(偏移地址)转移到200H,类似于:mov IP, ax的意思
下图是一个“死循环”:
程序最后一直在左边的段循环……
代码段
对于8086PC机,在编程时可以根据需要将一组内存单元定义为一个段这段长度为10个字节的指令,假设存放在从123B0H~123B9H的一组内存单元中,就可以认为123B0H~123B9H这段内存单元是用来存放这段代码的,是一个代码段,它的段地址为123BH,长度为10个字节
通过修改CS、IP的值让CPU来执行代码指令
(任意时刻,CS、IP指向的就是“指令”,这一点切记!)
最后小结:8086CPU的工作过程
1. 从CS: IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2. IP指向下一条指令
3. 执行指令并重复步骤一(循环往复)
相关文章推荐
- 汇编语言入门二:环境有了先过把瘾
- 基础知识01 - 零基础入门学习汇编语言01
- 寄存器(内存访问)04 - 零基础入门学习汇编语言16
- MIPS架构与汇编语言快速入门
- 外中断02 - 零基础入门学习汇编语言70
- 汇编语言入门:地址和段的概念
- 包含多个段的程序03 - 零基础入门学习汇编语言31
- 程序语言的底层描述(1)——汇编基础概念的开始之入门
- 更灵活的定位内存地址的方法05 - 零基础入门学习汇编语言36
- 汇编语言入门:几种寻址方式之比较
- 转移指令的原理03 - 零基础入门学习汇编语言45
- 汇编语言的简单入门--斐波那契数列(非递归)
- 标志寄存器05 - 零基础入门学习汇编语言58
- 汇编语言入门三:是时候上内存了
- 汇编语言学习与Makefile入门
- 内中断04 - 零基础入门学习汇编语言63
- 基础知识01 - 零基础入门学习汇编语言01
- int指令03 - 零基础入门学习汇编语言66
- [转]汇编语言入门精品教程
- 寄存器(内存访问)04 - 零基础入门学习汇编语言16