汇编语言笔记02-寄存器(CPU工作原理)
2012-10-15 10:01
363 查看
转载必须注明出处,违者必究。http://www.cnblogs.com/dennisOne
典型CPU的构成
一个典型的CPU是由运算器、控制器、寄存器等器件构成。在CPU中:
运算器进行信息处理
寄存器进行信息存储
控制器控制各种器件进行工作
内部总线连接CPU的各种器件,在它们之间进行数据的传送。
8086CPU的通用寄存器
8086CPU的所有CPU都是16位的,可以存放2个字节。
为了保证兼容,8086CPU通用寄存器AX,BX,CX,DX可划为两个可独立使用的8位寄存器来使用。
字在寄存器中的存储
8086CPU可以一次性处理两种尺寸的数据。一种是字节(byte),可以存在8位寄存器中,一种是字(word),可以存在16位寄存器中。
几条简单的汇编指令
总结:
指令的两个操作对象的位数应当一致。 诸如mov ax bl和mov al 2000都是错误的指令
ah和al是两个独立的寄存器,CPU在执行指令的时候将ah和al看成两个不相关的寄存器。
ax和al进位时进位值并不保存在ax和al中,而是保存在标志位中。
物理地址
内存地址空间是一个线性空间,每个内存单元都有唯一的地址,称为物理地址。
CPU通过地址总线送入寄存器的,必须是一个内存单元的物理地址。必须在CPU内部形成物理地址。
8086CPU是16位结构的。表现在:
(1). 运算器 一次最多可以处理16位的数据。
(2). 寄存器的最大宽度为16位。
(3). 寄存器和运算器之间的通路是16位的。
8086CPU的地址总线宽度为20位,可以传送20位地址,达到1M寻址能力。8086CPU又是16位结构的。8086CPU采用两个16位地址合成的方式来形成20位的物理地址。
段
内存并没有分段,而是CPU使用"分段"的方式管理内存。
基础地址(段地址DA*16)+偏移地址(EA)=物理地址
基础地址(段的起始地址)是16的倍数。偏移地址为16位,所以一个段的最大长度最大为64KB。
可以根据需要,将地址连续、起始地址位16的倍数的一组内存单元定义为一个段。
"数据在21F60H内存单元中"的表述:
"数据存在内存2000:1F60单元中"或"数据存在内存的2000段中的1F60单元中"
段寄存器
8086CPU有4个段寄存器:CS、DS、SS、ES。
CS和IP是指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。
8086CPU的工作过程:
(1). 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
(2). IP自动指向下一条指令;
(3). 执行指令。(转到步骤(1), 重复这个过程)
修改CS、IP的指令
(1). mov指令不能用于设置CS、IP的值。8086CPU使用jmp命令(转移指令)来改变CS、IP的值。
(2). "jmp 段地址: 偏移地址" 修改CS和IP
"jmp 某一合法寄存器" 修改IP
8086CPU不支持 "jmp 常量"指令。
Debug的几个常见指令
R命令查看、改变CPU寄存器的内容。
D命令查看内存中的内容。
E命令改写内存中的内容。
U命令将内存中的机器指令翻译成汇编语言。
T命令执行一条机器指令。A命令以汇编指令的格式在内存中写入一条机器指令。
P命令执行int 21中断命令。执行到loop指令,Debug会自动重复执行循环中的指令,直到(cx)=0为止。
G命令一次性执行到某条命令[类似于断点]。
典型CPU的构成
一个典型的CPU是由运算器、控制器、寄存器等器件构成。在CPU中:
运算器进行信息处理
寄存器进行信息存储
控制器控制各种器件进行工作
内部总线连接CPU的各种器件,在它们之间进行数据的传送。
8086CPU的通用寄存器
8086CPU的所有CPU都是16位的,可以存放2个字节。
为了保证兼容,8086CPU通用寄存器AX,BX,CX,DX可划为两个可独立使用的8位寄存器来使用。
字在寄存器中的存储
8086CPU可以一次性处理两种尺寸的数据。一种是字节(byte),可以存在8位寄存器中,一种是字(word),可以存在16位寄存器中。
几条简单的汇编指令
总结:
指令的两个操作对象的位数应当一致。 诸如mov ax bl和mov al 2000都是错误的指令
ah和al是两个独立的寄存器,CPU在执行指令的时候将ah和al看成两个不相关的寄存器。
ax和al进位时进位值并不保存在ax和al中,而是保存在标志位中。
物理地址
内存地址空间是一个线性空间,每个内存单元都有唯一的地址,称为物理地址。
CPU通过地址总线送入寄存器的,必须是一个内存单元的物理地址。必须在CPU内部形成物理地址。
8086CPU是16位结构的。表现在:
(1). 运算器 一次最多可以处理16位的数据。
(2). 寄存器的最大宽度为16位。
(3). 寄存器和运算器之间的通路是16位的。
8086CPU的地址总线宽度为20位,可以传送20位地址,达到1M寻址能力。8086CPU又是16位结构的。8086CPU采用两个16位地址合成的方式来形成20位的物理地址。
段
内存并没有分段,而是CPU使用"分段"的方式管理内存。
基础地址(段地址DA*16)+偏移地址(EA)=物理地址
基础地址(段的起始地址)是16的倍数。偏移地址为16位,所以一个段的最大长度最大为64KB。
可以根据需要,将地址连续、起始地址位16的倍数的一组内存单元定义为一个段。
"数据在21F60H内存单元中"的表述:
"数据存在内存2000:1F60单元中"或"数据存在内存的2000段中的1F60单元中"
段寄存器
8086CPU有4个段寄存器:CS、DS、SS、ES。
CS和IP是指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。
8086CPU的工作过程:
(1). 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
(2). IP自动指向下一条指令;
(3). 执行指令。(转到步骤(1), 重复这个过程)
修改CS、IP的指令
(1). mov指令不能用于设置CS、IP的值。8086CPU使用jmp命令(转移指令)来改变CS、IP的值。
(2). "jmp 段地址: 偏移地址" 修改CS和IP
"jmp 某一合法寄存器" 修改IP
8086CPU不支持 "jmp 常量"指令。
Debug的几个常见指令
R命令查看、改变CPU寄存器的内容。
D命令查看内存中的内容。
E命令改写内存中的内容。
U命令将内存中的机器指令翻译成汇编语言。
T命令执行一条机器指令。A命令以汇编指令的格式在内存中写入一条机器指令。
P命令执行int 21中断命令。执行到loop指令,Debug会自动重复执行循环中的指令,直到(cx)=0为止。
G命令一次性执行到某条命令[类似于断点]。
相关文章推荐
- 寄存器(CPU工作原理)02 - 零基础入门学习汇编语言07
- 汇编语言学习笔记(二):寄存器(cpu工作原理)
- 读王爽老师汇编语言笔记---寄存器(cpu工作原理)
- 寄存器(CPU工作原理)02 - 零基础入门学习汇编语言07
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- [汇编语言]-第二章寄存器(CPU工作原理)
- 汇编语言(学习笔记----寄存器CPU互作原理)
- 汇编语言--寄存器(cpu工作原理)
- 汇编语言01——寄存器(CPU的工作原理)
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 汇编语言之寄存器(CPU工作原理)
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 汇编语言(学习笔记----寄存器CPU互作原理)
- 寄存器(CPU工作原理)05 - 零基础入门学习汇编语言10
- 寄存器(CPU工作原理)05 - 零基础入门学习汇编语言10
- 寄存器(CPU工作原理)07 - 零基础入门学习汇编语言12
- 汇编语言-第二章 寄存器(CPU工作原理)
- 小甲鱼汇编语言006第二章 寄存器(CPU工作原理)01
- 寄存器(CPU工作原理)07 - 零基础入门学习汇编语言12