2.1 程序的机器级表示

本章将详细学习汇编语言,了解如何将c程序编译成这种形式的机器代码。

数据格式

各种数据类型大小如下

操作数指示符

大多数指令有一个或多个操作数,指示出执行一个操作中要使用的源数据值,以及放置结果的目的位置。各种操作数的可能性被分为三种,第一种是立即数,用来表示常数值,不同指令允许的立即数范围不同,汇编器会自动选择最紧凑的方式进行数值编码。第二种是寄存器,表示某个寄存器的内容。第三种是内存引用,他会根据计算出的地址访问某个内存位置。

数据传送指令

 操作数表示的通用性使得一条简单的数据传送指令能够完成在许多机器中要好几条不同指令才能完成的功能。源操作数指定的值是一个立即数,存储在寄存器或者内存中。目的操作数指定一个位置,是一个寄存器或者内存地址。

 压入和弹栈数据

我们知道栈是一个数据结构,可以添加或删除值,遵循“后进先出”的原则。

  push:把数据压入栈中,添加数据。

  pop:把数据移出栈,删除数据。注意移出的值总是最近被压入而仍然在栈中的值。

  栈可以实现为一个数组,总是从数组的一端插入或删除元素。而这一端称为栈顶,在 IA32 中,程序栈存放在存储器某个区域,如下图所示:

 

posted @ 2023-05-10 16:12  进击的胖虎  阅读(17)  评论(0)    收藏  举报