|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么执行 MOV AX,[0000] 之后AX的值不是8070而是2662? 为什么执行的内容不是第一行而是第二行的内容?
个人疑问以及疑问的由来。。。
前俩条指令:
MOV AX,1 :将1移动到AX通用寄存器中,
MOV DS,AX:将通用寄存器AX的值赋给DS段寄存器。
那么,MOV AX,[0000]:将段地址为0000的值赋给AX。
这个MOV AX,[0000]中的段寄存器和地址就是MOV AX,0001:[0000],
因为前面的俩条指令AX=1和DS=AX=1,所以DS的值是1
可是,题目里写的是0000:0000和0000:0010,
就算是DS的值是0000:[0001]也不对啊!
MOV AX,[0001]这个样子才对嘛。
还有就是最后王爽在最后写的提示:注意 ds 的设置。原本没觉得有啥特别的,不过自从有了这句友情提示就不淡定了。。
还有就是我的debug为什么连指令都输不完就退出了?安卓上也是,在VMware中dos6.22直接崩溃了。。
还好重启了系统没坏O(∩_∩)O~。。
求辟邪。。。
下面是我的指令 和 个人注释
检测点3.1
(1) 在DEBUG中,用 "D 0:0 lf" 查看内存,结果如下:
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88
win+R debug
-e E命令写入内存
-e 0000:0000 70 80 f0 30 ef 60 30 e2 00 80 80 12 66 20 22 60
-e 0000:0010 62 26 e6 d6 cc 2e 3c 3b ab ba 00 00 26 06 66 88
-r R命令查看CS:IP的值,发现不对,改
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B2C ES=0B2C SS=0B2C CS=0B2C IP=0100 NV UP EI PL NZ NA PO NC
0B2C:0100 C796007403BB MOV WORD PTR [BP+7400],BB03 SS:7400=000
-r cs 改CS值为0000
CS 0B2C
:0000
-r ip 改ip值为0000
IP 0100
:0000
-r 这回 CS:IP的指向地方就没问题了,因为要指向0000:0000 内存嘛 ^v^
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B2C ES=0B2C SS=0B2C CS=0000 IP=0000 NV UP EI PL NZ NA PO NC
0000:0000 7080 JO FF82
-a 0000:0000 在0000:0000内存里写代码
0000:0000 mov ax,1
0000:0003 mov ds,ax
0000:0005 mov ax,[0000]
0000:0008 mov bx,[0001]
0000:000C mov ax,bx
0000:000E mov ax,[0000]
0000:0011 mov bx,[0002]
0000:0015 add ax,bx
0000:0017 add ax,[0004]
0000:001B mov ax,0
0000:001E mov al,[0002]
然后就退出了。。。
求辟邪啊。。。怎么试怎么退出。。求不退出的方法!!!
|
|