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

学习汇编前你应该知道的知识4 汇编程序

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式

第四讲 汇编程序

4.1 汇编程序框架

data SEGMENT ''数据段,编程者可以把数据都放到这个段里
.数据部分
''数据格式是: 标识符 db/dw 数据。
data ENDS''数据段结束处。

edata SEGMENT ''附加数据段,编程者可以把数据都放到这个段里
.附加数据部分
edata ENDS''附加数据段结束处。

code SEGMENT''代码段,实际的程序都是放这个段里。
       ASSUME CS:code,DS:data,ES:edata ''告诉编译程序,data段是数据段DS,code段是代码段CS
start:MOV AX,data ''前面的start表示一个标识位,后面用到该位,如果用不到,就可以不加
       MOV DS,AX ''这一句与上一行共同组成把data赋值给DS。段寄存器.
       MOV AX,edata
       MOV ES,AX ''与前一句共同组成edata->ES
       .程序部分
       MOV AX,4C00h''程序退出,该句内存由下一行决定。退出时,要求ah必须是4c。
       INT 21h
code ENDS''代码段结束。
END start''整个程序结束,并且程序执行时由start那个位置开始执行。


上面就是一个程序的框架结构。在这个结构中,有三个段,DS,ES,CS。这三个段分别存数据,附加数据,代码段。

4.2 编写我们的Hello,world思路。
开始编写我们的第一个程序
程序要求:显示一个“Hello,Mr.286.”怎么样?
思路:
1 要显示一个字符串,根据前面我让你们记的七八个指令够吗?答案是:不仅够,而且还用不完。
首先定义一下总可以吧。

hellostr db ''Hello,Mr.286.

  • 上一篇资讯: Arm开发经验
  • 网学推荐

    免费论文

    原创论文

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

    2 首先要考虑的问题就是找中断,找到合适的中断,该中断就能帮我们完成这个显示任务。我找到(在哪找到的,怎么找到的,别问我,到网上或书上都能找到):
    -------------------------------------------
    中断INT 21H功能09H

    功能描述: 输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满
    入口参数: AH=09H
    DS:DX=待输出字符的地址
    说明:待显示的字符串以’contentrsquo;作为其结束标志
    出口参数: 无
    -------------------------------------------
    由上面看到,我们所需要作的就是把DS指向数据段,DX指向字符串的地址,AH等于9H,调用21h中断。
    mov ds,数据段地址
    lea dx,hellostr ''hellostr已在前面1中定义了。
    mov ah,9h
    int 21h。
    由于只要在调用int 21h之前把准备的东西准备齐就行了,所以int 21h前面三行的顺序并不重要。

    3 退出程序,运行完总要退出呀。再查中断手册
    --------------------------------------------
    中断INT 21H功能4CH

    功能描述: 终止程序的执行,并可返回一个代码
    入口参数: AH=4CH
    AL=返回的代码
    出口参数: 无

    --------------------------------------------
    mov ah,4Ch
    mov al,0
    int 21h

    mov ax,4c00h
    int 21h
    这里需要说明的是返回代码有什么用,返回给谁?返回给操作系统,因为是操作系统DOS调用的这个程序,这个返回值可以通过批处理中的errorlevel得到,这里不多说明,实际上操作系统很少处理这一值,因此al你随便写什么值影响都不大。

    4.3 程序实现
    data SEGMENT
    msg DB ''Hello, Mr.286.

    12345下一页
    点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: Arm开发经验
  • 下一篇资讯: 学习汇编前你应该知道的知识3 汇编指令
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

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

    code SEGMENT
           ASSUME CS:code,DS:data
    start:MOV AX,data
           MOV DS,AX
           lea dx,msg
           mov ah,9h
           int 21h
           MOV AX,4C00h
          

    12345下一页
    点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: Arm开发经验
  • 下一篇资讯: 学习汇编前你应该知道的知识3 汇编指令
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

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