(五)assume、ends、segment、end、标号和返回

您所在的位置:网站首页 end指令是什么意思 (五)assume、ends、segment、end、标号和返回

(五)assume、ends、segment、end、标号和返回

2024-03-30 03:53| 来源: 网络整理| 查看: 265

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

 1)编写汇编程序。

 2)对源程序进行编译链接,生成可执行文件。

 3)执行可执行文件中的程序。

assume cs:codesg //假设 codesg是个代码段,所以将codesg和CPU的段寄存器cs联系起来。 codesg segment //segment 伪指令:定义一个段,段的名称为codesg,这个段从此开始 mov ax, 0123H mov bx, 0456H add ax, bx add ax, ax mov ax, 4c00H //返回的程序段 int 21H codesg ends //ends 伪指令:名称为codesg的段到此结束 end

伪指令是由编译器来执行的命令,编译器根据伪指令来进行相关的编译工作。

segment和ends

segment和ends是一对成对使用的伪指令,这是在写可被编译器编译的汇编程序时,必须要用到的一对伪指令。

segment 和 ends 的功能时定义一个段,segment 说明一个段开始,ends说明一个段结束。一个段必须有一个名称来标识,使用格式为:

段名 segment . . 段名 ends

一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。一个源程序中所有将被计算机所处理的信息:指令、数据、栈,被划分到了不同的段中。

一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。

end

end 是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译。程序写完了,要在结尾处加上伪指令 end。否则,编译器在编译程序时,无法知道程序在何处结束。

end的作用是标记整个程序的结束。

assume

assume伪指令的含义为“假设”。他假设某一段寄存器和程序中的某一个用segment..ends定义的段相关联。

asssume cs:codesg //假设 codesg是个代码段,所以将codesg和CPU的段寄存器cs联系起来。

assume将有特定用途的段和相关的段寄存器关联起来。

格式:

assume 段寄存器:要关联的segment..ends定义的段 源程序中的“程序”

用汇编语言写的源程序,包括伪指令和汇编指令,我们编程的最终目的是让计算机完成一定的任务。源程序中的汇编指令组成了最终由计算机执行的程序,而源程序中的伪指令是由编译器来处理的,它们并不实现我们编程的最终目的。这里所说的程序就是指源程序中最终由计算机执行、处理的指令或数据。

以后可以将源程序文件中的所有内容称为源程序,将源程序中最终由计算机执行、处理的指令或数据,称为程序。程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中。

标号

一个标号指代了一个地址。比如“codesg”就是一个标号。codesg在segment的前面,作为一个段的名称,这个段的名称最终将被编译、链接程序处理为一个段的地址。

程序的结构

源程序是由一些段构成的。我们可以在这些段中存放代码、数据、或将某个段当作栈空间。

任务:编程运算2^3。

 1)定义一个段,名称为abc。

abc segment . . abc ends

 2)在段中写入汇编指令实现功能,并指出程序在何处结束。

abc segment mov ax, 2 add ax, ax add ax, ax abc ends end

 3)abc被当作代码段来用,所以,应该将abc和cs联系起来。(完成)

assume cs:abc abc segment mov ax, 2 add ax, ax add ax, ax abc ends end 程序返回

一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载入内存后,将CPU的控制权交给P2,P2才能得以运行。P2开始运行后,P1暂停运行。当P2运行完毕后,应该将CPU的控制权交还给使他得以运行的程序P1,此后,P1继续运行。(单任务操作系统)

一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们称这个过程为:程序返回。

如何返回呢?应该在程序的末尾加上返回的程序段。

前面程序的程序返回指令:

mov ax, 4c00H int 21H

实现了程序返回功能。

通知编译器一个段结束 段名 ends 伪指令 编译时,由编译器执行 通知编译器程序结束 end 伪指令 编译时 由编译器执行 程序返回 mov ax, 4c00H int 21H 汇编指令 执行时,由CPU执行 夜来香 – 等你归来 Previous (四)栈、ss、sp、posh 和 pop 指令--汇编笔记 Next (七)[bx]、lea 和 Loop --汇编笔记


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3