汇编语言的那些事----------第一个程序(二)

作者:嵌入式历练者

ID : Eterlove

记下相关笔记,记录我的学习生活!站在巨人的肩上Standing on Shoulders of Giants!

该文章为原创,转载请注明出处和作者:https://blog.csdn.net/Eterlove/article/details/120656471

目录

1.先看伪指令segment和ends

2.再看伪指令end

3.浅谈伪指令assume

4.注意的关键点

5.用汇编语言来写一个2的三次方运算


先来看下面一段节选的汇编语言源程序:

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博客

人生就像一只储蓄罐,你投入的每一分努力都会在未来的某一天,回馈于你。而你所要做的,就是每天多努力一点点。请相信:别人拥有的,不必羡慕;只要努力,时间都会给你!

待更新!!!!

上一篇:接下里一年的学习计划(2021.10~2022.10)


下一篇:严恭敏老师PSINS工具箱解读——avperrset