当前位置: 网学 > 编程文档 > 汇编语言 > 正文

汇编语言超浓缩教程

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
FD 0B C0 75-09 8B 5E FE 8B 47 0C E8 .u..^..G..

  现在,我们来剖析另一个程序:由键盘输入任意字符串,然后显示出来。db 20指示DEBUG保留20h个未用的内存空间供缓冲区使用。
   输入A100
   MOV DX,0116 ;DS:DX = 缓冲区地址,由DB伪指令确定缓冲区地址
   MOV AH,0A ;0Ah 号功能调用
   INT 21 ;键盘输入缓冲区
   MOV DL,0A ;由于功能Ah在每个字符串最后加一个归位码(0Dh由 Enter
   MOV AH,02 ;产生),使光标自动回到输入行的最前端,为了使新输出的
   INT 21 ;字符串不会盖掉原来输入的字符串,所以利用功能2h加一
   ;个换行码(OAh),使得光标移到下一行的的最前端。
   MOV DX,0118 ;装入字符串的起始位置
   MOV AH,09 ;9h功能遇到$符号才会停止输出,故字符串最后必须加上
   INT 21 ;$,否则9h功能会继续将内存中的无用数据胡乱显示出来
   INT 20
   DB 20 ;定义缓冲区
   送你一句话:学汇编切忌心浮气燥。

  客套话就不讲了。工欲善其事,必先利其器。与其说DEBUG 是编译器,倒不如说它是“直译器”,DEBUG的A命令只可将一行汇编指令转成机器语言,且立刻执行。真正编译器(MASM)的运作是利用文本编辑器(EDIT等)将汇编指令建成一个独立且附加名为.ASM的文本文件,称源程序。它是MASM 程序的输入部分。MASM将输入的ASM文件,编译成.OBJ文件,称为目标程序。OBJ文件仅包含有关程序各部份要载入何处及如何与其他程序合并的信息,无法直接载入内存执行。链结程序LINK则可将OBJ文件转换成可载入内存执行(EXEcute)的EXE文件。还可以用EXE2BIN,将符合条件的EXE文件转成COM文件(COM 文件不但占用的内存最少,而且运行速度最快)。
   下面我们用MASM写一个与用DEBUG写的第一个程序功能一样的程序。
   用EDIT编辑一个SMILE.ASM的源程序文件。
   源程序 DEBUG 程序
   prognam segment
   assume cs:prognam
   org 100h A100
   mov dl,1 mov dl,1
   mov ah,2 mov ah,2
   int 21h int 21
   int 20h int 20
   prognam ends
   end

  比较一下:1.因为MASM会将所有的数值假设为十进制,而DEBUG则只使用十六进制,所以在源程序中,我们必须在有关数字后加上代表进制的字母,如H代表十六进制,D代表十进制。若是以字母开头的十六进制数字,还必须在字母前加个0,以表示它是数,如0AH。2.源程序增加五行叙述:prognam segment 与 prognam ends 是成对的,用来告诉 MASM 及LINK,此程序将放在一个称为PROGNAM(PROGram NAMe)的程序段内,其中段名(PROGNAM)可以任取,但其位置必须固定。assume cs:prognam 必须在程序的开头,用来告诉编译器此程序所在段的位置放在CS寄存器中。end用来告诉MASM,程序到此结束, ORG 100H作用相当于DEBUG的A100,从偏移量100开始汇编。COM 文件的所有源程序都必须包含这五行,且必须依相同的次序及位置出现,这点东西记下就行,千篇一律。接着,我们用MASM编译SMILE.ASM。
   输入 MASM SMILE ←不用打入附加名.ASM。
   Microsoft (R) Macro Assembler Version 5.10
   Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.
   Object filename [SMILE.OBJ]: ←是否改动输出OBJ文件名,如不改就ENTER
   Source listing [NUL.LST]: ← 是否需要列表文件(LST),不需要就ENTER
   Cross-reference [NUL.CRF]: ←是否需要对照文件(CRF),不需要则ENTER
   50162 + 403867 Bytes symbol space free
   0 Warning Errors ←警告错误,表示编译器对某些语句不理解,通常是输入错误。
   0 Severe Errors ←严重错误,会造成程序无法执行,通常是语法结构错误。

  如果没有一个错误存在,

  • 上一篇资讯: 如何学习汇编语言
  • 下一篇资讯: Linux下的汇编程序设计
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号