指命读入
比如内存中的程序是这样:mov ax 6622hjmp 1000:3
mov cx,ax
当前CS:IP指向mov ax 6622h 当这条指命被读入指命缓冲器中后IP+3 指向下一条指命jmp 1000:3
我想问CPU怎么知道一条指命有多长? 为什么它不是读入的mov ax 然后IP+2 指向6622h , 它是怎么判断一条指命的长度的?
jmp 1000:3
mov cx,ax
这断汇编被编译成机器码放在内存中是这样:B82266EA0300001089C1(16进制表示) 我要问的是CPU怎样判断第一条读进指命缓冲器的指命是B82266 而不是B822或是B82266EA 或是别的,它是怎么判断的? 这样的
B8这个机器码,代表mov ax
而mov ax这个操作,需要两个字节的源操作数
所以机器又向后读了两个字节,这样就是3个字节了
再比如
机器码EA表示成汇编指令就是jmp far ,这个指令后面需要4个字节,前两个字节是偏移量,后两个字节是段地址 这下明白了。。[em03] 谢谢版主不厌其烦的给我讲解。。。谢谢你 呵呵不客气,不过要说明下,我不是这个板块的版主,
其实我汇编也是初学,大概学了两个星期而已
页:
[1]
