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

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

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习汇编前你应该知道的知识4汇编程序.doc

第四讲汇编程序 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,程序退出,该句内存由下一行决定。退出时,要求oh必须是4c。 INT 21h code ENDS代码段结束。 END start*整个程序结束,并且程序执行时山start那个位置开始执行。 上面就是一个程序的框架结构。在这个结构屮,冇三个段,DS, ES, CSo这三个段分别存数据, 附加数据,代码段。 4. 2编写我们的Hello, world思路。 开始编写我们的第一个程序。 程序要求:显示一个“Hello, Mr. 286. ”怎么样? 思路: 1要显示一个字符串,根据丽面我让?你们记的七八个指令够吗?答案是:不仅够,而且还用不完。 首先定义一下总可以吧。 hellostr db Hello, Mr. 286. 最后的$不要忘了。 2首先要考虑的问题就是找中断,找到合适的屮断,该中断就能帮我们完成这个显示任务。我找 到(在哪找到的,怎么找到的,别问我,到网上或书上都能找到): 中断INT 21H功能09H 功能描述:输岀一个字符串到标准输出设备上。如果输岀操作被巫定向,那么,将无法判断磁 盘已满 入口参数:AH=09H DS:DX=待输出字符的地址 说明:待显示的字符串以$作为其结束标志 出口参数:无 山上而看到,我们所需要作的就是把DS指向数据段,DX指向字符串的地址,AH筹于9H,调用21h 中断。 mov ds,数据段地址 lea dx, hellostr * hellostr 已在前面 1 中定义了。 mov ah, 9h int 21ho 由于只要在调用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调用的 这个程序,这个返冋值可以通过批处理中的error level得到,这里不多说明,实际上操作系统 很少处理这一值,因此al你随便写什么值彩响都不大。 3程序实现 data SEGMENT msg DB Hello, Mr. 286. $ 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 INT 21h code ENDS END start 4.4编译运行。 把上面程序保存成hello286. asmjn,就可以编译运行了。进入DOS,进入汇编口录,如果还没 下载,到前面找下载地址。 E:\Download\Masmmasm hello286. asm Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. Object filename [hello286. OBJ]: Source listing [NUL. LST]: Cross-reference [NUL. CRF]: 50408 + 415320 Bytes symbol space free 0 Warning Errors 0 Severe Errors 说明:上面连续三个回车,表示我耍的都是默认值。下面是零个警告,零个严重错误,(当然了, 我的程序还敢错吗?) E:

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档