计算机体系原理(十五) 数据传送(仿制)指令详解
日期:2023-11-18 09:17:31   来源:云开平台/集团新闻

  上一章咱们已介绍了汇编语言的根底部分,包括数据格式、寄存器以及操作数的标识方法,接下来咱们就应该去认识一下汇编语言傍边的各个指令了。这些指令大多数都分外的简略,可是组合在一起却能模拟出咱们程序傍边想要的任何效果,确实是非常奇特的一件事。

  数据传送指令的意图是为了将一个数据从一个方位仿制到别的一个方位。既然如此,那么数据传送指令就会包括一个源操作数和一个意图操作数,指令会将原操作数的值仿制到意图操作数并掩盖。

  数据传送指令总共可分为五种,分别是mov、movs、movz、push以及pop,下面LZ顺次介绍一下这五个指令的效果。

  mov指令的效果是将源操作数S中的数据仿制到意图操作数D中,mov指令有一个数据格式和两个操作数,因而一般的方式为[movx S D]。其间x为数据格式,S为源操作数,D为意图操作数。

  movs指令的效果是将源操作数S中的数据做符号扩展后,再仿制到意图操作数D中,movs指令有两个数据格式和两个操作数,因而一般的方式为[movsxy S D]。其间x、y为数据格式,S为源操作数,D为意图操作数。其间x、y的组合总共有三种,分别是bw、bl、wl,这三个组合代表的意思分别是单字节到双字节,单字节到双字以及双字节到双字。

  movz指令的效果是将源操作数S做零扩展后,再仿制到意图操作数中。它与movs指令非常相似,也有两个数据格式和两个操作数,因而一般的方式为[movzxy S D]。其间x、y为数据格式,S为源操作数,D为意图操作数。其间x、y的组合总共有三种,分别是bw、bl、wl,这三个组合代表的意思分别是单字节到双字节,单字节到双字以及双字节到双字。

  push指令与上面的mov族指令有不一样,它的意图操作数被固定为栈顶,因而它的指令傍边无意图操作数。别的有一点必需求分外留意的是,它在进行仿制操作之前,需求移动栈顶指针(-4)。push指令的一般方式为[pushl S],其间l代表数据格式为双字,S为源操作数,意图操作数默以为栈顶。

  pop指令与push指令是做的相反的操作,一个是入栈一个是出栈。关于pop指令来讲,它的源操作数被固定为栈顶,相反,它会先进行仿制操作,然后再移动栈指针。pop指令的一般方式为[popl D],其间l代表数据格式为双字,D为意图操作数,源操作数默以为栈顶。