机器语言晦涩难懂,且篇幅较长。
汇编指令是机器指令便于记忆的书写格式。
寄存器:简单的讲是CPU中可以存储数据的器件。
汇编语言由三种指令组成:
(1)汇编指令:机器码的助记符,有对应的机器码。(核心)
(2)伪指令:没有对应的机器码,由编译器执行,没有对应的机器码。
(3)其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
存储器芯片从读写属性上看分为两类:RAM(随机存储器)和ROM(只读存储器)。
不同的CPU,寄存器的个数、结构是不同的。
通用寄存器:AX、BX、CX、DX。
物理地址:物理地址=段地址
×
\times
×+偏移地址
X进制的数字向左移动一位,相当于
×
\times
×X
段地址存放在四个段寄存器中CS、DS、SS、ES。
CS:IP访问地址指令。
jmp指令,修改CSip。
本人是装了一个xp的虚拟机来实现进入debug的功能的。
(1)用R命令查看、改变CPU寄存器的内容。
我们已经知道了AX BX CX DX CS IP这六个寄存器,现在查看一下他们中的内容。
修改寄存器中的内容。
此时图中,CS:IP指向)0AE3:0100,此处存放的机器码为40,对应的汇编指令是INC AX;
可以使用r命令对cs和ip进行修改。
(2)用debug的d命令查看内存中的内容
如果我们想知道10000H处的内容,可以使用“d 段地址:偏移地址”的格式来查看。
中间的数据是各个地址中存的内容,左边是每行的起始地址,右边的是每个内存单元中的数据对应的可以显示的ASCII码。
(3)用debug的e命令改写内存中的内容
-e 然后加上地址,再加上要修改成的数,个数自定义
或者采用-e加地址的方式也可以。
(4)用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码。
-u加地址,显示会汇编语言;
-t可以单步执行。