Un fragmento de código escrito usando la esencia de la declaración de salto

assume cs:codesg

codesg segment

		mov ax, 4c00H
		int 21H

start:	mov ax, 0

s:		nop					
		nop
		mov di, offset s	;将s处的ip赋值给di
		mov si, offset s2	;将s2处的ip赋值给si
		mov ax, cs:[si]		;相当于将s2处的物理地址给ax寄存器
		mov cs:[di], ax		;把s处的地址变为s2处的地址,因而此时s段第一句原本的nop
							;就变为s2处的jmp short s1
		
s0:		jmp short s			;跳转至s处

s1:		mov ax, 0
		int 21h
		mov ax, 0
		
s2:		jmp short s1		;这里语句上直接反映的是跳转至s1,但jmp short指令底层机制	
							;是通过计算偏移地址实现的,所以这一语句底层其实是偏移地址-10
							;而s处至代码段起始处也是10个字节,所以程序能够正常结束
		nop
		
codesg ends

end start
78 artículos originales publicados · Me gusta 3 · Visitas 5596

Supongo que te gusta

Origin blog.csdn.net/qq_43071318/article/details/105425830
Recomendado
Clasificación