ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【汇编语言与计算机系统结构笔记11】程序格式与伪操作:段定义、堆栈 #简洁笔记形式

2021-06-22 16:05:32  阅读:269  来源: 互联网

标签:11 汇编 定义 tos 笔记 堆栈 源程序 asm


本次笔记内容:
14.程序格式与伪操作-1

注:本节课更换为一名女老师。我找到了对应内容的课件,请见我于GitHub的CS笔记仓库因此,为了节省时间,我只记录老师上课强调的内容与对应ppt页码。

注2:老的B站视频下架了,我找到了新资源,并且与老视频资源相同:清华大学 l 汇编语言与计算机系统(全·32课)

本节课对应幻灯片:汇编语言程序设计-程序格式,第1页起。

文章目录

P3 汇编程序的功能

源程序实际上是 .asm 的 ASC 机器码源程序,称为汇编源程序。

.asm 文件产生目标文件 .obj列表文件 .lst。列表文件也是一个文本,存储详细信息。

.asm 文件还可产生宏指令,后面专门有一种会讲“宏汇编”。其是一些基本指令的结合。

P4 伪操作(伪指令)

之所以叫“伪”,是与之前讲的“硬”指令相对应的。

伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。

P5 处理器选择伪操作

选择处理器。

比如很多汇编程序的开头,就是.386,功能是选择处理器。

P6 段定义伪操作

区分程序中的代码段、附加段、数据段等等。

code, data 不是关键字。注意有一行命令:

assume cs:code, ds:data, es:extra

告诉计算机,code 是代码段,data 是数据段,extra 是附加段。

P7 汇编源程序的其他形式

其中,有main proc far调用了一个子程序,并且为远调用(调用了不在这个模块中的程序),因此ret为远返回。

P8 带堆栈段的汇编源程序

dup 为重复的意思,在第一个堆栈段中,开辟了200个字节。tostop of stack,并非关键字,tos label word是伪指令,将一个字word赋给tos,并且label的意义为指向下一个要被赋予地址的地方,并且并不分配内存空间。在后面的赋值中,将这个指针tos指在堆栈栈顶外mov sp, offset tos(紧挨着堆栈),这样一旦压栈,就进入堆栈。

P9-10

tos位置如图。

即便如此定义堆栈段,系统还是警告没有堆栈段

老师举了个例子(做了个演示),但是我的 ppt 上没有。


如图,会提示没有堆栈段,为了解决这个问题,使用stack关键字:stack segment stack(后面的是关键字),有了这个关键字,也不需要手动为sssp赋初值了。

P11 C中定义数组

这页 ppt 显示了数组与其在堆栈段内存形式。

堆栈放入数据不一定通过压栈来进行,还可以通过寄存器等。

P12 完整段定义的格式

段名 SEGMENT [定位类型][组合类型][使用类型]['类别']
...
段名 ENDS

如 ppt ,在 SEGMENT 后其实有很多选项可选。

(1)定位类型段起始地址的条件;
(2)组合类型,如 STACK 等, STACK 把相同名称的堆栈段组合在一起,没有碎片;
(3)使用类型用“多少位”的形式;
(4)类别指,连接时具有相同类别的内容连接在一起。

接着,老师举了一个例子(做了个演示), ppt 上没有。

P13-14 例

组合程序由两段子程序组成:proadd1.asmproadd2.asm

在开头,声明还未建立起的调用子程序。在proadd2.asm中,定义了public proadd,供外部调用。

两个程序的数据段同名,则子程序2对1进行覆盖。

标签:11,汇编,定义,tos,笔记,堆栈,源程序,asm
来源: https://blog.51cto.com/u_15279775/2937858

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有