第三章 80x86指令系统
- 格式:pdf
- 大小:701.96 KB
- 文档页数:77
一、数据传送指令1、通用数据传送指令(1)MOV—传送指令MOV指令的机器语言可以有如下7中格式:①MOV mem/reg1, mem/reg2双操作数指令不允许两个操作数多使用寄存器, 因而两个操作数中必须有一个是寄存器。
这种方式不允许指定段寄存器。
②MOV reg,data其中reg指定寄存器, data为立印数,这种方式也不允许指定段寄存器。
③MOV ac,mem其中ac为累加器。
④MOV mem,ac⑤MOV segreg,mem/reg其中segreg指定段寄存器,但不允许使用CS寄存器。
此外,这条指令执行完后不影响中断,要等下一条指令执行完后才可能响应中断⑥MOV mem/reg,segreg⑦MOV mem/reg,这种方式的目的操作数只用存储器方式而不用寄存器方式。
注意:立印数不能直接送段寄存器。
MOV指令的目的操作数不允许用立即数方式,也不允许用CS寄存器,而且除源操作数为立即数的情况外,两个操作数中必须有一个是寄存器。
也就是说,不允许用MOV指令在两个存储单元之间直接传送数据。
此外, 也不允许在两个段寄存器之间直接传送信息。
还应该注意的是MOV指令不影响标志位。
(2)MOVSX—带符号扩展传送指令(386及其后继机型可用)①源操作数可以是8位或16位的寄存器或存储单元的内容,而亩的操作数必须为16位或32位寄存器,传送时把源操作数符号扩展送入目的寄存器。
②MOVSX指令不影响标志位。
(3)MOVZS—带零扩展传送指令(386及其后继机型可用)①有关源操作数和目的操作数以及对标志位的影响均和MOVSX相同。
②它们的差别只是MOVSX的源操作数是带符号数,所以作符合扩展;而MOVZX的源操作数应是无符号整数,所以作零扩展。
③MOVSX和MONZX指令与一般双操作数指令的差别是:一般双操作数指令的源操作数和目的操作数的长度是一致的,但MOVSX和MOVZX这两个指令的源操作数长度一定小于目的操作数的长度。