debug

-u:

将内存中的值都显示为指令

-d:

将内存中的值都显示为数据

-d 2000:1F60

指定地址显示为数据

-d 2000:0000 000F

显示 2000:0000 到 2000:000F 之间(包括二者)的数据

-u 2000:1F60

指定地址显示为指令

-e 2000:0

修改 2000:0000 地址的字节

-e 2000:0 “chars”

修改指定地址ASCII码

-r

显示所有寄存器

-r XX

修改XX寄存器的值

-a

输入执行的指令

-t

执行下一段指令

数据寄存器

地址寄存器

标志位寄存器

数据寄存器(通用寄存器):

AX,BX,CX,DX

16位寄存器:可以各自分割为2个相互独立的8位寄存器。

段地址寄存器:

DS, ES, SS, CS

偏移地址寄存器:

BP,SI,SP,DI,IP,BX

(CS:IP 指令内存地址

DS:[X] 数据内存地址

ES:也是数据段地址寄存器!

SS:SP 栈顶标记)

内存中指令和数据都是二进制,二者并无区别。而当CPU工作时,才将字节进行指令和数据的区分。

8086 CPU中,CS:IP 所指向的内容识别为指令执行。

DS:数据段地址寄存器

指令的执行过程:

  1. CPU 从 CS : IP 所指向内存读取指令,存放到 指令缓存器。
  2. IP = IP + 所读指令长度,从而指向下一条 指令;
  3. 执行指令缓存器中的内容,回到步骤1

jmp 指令:

跳跃,转移指令,可以修改CS:IP寄存器,决定了CPU从哪里读取指令

不能直接mov CS|IP 2000 !因为8086 CPU没有提供这样的功能。

call 指令:

保存当前指向,跳转,直到 ret 指令,又跳转回保存的指向

操作数据前第一步:确定数据的长度。

字型数据在内存中存储时,需要2个地址连续的内存单元存放,

高位字节 存放在 高地址中

低位字节 存放在 低地址中

数据的长度在内存中的排列不同

字节型数据 01

字型数据 01 00

2021-07-30
Contents
  1. debug

⬆︎TOP