跳转指令:
jmpi 0,SETUPSEG //段间跳转到SETUPSEG:0000去执行
地址传送指令:
lea ignore_int,%edx //将ignore_int的有效地址->edx寄存器
lds si,[4*0x41] ! 取中断向量0x41的值,也即hd0参数表的地址ds:si
! 上面语句从内存指定位置处读取一个长指针值并放入ds和si寄存器中。ds中放段地址,si是
! 段内偏移地址。这里是把内存地址4 * 0x41 = 0x104处保存的4个字节(段和偏移值)读出。
les mem,r16 //r16←mem,ES←mem+2
lss mem,r16 //r16←mem,SS←mem+2
串操作指令:
stosb //字节串存储:ES:[DI]←AL,DI←DI+/-1
//将AL的内容存入由DI指定的附加段主存单元中,并根据DF修改DI寄存器
lodsb //和stosb相反,从esi 指向的源地址中逐一读取一个字符,送入AL 中(然后,可以先判断这个字符是什么字符,如0dh,0ah 之类等,再执行相应的操作)
scasb //把al中的值同di寻址到的内存中的字节比较,相等时zf=1,同样每执行一次DI加一
保护模式切换指令:
lmsw //设置CR0寄存器的PE位,程序进入保护模式
协处理器指令:
fstsw %ax //取协处理器状态字到ax中
movw !位于DS段的由SI所指出的存储单元的字节或字传送到位于ES段的由DI 所指出的存储单元,再修改SI和DI, 从而指向下一个元素.
算数指令:
div bl //除法指令,若是8位长度,商和余数分别放在al和ah,若是16位长度,商和余数分别放在ax和dx。执行指令前,将被除数放在ax中。
位操作指令:
btsl n,addr //使用btsl指令来把addr的第n(参数Bit)位拷贝到CF标志上,然后再把把addr的第n(参数Bit)位设置为1
bsfl oprd1,oprd2 //顺向位扫描(bit scan forward) 从右向左扫描字或双字操作数oprd2中第一个含"1"的位,并把扫描到的第一个含'1'的位的位号送操作数oprd1
阅读(1160) | 评论(0) | 转发(0) |