作者:嵌入式历练者
ID : Eterlove
记下相关笔记,记录我的学习生活!站在巨人的肩上Standing on Shoulders of Giants!
该文章为原创,转载请注明出处和作者:https://blog.csdn.net/Eterlove/article/details/120656471
目录
先来看下面一段节选的汇编语言源程序:
assume cs:codesg
codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21H
codesg ends
end
- 在汇编语言源程序,包括两种指令,一个是汇编指令,另一个就是伪指令
【!】汇编指令:编译之后有对应的机器所能识别的机器指令,最终能够被CPU所执行
【!】伪指令:没有对应的机器指令,最终不被CPU所执行,因为伪指令是由编译器来执行的指令,编译器通过伪指令来进行相关的编译工作。
1.先看伪指令segment和ends
XXX segment
.
.
.
XXX ends
- segment和ends是一对成对出现的伪指令,有头有尾,从不分离,这在写可被编译的汇编程序中,必须出现的伪指令。
- segment和ends的功能是定义一个段,segment定义段的开始,ends定义段的结束。一个段必须用一个名字来标识,格式:段名 segment.....段名 ends
- 一个汇编程序有多个段组成(至少要有一个段),这些段被用来存放代码,数据或当作栈空间来使用。
2.再看伪指令end
end
- end表示汇编程序的结束,它告诉编译器程序在这里结束,这与ends不同,ends表示一个段的结束,你可以这样理解ends="end segment"
3.浅谈伪指令assume
assume cs:段名
- assume英文表示“设想,假设”的意思。上面程序表示某段的寄存器(这里指cs)与某一个用segment和ends定义的段相关联,伪指令assume用来标识或说明这种关联。
4.注意的关键点
codesg segment
.
.
.
codesg ends
- 需要强调的是,汇编语言中还有一些标号,一个标号指代了一个地址,比如说“codesg”,它作为一个段的名称,这个段名通过编译,链接程序后最终将被处理为一个段的段地址。
5.用汇编语言来写一个2的三次方运算
assume cs:aaa(对这个程序,也不是非要写上assume)
aaa segment
mov bx,2
add ax,bx
add ax,ax
aaa ends
end
对基本汇编指令存在疑惑的伙伴,可以看看这个:汇编语言的那些事------学习闲谈(一)_Eterlove的博客-CSDN博客
人生就像一只储蓄罐,你投入的每一分努力都会在未来的某一天,回馈于你。而你所要做的,就是每天多努力一点点。请相信:别人拥有的,不必羡慕;只要努力,时间都会给你!
待更新!!!!