汇编语言(王爽)9章jmp指令

jmp short 标号
jmp near ptr 标号
jmp far ptr 标号
jmp 16位reg,如jmp ax
jmp word ptr 内存单元地址
jmp dword ptr 内存单元地址
详情百度https://www.jianshu.com/p/c685c1c033ff

若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
若要指向第一条指令,则要使IP的值为0000H即可,而jmp word ptr为段内转移指令,相当于把IP值赋值为后面内存单元的值,故只需要[0001]处的字是0即可。
即[0001]和[0002]处的字节都是0。
使用t单步执行,可以发现程序进入死循环。

assume cs:code
data segment
	?						//db 'x',0,0,'x'
data ends

code segment
	s:mov ax,data
	mov ds,ax
	mov bx,0
	jmp word ptr [bx+1]

	mov ax,4c00h
	int 21h

code ends
end s

(2)补全程序,使得jmp指令执行后,CS:IP指向第一条指令
由于执行jmp指令后指向第一条指令,CS段没有改变,只需要改变IP值为0000H。而段间转移相当于把内存地址开始的前两个字节赋值给IP,后面的两字节赋值给CS,按顺序填入0和CS值即可。

assume cs:code
data segment
	dd 12345678h
data ends

code segment
	s:mov ax,data
	mov ds,ax
	mov bx,0
	mov [bx],?					//bx
	mov [bx+2],?				//cs
	jmp dword ptr ds:[0]

	mov ax,4c00h
	int 21h

code ends
end s
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值