关于 王爽的汇编语言 试验8看不懂啊
实验8assumecs:codesgcodesgsegmentmovax,4c00hint21hstart:movax,0ax=0s:nop占一字节,机器码90nop占一...
实验8
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start: mov ax,0 ax=0
s: nop 占一字节,机器码90
nop 占一字节,机器码90
mov di,offset s (di)=s偏移地址
mov si,offset s2 (si)=s2偏移地址
mov ax,cs:[si] (ax)=jmp short s1指令对应的机器码EBF6
mov cs:[di],ax jmp short s1覆盖s处指令2条nop指令
s0: jmp short s 执行s???? 未执行到这里,直接跳回mov ax,4c00h了
s1: mov ax,0
int 21h
mov ax,0
s2: jmp short s1
nop
codesg ends
end start
P180中关于jmp指令的位移内容
当指令执行到s0:jmp short s时,该指令得到执行,编译器算出的ip位移量为8-18h=-16(补码F0),(ip)=(ip)+位移量=18h+(-16)=8,cs:8指向s;
当指令执行到s标段jmp命令时,第1个字节中的机器码为EBF6,给出的ip位移量为-10(补码F6),(ip)=(ip)+位移量=ah+(-10)=0,cs:0指向第一条指令。
ah是多少? 为什么EBF6机器码可以对应JMP 0000 又能对应JMP 0018 展开
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start: mov ax,0 ax=0
s: nop 占一字节,机器码90
nop 占一字节,机器码90
mov di,offset s (di)=s偏移地址
mov si,offset s2 (si)=s2偏移地址
mov ax,cs:[si] (ax)=jmp short s1指令对应的机器码EBF6
mov cs:[di],ax jmp short s1覆盖s处指令2条nop指令
s0: jmp short s 执行s???? 未执行到这里,直接跳回mov ax,4c00h了
s1: mov ax,0
int 21h
mov ax,0
s2: jmp short s1
nop
codesg ends
end start
P180中关于jmp指令的位移内容
当指令执行到s0:jmp short s时,该指令得到执行,编译器算出的ip位移量为8-18h=-16(补码F0),(ip)=(ip)+位移量=18h+(-16)=8,cs:8指向s;
当指令执行到s标段jmp命令时,第1个字节中的机器码为EBF6,给出的ip位移量为-10(补码F6),(ip)=(ip)+位移量=ah+(-10)=0,cs:0指向第一条指令。
ah是多少? 为什么EBF6机器码可以对应JMP 0000 又能对应JMP 0018 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询