汇编语言(王爽)》(第九章、实验8分析一个奇怪的程序)学习笔记

时间:2022-02-02 01:11:44

<加深转移指令原理的理解>

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;程序即可正确返回;