mov ax,es
test ax,#0x0fff
jne die
为什么es和#0x0fff比较?
用int 0x13的02功能读盘(es:bx为读盘到内存的地址),移动system到0x10000处
那不就是应该是es和#0x1000比较吗
书上说es必须位于64kb边界?
http://blog.csdn.net/zengjingxiang/article/details/51519790
注意代码前面这样的说明:
! SYS_SIZE is the number of clicks (16 bytes) to be loaded.
! 0x3000 is 0x30000 bytes = 196kB, more than enough for current
! versions of linux
所以es代表的是节!64KB(0x10000)地址边界也就是4K节(0x1000)。
也就是说,es寄存器的低12为必须为0。
因此,正常情况下:test ax,#0x0fff结果必须为0。同时,ZF=1。不满足JNE跳转条件(ZF=0)。