第二章——寄存器

今天我们来看看第二章。
第二章讲的是寄存器,这里蕴含的知识点还是比较多的。
我们来看一看。
通用寄存器——AX,BX,CX,DX。
对于8086CPU,每个寄存器都是16位的。
为了兼容上一代8位的CPU,8086CPU的寄存器分为高位和低位,如AX分为AH,AL。
字节:Byte(8bit)
字:word(16bit)
下面是几条汇编指令:

mov A,B      //把B的值赋给AA是寄存器,B可以是寄存器也可以是具体的数字
add A,B      //把A的值加上B的值,A和B的含义同上

8086CPU是16位的,其含义有:

  • 运算器一次最多可以处理16位的数据
  • 寄存器的最大宽度位16位
  • 寄存器和运算器之间的通路为16位

    8086CPU给出物理地址的方式是:

物理地址=段地址*16+偏移地址

值得提示的是,虽然有段地址,但是内存并没有分段,只是CPU把它们分段了而已。
8086CPU有4个段寄存器——CS、DS、SS、ES
CS(code segment)用于存储指令(代码),CPU会把CS:IP指向的内容视为指令去执行。
这里CS相当于段地址,而IP相当于偏移地址。
我们可以用以下命令去修改CS:IP的指向:

jmp CS:IP      //指讲执行指针转移到CS:IP地址,从那里读取命令执行

还有一个概念,就是代码段,指的就是一个段地址下的代码。
debug中的一些命令(在DOS中输入debug即可进入debug模式):

r       //查看(直接输入r)、改变(输入r加上要修改的寄存器)CPU寄存器中的内容
d       //查看内存中的内容
e       //改写内存中的内容
u       //将内存中的机器指令翻译成汇编指令
t       //执行一条机器指令
a       //以汇编指令的格式在内存中写入一条机器指令(从CS:IP所指的位置开始输入)

第二章的精华内容好像就是那么多了。

猜你喜欢

转载自blog.csdn.net/cggwz/article/details/79243314