计算机原始语言汇编

2018-12-27 15:10

计算机原始语言汇编



  8086采用一种在内部用2个16位地址合成的方法来生成1个20位的物理地址

  地址10000H~100FFH的内存单元组成一个段,该段的起始地址(基础地址)为10000H,段地址为1000H,大小为100H

  地址10000H1007FH、10080H100FFH的内存单元组成2个段,它们的起始地址(基础地址)为:10000H和10080H,段地址为1000H和1008H,大小都为80H

  在编程时可以根据需要,将若干连续地址的内存单元看做一个段,用段地址×16定为段的起始地址(基础地址),用偏移地址定位段中的内存单元

  段地址×16必然是16的倍数,所以一个段的起始地址(基础地址)也一定是16的倍数

  偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB

  8086在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址

  8086有4个段寄存器:CS、DS、SS、ES,当CPU需要访问内存时由这4个段寄存器提供内存单元的段地址

  CS为代码段寄存器,IP为指令指针寄存器,它们指示了CPU当前要读取指令的地址

  任意时刻,8086CPU都会将CS:IP指向的指令作为下一条需要取出执行的指令

  如果内存中的某段内容曾被CPU执行过,那么它所在的内存单元必然被CS:IP指向过

  CPU从何处执行指令是由CS、IP中的内容决定的,我们可以通过改变CS、IP的内容来控制CPU执行目标指令

  8086提供了一个mov指令(传送指令),可以用来修改大部分寄存器的值,比如

  mov ax,10、mov bx,20、mov cx,30、mov dx,40

  但是,mov指令不能用于设置CS、IP的值,8086没有提供这样的功能

  8086提供了另外的指令来修改CS、IP的值,这些指令统称为转移指令,最简单的是jmp指令