第一个程序02 – 零基础入门学习汇编语言21

第四章:第一个程序02

让编程改变世界

Change the world by program

源程序

标号

一个标号指代了一个地址。

codesg:放在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。

程序的结构

任务:编程运算 2^3。

程序结构如下:

段与段寄存器关联

定义一个段

实现处理任务

程序结束

汇编程序

assume cs:abc

abc segment

    mov ax,2

    add ax,ax

    add ax,ax

abc ends

end

程序返回

我们的程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中,那么,它怎样得到运行呢?

DOS中的程序运行

DOS是一个单任务操作系统。一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载入内存后,将CPU的控制权交给P2,P2才能得以运行。

P2开始运行后,P1暂停运行。而当P2运行完毕后,应该将CPU的控制权交还给使它得以运行的程序P1,此后,P1继续运行。

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

最后如何返回呢?

应该在程序的末尾添加返回的程序段。

mov ax,4c00H

int 21H

这两条指令所实现的功能就是程序返回。

几个和结束相关的内容

宽客网,量化投资,宽客俱乐部

几个和结束相关的内容

语法错误和逻辑错误

语法错误是指程序在编译时被编译器发现的错误,容易发现。

例如:

aume cs:abc

abc segment

    mov ax,2

    add ax,ax

    add ax,ax

end

逻辑错误是程序在编译时不能表现出来的、在运行时发生的错误,不容易发现。

例如:

assume cs:abc

abc segment

   mov ax,2

   add ax,ax

   add ax,ax

   mov ax,4c00H

   int 21H

abc ends

end

上机实践

一般来说,有两类错误使我们得不到所期望的目标文件:

  1. 我们程序中有“Severe Errors”;
  2. 找不到所给出的源程序文件。

1.exe的执行

我们的程序没有像显示器输出任何信息。程序只是做了一些将数据送入寄存器和加法的操作,而这些事情,我们不可能从显示屏上看出来。

程序执行完成后,返回,屏幕上再次出现操作系统的提示符。

关于编译和链接

编译连和接的作用是什么呢?

连接的作用有以下几个:

当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,生成一个可执行文件;

程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;

一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这此内容处理为最终的可执行信息。

所以,在只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也必须用连接程序对目标文件进行处理,生成可执行文件。

注意,对于连接的过程,可执行文件是我们要得到的最终结果。

这里再次强调一下,我们学习汇编的主要目的,就是通过用汇编语言进行编程而深入地理解计算机底层的基本工作机理,达到可以随心所欲地控制计算机的目的。

我们用汇编语言编程,就要用到编辑器(Edit)、编译器(masm)、连接器(link)、调试工具(debug)等所有工具,而这些工具都是在操作系统之上运行的程序,所以我们的学习过程必须在操作系统的环境中进行。

视频下载
技术, IT技术, 汇编语言, 视频教程


风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部