先打开emu8086,写入代码
;给11003H的地址赋1234H的值
;不能直接给DS赋值需要寄存器中转
mov dx, 1100H
mov ds, dx
mov ax, 1234H
;不能直接给内存地址赋值,需要DS:[偏移地址]指向内存
mov [3H], ax
点击emulate开始模拟
出现调试框,调试框的内容如下。左侧是当前所有寄存器的值;中间蓝色的是当前执行指令的位置,蓝色的行数就是当前执行指令的长度;右侧就是当前即将执行的指令
点击view -> memory 查看内存
内存列表展示
修改默认地址,并通过list的模式展示,查看相应内存地址的值
再次查看调试框
可以看到
-
CS=0100H,IP=0000H,CS:IP=0100H*10H+0000H=01000H,刚好就是当前将要执行的指令的地址。
-
当前所有数据寄存器都为0000H
-
DS=0100
点击single step
执行mov dx, 01100h
指令
可以看到
-
dx寄存器的值为1100H,即dh=11,dl=00H
-
由于上条指令的长度为3,所以IP寄存器的值加3,此时下条指令的地址为CS:IP=0100H:0003H=01003h
点击single step
执行下条指令
可以看到
-
IP=0003H+0002H,上条指令的长度为2,当前的指令长度为3
-
ds=1100H
点击single step
执行下条指令
可以看到
-
ax=1234H
-
ip=ip+0003H=0008h,CS:IP为下条指令的位置
点击single step
执行下条指令
可以看到
-
ip=ip+3=000BH
查看内存,可以看到已经完成赋值,并采用小端模式存放
以上便是给内存赋值的全过程