Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43292
  • 博文数量: 12
  • 博客积分: 480
  • 博客等级: 下士
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-26 23:33
文章分类
文章存档

2010年(12)

我的朋友

分类: LINUX

2010-05-03 11:31:44

先给一个常用指令的链接:常用汇编指令
 
跳转指令:
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
阅读(1154) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~