第四章:第一个程序02
让编程改变世界
Change the world by program
源程序
标号
一个标号指代了一个地址。 codesg:放在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。程序的结构
任务:编程运算 2^3。 程序结构如下:段与段寄存器关联
定义一个段
实现处理任务
程序结束
汇编程序 [codesyntax lang="asm"]assume cs:abc abc segment mov ax,2 add ax,ax add ax,ax abc ends end[/codesyntax]
程序返回
我们的程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中,那么,它怎样得到运行呢? DOS中的程序运行 DOS是一个单任务操作系统。一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载入内存后,将CPU的控制权交给P2,P2才能得以运行。 P2开始运行后,P1暂停运行。而当P2运行完毕后,应该将CPU的控制权交还给使它得以运行的程序P1,此后,P1继续运行。 现在,我们知道,一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们称这个过程为:程序返回。 最后如何返回呢? 应该在程序的末尾添加返回的程序段。mov ax,4c00H
int 21H
这两条指令所实现的功能就是程序返回。几个和结束相关的内容
[caption id="attachment_308" align="aligncenter" width="300"] 几个和结束相关的内容[/caption]语法错误和逻辑错误
语法错误是指程序在编译时被编译器发现的错误,容易发现。 例如: [codesyntax lang="asm"]aume cs:abc abc segment mov ax,2 add ax,ax add ax,ax end[/codesyntax] 逻辑错误是程序在编译时不能表现出来的、在运行时发生的错误,不容易发现。 例如: [codesyntax lang="asm"]
assume cs:abc abc segment mov ax,2 add ax,ax add ax,ax mov ax,4c00H int 21H abc ends end[/codesyntax]
上机实践
一般来说,有两类错误使我们得不到所期望的目标文件:1. 我们程序中有“Severe Errors”;
2. 找不到所给出的源程序文件。