内存指令及寄存器初始值:

CS:2000H

IP:0

DS:1000H

AX:0

BX:0

汇编指令执行过程及CS与IP和DS寄存器关系与变化_寄存器

 上面在内存中的汇编指令是如何执行的?

验证:

在debug下用a指令先向内存写入下面指令,然后用u指令查看

 

mov ax,2000
mov ds,ax
mov ax,[0008]
mov ax,[0002]

 

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编指令_02

 

 在debug下用a指令先向内存写入下面指令,然后用u指令查看

mov ax,6622
jmp 0ff0:0100
mov bx,ax

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编_03

通过上面操作已准备好1000H:0内存与2000H:0内存的数据

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编指令_04

 

 接下来用r指令修改CS值为:2000 ,修改IP值为0,然后用t执行内存的汇编指令,会从CS:IP处开始执行

汇编指令执行过程及CS与IP和DS寄存器关系与变化_IP_05

DS值修改为1000 ,AX与BX值修改为0 

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编_06

 所有值修改OK后,开始输入t执行汇编指令,t每次执行一行指令

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编指令_07

再次输入t执行下一条指令

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编指令_08

 

再次输入t执行下一条指令

汇编指令执行过程及CS与IP和DS寄存器关系与变化_IP_09

 

继续输入t 执行下一条指令

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编指令_10

 

再次输入t执行汇编指令

汇编指令执行过程及CS与IP和DS寄存器关系与变化_寄存器_11

 

最后一次输入t执行汇编,完成所指令执行

汇编指令执行过程及CS与IP和DS寄存器关系与变化_IP_12

 

本段汇编要注意的地方: 

指令与数据区别,有CS:IP指向的指令才会执行 

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编指令_13

 

内存单元字类型存储 

 

汇编指令执行过程及CS与IP和DS寄存器关系与变化_汇编指令_14

物理地址计算: 

汇编指令执行过程及CS与IP和DS寄存器关系与变化_寄存器_15