|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 奥普瓯江 于 2018-6-30 15:53 编辑
(1)程序如下
- assume cs:code
- data segment
- ?
- data ends
- code segment
- start: mov ax, data
- mov ds, ax
- mov bx, 0
- jmp word ptr [bx + 1]
- code ends
- end start
复制代码
若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义那些数据
答:应该在data段中定义dw 0,dw每次在内存中申请2个字节的空间,所以jmp word ptr 一次取的是一个字2个字节是可以满足的
(2)程序如下
- 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]
- code ends
- end start
复制代码
补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令
答:mov [bx], 0
mov [bx + 2], cs
内存中一共储存了2个字或称之为4个字节,jmp段间跳转,cs等于高位字节ip等于低位字节
(3)用Debug查看内存,结果如下:
2000:1000 BE00 06 00 00 00 ..........
则此时,CPU执行指令
- mov ax, 2000h
- mov es, ax
- jmp dwordptr es:[1000h]
复制代码
后,(CS )= ?, (IP) = ?
答:(CS) = 0006,(IP)= 00BE |
|