<加深转移指令原理的理解>
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:
mov ax,0
s: //cs:0008h
nop
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0:
jmp short s
s1: //cs:0018h
mov ax,0
int 21h
mov ax,0
s2: //cs:0020h
jmp short s1
nop
codesg ends
end start
程序可以正确返回;第10到13行是将s2标号的机器码(如EBF6,F6:十进制表示-10)复制到s标号的两个字节中;
当转到s:处时,机器指令为EBF6(补码表示),当执行机器指令时,ip=0010h,则转移的标号地址为F6H+10H=0,即
翻译出的汇编指令为:jmp short 0000h;执行mov ax,4c00h,int 21h;程序即可正确返回;
本文通过一个具体的汇编语言示例,解析了转移指令的工作原理。重点介绍了如何通过修改内存中的指令来实现特定的跳转行为,并解释了这种技术在程序控制流程中的应用。
348





