在boot.s汇编程一开始就定义了一个:
BOOTSEG = 0x07c0 !引导扇区(本程序)被BIOS加载到内存0x7c00处。

随后就定义了段间跳转指令:
jmpi  go,#BOOTSEG !段间跳转至0x7c0:go处。当本程序刚运行时所有段寄存器的值均为0。该跳转语句会把cs寄存器加载未0x70c(原为0)

后来又搜索了一下jmpi这个指令:

    jmpi为段间跳转指令
    执行这条指令之后

    CS = INITSEG

    IP = go

    也就是跳转到地址 INITSEG : go

但是我又对jmp后面的i不理解,不明白后面为什么带i,在网上搜索资料如下:

当同一指令对应于两种及两种以上的机器指令编码时,用以下的后缀予以区分  
i 操作数为 立即数      
a 操作数为 AH,AL,AX      
f FAR 仅用于跳转指令    
n NEAR 仅用于跳转指令    
s SHORT 仅用于跳转指令    
1 操作数为 01h 仅用于移位指令    
cl 操作数为 CL 仅用于移位指令    
dx 操作数为 DX,仅用于 IN 和 OUT    
m 操作数为 MEM      
r 操作数为 REG      
s 操作数为 SEGMENT REG    
w 操作数为 字节,仅用于 DEC
posted on 2015-06-09 16:43  暴走路人甲  阅读(150)  评论(0)    收藏  举报