王爽 汇编 检测点9.1(2) 补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令
一、如题
assume cs:code,ds:data data segment dd 12345678H data ends code segment start: mov ax,data mov ds,ax mov bx,0 mov [bx],? mov [bx+2],?
jmp dword ptr ds:[0] mov ax,4c00h int 21h code ends end start
二、代码实现
assume cs:code,ds:data data segment dd 12345678H data ends code segment start: mov ax,data mov ds,ax mov bx,0 mov [bx],offset start ;偏移地址 mov [bx+2],word ptr cs ;取出代码段地址,mov [bx+2],cs 也可以 jmp dword ptr ds:[0] mov ax,4c00h int 21h code ends end start
三、上机调试
1.执行三条指令后,各个寄存器状态
2.标记A:偏移地址赋值到数据段中,标记B:代码段地址赋值给数据段
执行完标记AB两条指令后查看数据段中的数据:word ptr ds:[2]的字型数据是0B39(段地址),
word ptr ds:[0]的字型数据是0000(偏移地址)
3.执行完jmp指令后,跳转到了第一条指令,至此我们成功了!
海阔凭鱼跃,天高任鸟飞,成功没有捷径,唯有努力前行!