地籍cad的lisp程序大集合_程序是怎样跑起来的 -- 通过汇编语言了解程序的实际构成(前篇)...

汇编语言中的程序段定义:构成程序的命令和数据的集合组

在高级编程语言的源代码中,即使指定和数据在编写时是分散的,编译后也会在段定义中集合汇总起来。

汇编语言和本地代码是一一对应的

通过调查本地代码的内容,可以了解程序最终是以何种形式来运行的。但是,直接打开地代码来看只是数据值的罗列。因此希望在各本地代码中,附带上表示其功能的英文单词缩写,即为助记符,使用这些助记符的编程语言称为汇编语言

不过,即使是用汇编语言编写的源代码,最终也必须转换成本地代码才能实现。这个转换程序就是汇编器

01dedacf6a637d69c87e0c867cc5895f.png

通过编译器输出汇编语言的源代码

除了将本地代码进行反汇编这一方法外,通过其他方式也可以获取汇编语言的源代码。大部分c语言编译器,都可以把利用c语言编写的源代码转换成汇编语言的源代码,而不是本地代码。

不会转换成本地代码的伪指令

汇编语言的源代码,是由转换成本地代码的指令和针对汇编器的伙指令构成的。伪指令负责把程序的构造及汇编的方法指示给汇编器。伪指令本身是无法汇编转换成本地代码的。

由伪指令 segment 和 ends 围起来的部分,是给构成程序的命令和数据的集合体加上一个名字而得到的,称为段定义。段定义是一个连续的内存空间。段定义指的是命令和数据等程序的集合体的意思。一个程序由多个段定义构成。

06f08353663c297613ce8062d85e1670.png

汇编语言的语法是“操作码 + 操作数”

在汇编语言中,1行表示对CPU的一个指令。汇编语言指令的语法结构是操作码 + 操作数(也存在只有操作码,没有操作数的)。

能够使用何种形式的操作码,是由CPU的种类来决定的。

本地代码加载到内存后才能运行。内存中存储着构成本地代码的指令和数据。程序运行时,CPU会从内存中把指令和数据读出,然后再将其存储在CPU内部的寄存器中进行处理。

2d52036477deeeaef9d6053826e8bffd.png

最常用的mov指令

指令中最常使用的是对寄存器和内存进行数据存储的mov指令。mov指令的两个操作数,分别用来指定数据的存储地读出源

对栈进行push和pop

程序运行时,会在内存上申请分配一个称为栈的数据空间。数据在存储时是从内存的下层(大的地址编号)逐渐往上层(小的地址编号)累积,读出时则是按照从上往下的顺利进行。

栈是存储临时数据的区域,它的特点是通过push指令和pop指令进行数据的存储和读出。

下一篇说说函数方面的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值