blubiu

My Love

上网不网恋,简直浪费电.


汇编语言笔记(一)--寄存器


前言:

辣鸡web转pwn,

太难了,

只记录一些重点,不过可能会漏掉。


目录:


汇编指令:

mov ax,4E20H —> 将18送入寄存器AX,等同于 AX=18 ,这里H表示hex十六进制的意思,B表示二进制

add ax,8 —> 将寄存器AX的数值加上8,等同于 AX=AX+8

mov ax,bx —> 将寄存器BX中的数据送入寄存器AX

add ax,bx —> 将AX和BX中的数值相加,结果存在AX中


物理地址:

基础地址 + 偏移地址 = 物理地址

段地址 x16 + 偏移地址 = 物理地址


寄存器 CS和IP:

CS和IP 是 8086CPU 中两个关机寄存器

CS:IP 这两个寄存器指示了 CPU 当前将要读取的指令的地址

CS 为代码段寄存器, IP 为指令指针寄存器

举个粟子

比如,我有下面的两条指令要执行:

  1. mov ax,0123H
  2. mov ax,0000

images


很显然, 10000H:00000H 指向的是  mov ax,0123H 的首地址,

如果 CPU 要读取到我的指令的话,很显然,必须要知道地址  10000H:00000H ,

然后  CPU  就可以根据这个首地址,将汇编指令  mov ax,0123H  所对应的机器码(B8 23 01)读入到  CPU  的指令寄存器中,

最后便可以在  CPU  中进行处理了,

读入后 IP = IP+3 = 00003H ,因为一个机器码的长度为 1

大概就这样,理解就好。


总结:

简单写个笔记。