题目是定义data, 让jmp后cs:ip指向程序第一条指令
1, 我理解第一条指令时mov ax,data, start为标号,CS:IP=CS:0000
2, 要想满足题目, jmp word ptr [bx+1], 此指令中地内存地址装的必须是0000
3, 所以, data如下定义
data segment
dw 0 ;定义成一个为0的字, 因为jmp word ptr 要求是一个字。
data ends
4, 用debug实验结果:
d:\asm>debug j91.exe
-r
AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14C9 ES=14C9 SS=14D9 CS=14DA IP=0000 NV UP EI PL NZ NA PO NC
14DA:0000 B8D914 MOV AX,14D9 ;CS=14da, IP=0000
-t
AX=14D9 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14C9 ES=14C9 SS=14D9 CS=14DA IP=0003 NV UP EI PL NZ NA PO NC
14DA:0003 8ED8 MOV DS,AX
-t
AX=14D9 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14D9 ES=14C9 SS=14D9 CS=14DA IP=0005 NV UP EI PL NZ NA PO NC
14DA:0005 BB0000 MOV BX,0000
-t
AX=14D9 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14D9 ES=14C9 SS=14D9 CS=14DA IP=0008 NV UP EI PL NZ NA PO NC
14DA:0008 FF6701 JMP [BX+01] DS:0001=0000
;段内跳转, 地址为0000, 即程序开始第一条指令指向。
-t
AX=14D9 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14D9 ES=14C9 SS=14D9 CS=14DA IP=0000 NV UP EI PL NZ NA PO NC
14DA:0000 B8D914 MOV AX,14D9
-t
;结果正确。 |