xiongwenxuan 发表于 2017-8-30 14:28:59

监测点9.1

1.
assume cs: codesg
data segment
    dw 0
data ends

codesg segment
    start:
          mov ax, data
          mov ds, ax
          mov bx, 0
          jmp word ptr
codesg ends
end start

2.
assume cs: codesg
data segment
    dd 12345678h
data ends

codesg segment
    start:
          mov ax, data
          mov ds, ax
          mov bx, 0
          mov , bx;crazy
          mov , cs;crazy
          jmp dword ptr ds:
codesg ends
end start

飞翔的小胖子 发表于 2021-3-12 21:58:33

有大佬详细解释一下不~~~

想打小代码 发表于 2023-12-26 12:42:33

飞翔的小胖子 发表于 2021-3-12 21:58
有大佬详细解释一下不~~~

第一题中的 jmp word ptr 表明是段内转移,要使其指向第一条指令,则ds:存放的是第一条指令,而bx=0,则表明ds:处就是存放指令的地方,而ds:是存放数据的,则该地址只能存放一个字型数据或两个字节型数据。

第二题中实际上编码是有点问题的,因为代码段的指令会影响到数据段,但这个就不用管它了,又用不到代码段的数据,其作用只是告诉你有一段数据而已,所以不要去关注它,要不然后面的指令会看得有点乱。
jmp dword ptr ds: 表明是段间转移,则ds:存放的是IP的值,ds:存放的是CS的值,而该程序在刚开始执行时CS:IP肯定指向的是代码段的第一条指令的,这个不懂的话就回去复习,所以直接把CS的值放到 ds:中,0放到中就行了,而bx=0
页: [1]
查看完整版本: 监测点9.1