《汇编语言》总结01

(一)一个源程序从写出到执行的过程

  1. 编写汇编源程序
  2. 对源程序进行编译连接
  3. 执行可执行文件中的程序

操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关初始化(比如设置CS:IP指向第一条要执行的指令),然后由CPU执行程序。

(二)源程序

  1. 伪指令:在汇编中,包含两种指令,一种是汇编指令,一种是伪指令。汇编指令有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。而伪指令没有对应的机器指令,最终不被CPU所执行,那么谁来执行伪指令呢?伪指令是由编译器来执行的指令。segment和ends是一对成对的伪指令,这是在写可被编译的汇编程序时,必须要用到的一对伪指令。它的功能是定义一个段,segment说明一个段的开始,ends说明一个段结束,一个段必须有一个名称来标识。

    一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。
    end是一个汇编结束标记,编译器在编译汇编源程序中,如果碰到了伪指令end,就结束对源程序的编译,注意end和ends,ends是和segment成对使用的,标记一个段的结束,ends的含义可理解为"end segment"。我们这里的end的作用是标记整个程序的结束。

    assume这条伪指令的含义是"假设"。它假设某一段寄存器和程序中的某一个用segment...ends定义的段相关联。

  2. 源程序中的“程序”:简单点,源程序文件中的所有内容为源程序。
  3. 标号:一个标号代表一个地址。
  4. 程序返回:指令mov 4c00h  int 21h,这两条指令所实现的功能就是程序的返回
    目的 相关指令 指令性质 指令执行者
    通知编译器一个段结束 段名 ends 伪指令 编译时,由编译器执行
    通知编译器程序结束 end 伪指令 编译时,由编译器执行
    程序返回 mov ax,4c00h  int 21h 汇编指令 执行时,由CPU执行

(三)编译和连接

在编译时忽略列表文件(.LST)生成,交叉引用文件(.CRF)文件生成。

在连接时忽略映象文件(.MAP)生成,库文件(.LIB)文件生成,假如没链接到其他库的情况下

(四)程序执行过程的跟踪

DOS系统中.EXE文件的加载过程

  1. 找到一段起始地址为SA:0000(即起始地址的偏移地址为0)的容量足够的空闲内存区。
  2. 在这段内存区的前256个字节中,创建一个称为程序段前缀(PSP)的数据区,DOS要利用PSP来和被加载程序进行通讯。
  3. 从这段内存区的256个字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0。
  4. 将该内存区的段地址存入ds中,初始化其它相关寄存器后,设置CS:IP指向程序的入口。

总结完毕。

时间: 2025-02-01 04:42:22

《汇编语言》总结01的相关文章

汇编语言学习01

汇编语言(8086cpu) 恩,学习一门课程,我觉得应该有一定的条理性,而且自己要勤加思考才能学好,条理性:最好就是先整体的介绍一下全本书,然后再详细的介绍各个章节,而且,书籍的章节安排目录有一定的条理性,是渐进式的,前面的学习,为后面的内容做好了铺垫,打好了基础.不能随便排版(深入理解计算机系统是我读过数里面最好的) 读书教材:王爽的<汇编语言>教材比较好. 下面在阅读了三章以后写一下自己的收获. 汇编语言:基于底层的一门语言.在学习这本书时,学过计算机组成原理会对这本书的学习起到良好的作用

汇编语言基础 01

对于汇编程序员来说,寄存器是很基础的. 通用寄存器 AX BX CX DX 他们各可分为高位和低位 AH AL BH BL CH CL DH DL 几条汇编指令 mov ax,18 将18送入寄存器AX mov ah,78 将78送入寄存器AH add ax,8 将寄存器AX中数值加上8 mov ax,bx 将寄存器BX中的数据送入寄存器AX add ax,bx 将AX和BX中的数值相加,结果存在AX中 在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的 例如:mov ax,bl

揭开计算机的神秘面纱

写在前面的话:从接触电脑以来,就一直对电脑充满好奇.当电脑连接上电源,按下开机键,我们就可以做所有我们想做的事情,打游戏.写文章.看电影.搭建web服务器.自己写程序等等.随着接触电脑的时间越长,反而对电脑更加的陌生,不断的问自己,计算机到底是怎么组成的?为什么就能够实现这些功能?如果让我穿越回多少年前,该如何搭建一台电脑?恰好这几天读完这本书<code:the hidden Language of computer hardware and software>,确实一本好书,许多的疑惑得以解

我喜欢减肥我们来减肥吧

http://www.ebay.com/cln/honus.jyw4mvptb/cars/158313278016/2015.01.28.html http://www.ebay.com/cln/honus.jyw4mvptb/cars/158313282016/2015.01.28.html http://www.ebay.com/cln/honus.jyw4mvptb/cars/158313289016/2015.01.28.html http://www.ebay.com/cln/usli

百度回家看沙发沙发是减肥了卡斯加积分卡拉是减肥

http://www.ebay.com/cln/hpryu-caw8ke/cars/158056866019/2015.01.31 http://www.ebay.com/cln/xub.50x2l7cj/cars/158445650015/2015.01.31 http://www.ebay.com/cln/xub.50x2l7cj/cars/158445674015/2015.01.31 http://www.ebay.com/cln/xub.50x2l7cj/cars/1584456790

巢哑偕倥乇椭煞谙暗逞帕俸

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜. 据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow.Twitter.Reddit.IEEE Xplore.GitHub.CareerBuilder 等,对 48 种语言进行排行. 与其他排行榜不同的是,IEEE Spectrum 可以让读者自己选择参数组合时的权重,得到不同的排序结果.考虑到典型的 Spectrum 读者需求

我国第三代移动通信研究开发进展-尤肖虎200106

众所周知,数据科学是这几年才火起来的概念,而应运而生的数据科学家(data scientist)明显缺乏清晰的录取标准和工作内容.此次课程以<星际争霸II>回放文件分析为例,集中在IBM Cloud相关数据分析服务的应用.面对星际游戏爱好者希望提升技能的要求,我们使用IBM Data Science Experience中的jJupyter Notebooks来实现数据的可视化以及对数据进行深度分析,并最终存储到IBM Cloudant中.这是个介绍+动手实践的教程,参会者不仅将和讲师一起在线

pl/sql学习1——标量变量psahnh6S

为类型.不能用于表列的数据类型.范围为的子类型.自然数.为的子类型.具有约束为单精度浮点数.为变量赋值时.后面要加为双精度浮点数.为变量赋值时.后面要加.为数字总位数.为小数位数是的子类型.最大精度位是的子类型.最大精度位单精度浮点型是的子类型.最大精度位双精度浮点型定义精度为位的实数..定义为位的整数.变长字符串.最长测试变量数据!.定长字符串.最长测试变长二进制字符串物理存储的为类型...固定长度.个字节使用定义数据类型那个最小值:最大值:最小值:最大值:最小值:最大值:最小值:最大值:最小

汇编语言学习(基础知识)01

汇编语言(基础知识)01 1.  汇编语言得主体是汇编指令.汇编指令和机器指令的差别在于指令的表示方法上.汇编指令是机器指令便于记忆的书写格式. 2.  操作 机器指令 汇编指令 3.  汇编语言的组成: (1)       汇编指令:机器码的助记符,有对应的机器码. (2)       伪指令:没有对应的机器码,由编译器执行,计算机并不执行. (3)       其他符号:如+.-.*./等,有编译器识别,没有对应的机器码. 4.  存储器 cpu是计算机的核心部件,他控制整个计算机的运行并进