检测点9.1(第170页)
----------------------
(1)若要使jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
完整程序如下:
assume cs:code,ds:data
data segment
db 0,0,0
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1] ;段内间接转移
code ends
end start
;解题理由:为了使IP的值经跳转后变为0,则需保证ds:[bx+1]处的字型单元数据为0000H,
;所以定义3个字节型数据0就符合“应该”的要求
(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],bx ;源操作数bx为所填内容
mov [bx+2],cs ;源操作数cs为所填内容
jmp dword ptr ds:[0]
code ends
end start
; 我的问题是 数据段里定义的是双字啊。
;mov ax,data 双字就是32字节,为什么可以送入到ax ,ax不是才16位的吗?
这样不会错误吗?
希望大家指点一下啊,先谢过了啊。 |