1、mov指令
语法:mov <dest>,<source>
将<source>中的数据复制到<dest>中,同时该数据不会从<source>中移除。不能直接将数据从内存单元移到段寄存器中,必须使用通用寄存器作为中间跳板。
movsb (move string byte):以字节为传送单位,一次传送1个字节。
movsw (move string word):以字为传送单位,一次传送2个字节。
movsd (move string doubleword):以双字为传送单位,一次传送4个字节。
以上三个指令后面不跟<dest><source>,作用是将DS:ESI指向的数据传送到ES:EDI指向的位置。每传送一次,ecx中的内容会减少1。
此外,还要指定是正向传送还是反向传送,正向传送是指传送操作的方向是从内存区域的低地址端到高地址端;反向传送则相反。movsb、movsw、movsd每次正向传送,esi和edi会跟据传送的相应字节数增加1、2、4;反向传送则相应减少1、2、4。这样,esi和edi相当于指向了下一个将要传送的单元。
movzx(Move with Zero-Extend):用0扩展传送。语法:movzx <dest>,<source>
movsx(Move with Sign-Extend):扩展的比特取决于源操作数的符号位。语法:movsx <dest>,<source>
movzx和movsx的<dest>必须比<source>的位数要高,即当<dest>是16位的,则<source>只能是