汇编语言超浓缩教程5
原创
©著作权归作者所有:来自51CTO博客作者kobeluan的原创作品,请联系作者获取转载授权,否则将追究法律责任
你是否觉得用编译器产生程序的方法,比 DEBUG 麻烦多了!以小程序而言,的确是如此,但对于较大的程序,你就会发现其优点了。我们再将ASCII程序以编译器方式再做一次,看看有无差异。首先,用EDIT.COM建立 ASCII.ASM 文件。
prognam segment ;定义段
assume cs:prognam ;把上面定义段的段基址放入 CS
mov cx,100h ; 装入循环次数
mov dl,0 ; 装入第一个ASCII码,随后每次循环装入新码
next: mov ah,2
int 21h
inc dl ;INC:递增指令,每次将数据寄存器 DL 内的数值加 1
loop next ; 循环指令,执行一次,CX减1,直到CX为0,循环停止
int 20h
prognam ends ;段终止
end ;汇编终止
在汇编语言的源程序中,每一个程序行都包含三项元素:
start: mov dl,1 ;装入第一个ASCII码,随后每次循环装入新码
标识符 表达式 注解
在原始文件中加上注解可使程序更易理解,便于以后参考。每行注解以“;”与程序行分离。编译器对注解不予理会,注解的数据不会出现在OBJ、EXE或COM文件中。由于我们在写源程序时,并不知道每一程序行的地址,所以必须以符号名称来代表相对地址,称为“标识符”。我们通常在适当行的适当位置上,键入标识符。标识符(label)最长可达31 个字节,因此我们在程序中,尽量以简洁的文字做为标识符。现在,你可以将此ASCII.ASM 文件编译成 ASCII.COM 了。1.MASM ASCII,2.LINK ASCII,3.EXE2BIN ASCII ASCII.COM。
注意:当你以编译器汇编你设计的程序时,常会发生打字错误、标识符名称拼错、十六进制数少了h、逻辑错误等。汇编老手常给新人的忠告是:最好料到自己所写的程序一定会有些错误(别人告诉我的);如果第一次执行程序后,就得到期望的结果,你最好还是在检查一遍,因
为它可能是错的。原则上,只要大体的逻辑架构正确,查找程序中错误的过程,与写程序本身相比甚至更有意思。写大程序时,最好能分成许多模块,如此可使程序本身的目的较单纯,易于撰写与查错,另外也可让程序中不同部份之间的界限较清楚,节省编译的时间。如果读程序有读不懂的地方最好用纸笔记下有关寄存器、内存等内容,在纸上慢慢比划,就豁然开朗了。 下面我们将写一个能从键盘取得一个十进制的数值,并将其转换成十六进制数值而显示于屏幕上的“大程序”。前言:要让8086执行这样的功能,我们必须先将此问题分解成一连串的步骤,称为程序规划。首先,以流程图的方式,来确保整个程序在逻辑上没有问题(不用说了吧!什么语言都要有此步骤)。这种模块化的规划方式,称之为“由上而下的程序规划”。而在真正写程序时,却是从最小的单位模块(子程序)开始,当每个模块都完成之后,再合并成大程序;这种大处著眼,小处著手的方式称为“由下而上的程序设计”。
上一篇:汇编语言超浓缩教程4
下一篇:汇编语言超浓缩教程6
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C语言内存管理(超详细)
详细结束了C语言动态内存分配的个函数以及常见错误分析
#include Test i++ -
C语言猜数字小游戏(超详细)
详细介绍了猜数字小游戏的一步步代码实现与详细讲解,以及随机数相关的知识
随机数 #include 时间戳 C语言 -
汇编语言超浓缩教程3
现在,我们再来剖析一个可以将所有ASCII码显示出来的程序。
职场 教程 休闲 汇编 -
汇编语言
用汇编语言程序设计的单片机课程设计
职场 语言 休闲 汇编 -
要掌握真正的免杀必须懂汇编---【汇编语言超浓缩教程】(转)
汇编教程
寄存器 子程序 编译器 十六进制 数据