找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5555|回复: 16
收起左侧

单片机汇编语言代码前面带点的是什么指令?

[复制链接]
ID:437959 发表于 2018-12-7 22:17 | 显示全部楼层 |阅读模式
如所截图代码段
1.jpg 这些带点的是什么意思?
  1. .MODEL SMALL        
  2. .8086      ;1
  3. .stack      ;2
  4. .code       ;3
  5. .startup    ;4
复制代码




回复

使用道具 举报

ID:440519 发表于 2018-12-8 03:01 | 显示全部楼层
规定的格式,用于说明该程序编译连接生成 .exe 程序
回复

使用道具 举报

ID:441956 发表于 2018-12-8 09:23 | 显示全部楼层
这是提供给编译器的指令
表示编译生成的代码大小,比如SMALL模式PC指针好像就是16位的,最大65535
其它的带点的表示比如8086指令集 是STACK段 还是DATA段 等等
回复

使用道具 举报

ID:436057 发表于 2018-12-8 10:56 | 显示全部楼层
确定是汇编吗
回复

使用道具 举报

ID:123289 发表于 2018-12-8 13:34 | 显示全部楼层
可以认为是:伪指令。没有一个是真正意义上的汇编。
说明楼主对汇编不太了解。
回复

使用道具 举报

ID:437959 发表于 2018-12-8 15:06 | 显示全部楼层
east_shen 发表于 2018-12-8 03:01
规定的格式,用于说明该程序编译连接生成 .exe 程序

编译生成exe程序文件不是由编译软件决定的吗?没有这些段代码由masm和link也可以生成.exe
回复

使用道具 举报

ID:437959 发表于 2018-12-8 15:07 | 显示全部楼层

是一个汇编程序的前几条代码
回复

使用道具 举报

ID:437959 发表于 2018-12-8 15:08 | 显示全部楼层
yzwzfyz 发表于 2018-12-8 13:34
可以认为是:伪指令。没有一个是真正意义上的汇编。
说明楼主对汇编不太了解。

嗯嗯,初学汇编,还不是太会。请问这几条伪指令是起到什么作用?谢谢
回复

使用道具 举报

ID:437959 发表于 2018-12-8 15:13 | 显示全部楼层
doghouse 发表于 2018-12-8 09:23
这是提供给编译器的指令
表示编译生成的代码大小,比如SMALL模式PC指针好像就是16位的,最大65535
其它的 ...

如果我如果删掉这几条有何区别?
回复

使用道具 举报

ID:123289 发表于 2018-12-9 10:18 | 显示全部楼层
1、所有的单片机包括计算机的CPU,都得只认识机器码(0和1的二进制串)!!!这是学计算机必须认知的基础。
2、单片机的每条指令的机器码串是不便理解的,例如:“00010100”它是什么意思呢?
在51系统中,它是将A寄存器减1,于是就用一句宜懂的:“DEC A”语句代替“00010100”,“DEC  A”就是一句汇编语言。
3、汇编语言的特点是,每一句都对应一个或一串机器码!
4、由于计算机只认识机器码,并不认识汇编语言,所以程序运行前,需要有“人”做翻译,翻译成机器码,这就叫着汇编。
由于汇编语言的每一句都对应一个或一串机器码!所以汇编的翻译很方便。
这个做翻译的“人”当然让一个平台(程序)来完成了,如:KELL!
5、如果“平台”仅仅只做一个对应,也就太简单了,查个对应表就可以了,傻子也能行。
人们在写汇编程序时也总有一些更高级的想法。例如:程序中20个地方会用到“45”这个参数,但有也可能需将它改为“33”,
这对汇编来说很麻烦,要改20个地方。考虑到“平台”这个翻译功能很强大,于是就让“平台”来干这个活,但你总要告诉平台你的意图吧。
你是想用:XYZ来代替20个“45”,于是写程序时就将20处“45”写成“XYZ”,再写一句“XYZ   EQU  45”来告诉“平台”翻译的时候所有的有“XYZ”的地方翻译成“45”,
这样如果你要将“45”改为“33”,你只要改一处地方就行了,就是“XYZ   EQU  33”,余下的事让“平台”去做!
这个语句是违反汇编原则的,它不对应任何一个机器码,不能直接反汇编,但它很有用,是通过“平台”起作用的。
这就是伪指令!伪指令是不能直接反汇编的,它是需要通过“平台”来翻译程序员的目的,它是针对“平台”的。
所以,一条“伪指令”是什么意义,只有“平台”这个翻译知道,如果平台是“KELL”就必须看“KELL”使用说明,这样就能弄清楚“伪指令”的含义了!
记住:所有的、最终的目的都将程序员写的程序,变成计算机所能认识的机器。

更有甚哉!为了发恢平台的强大智能,将整段整段的汇编语言组合在一起,用一句话一个语句来表示,甚至都看不到汇编的影子了,这就是C语言。
更有高招!将整段整段的C组合在一起,用一句话来表示,这就是高级语言,如VB、JAVA等……。
但无如何,要使计算机能运行,翻译成“机器码”,这是根本!
回复

使用道具 举报

ID:123289 发表于 2018-12-9 10:30 | 显示全部楼层
未见识过,我来猜猜
.MODEL SMALL:告诉平台按小系统来做存储器的规划        
.8086             :告诉平台按8086的指令系统来翻译机器码
.stack             :告诉平台堆栈的规划定义
.code             :告诉平台使用的代码字串
.startup          :告诉平台初始化的部分
以上不一定对,真的是未用过,瞎猜的。
你可以打开这些文件详细看看。
回复

使用道具 举报

ID:437959 发表于 2018-12-9 15:11 | 显示全部楼层
yzwzfyz 发表于 2018-12-9 10:30
未见识过,我来猜猜
.MODEL SMALL:告诉平台按小系统来做存储器的规划        
.8086             :告诉 ...

谢谢指点
回复

使用道具 举报

ID:442691 发表于 2018-12-9 16:02 | 显示全部楼层
代表接口定义吧
回复

使用道具 举报

ID:981034 发表于 2022-1-23 10:40 | 显示全部楼层
伪指令就是空耗捱时间
回复

使用道具 举报

ID:879809 发表于 2022-1-23 15:24 | 显示全部楼层
伪指令绝不是空耗时间,不懂装懂可以退下了。

伪指令不会编译成机器码,但是可以告诉编译器如何把有效指令编译成汇编码,11楼已经说明了。
回复

使用道具 举报

ID:453974 发表于 2022-1-24 09:31 | 显示全部楼层
那貌似是软件自己生成的吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表