实验8为什么能正常结束
本帖最后由 你是空气 于 2016-8-29 09:44 编辑实验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: ;(ax)=jmp short s1指令对应的机器码EBF6 理解了
mov cs:,ax ; jmp short s1覆盖s处指令2条nop指令 理解了
s0: jmp shorts ; 这里不懂:程序的内存图在下面,我想问的是:根据s标号地址-ip自增后的地址=-16
s1: mov ax,0 ;也就是8h-18h=-16D,最后ip加上这个-16等于8,于是跳到s标号处执行被替换的jmp short s1指令对吗?然后继续执行的时,
int 21h ;根据si的标号减去ip的值,也就是20h-A=10啊,偏移地址是10,怎么能到的0呢?
mov ax,0 ;
s2: jmp short s1
nop
codesg ends
end start
而且,标号地址减去IP得到偏移地址;然后IP再加上这个偏移地址有什么意义?这和不减有什么区别?小甲鱼第九章1视频,我没看懂,因为那个图里的便宜地址变0他没有解释,直接就变FA了,一会儿再看看吧。求帮忙解决上面的问题 我明白了,看了下一节视频就懂了,感谢小甲鱼
页:
[1]