- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何编写和汇编语言程序
可以用普通文本编辑器编辑汇编语言源程序。常用的有 MS-DOS 下的 EDIT 文本编辑程序, Windows 下的写字板( WORDPAD.EXE )等。用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为· ASM 。 软件运行基本环境
运行汇编程序必备的软件环境: DOS 操作系统;汇编系统。
汇编系统盘应包含如下文件:
MASM 宏汇编程序文件
LISK 连接程序文件
CRFF 索引程序文件(也可不用)
汇编源程序编写
1 )源程序的书写格式
当 CPU 访问内存时,是把存储器分成若干个段,通过 4 个段寄存器中存放的地址对内存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤ 64KB ,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式:
逻辑堆栈段 堆栈段名 SEGMENT STACK
用变量定义预置的堆栈空间
·
·
堆栈段名 ENDS
逻辑数据段 数据段名 SEGMENT
用变量定义预置的数据空间
·
·
数据段名 ENDS
逻辑代码段 代码段名 SEGMENT
ASSUME 定义各段寻址关系
过程名 PROC …
程序
·
·
过程名 ENDP
代码段名 ENDS
END 过程名或起始标号
在源程序中最少要有一个代码段,数据段根据需要可有可无,也可以增设附加段。对于堆栈段也可以根据需要可有可无,但在连接( LINK )时计算机将显示警告性的错误:
Warning : N STACK segment
There was 1 error detected.
在程序中如果没有用到堆栈时,该错误提示不影响程序的运行,如果程序中用到堆栈时必须设置堆栈段。
其中: SEGMENT 、 ASSUME 、 PROC … ENDP 为伪指令,伪指令是发给汇编程序 ASM 的,而不和微处理器打交道,在汇编时不产生目标代码,只是把源程序中各段的设置情况告诉汇编程序。 2 )段寄存器的段地址的装入
Assume 伪指令语句只是建立了当前段与段寄存器的联系,但不能把各段的段地址装入相应的段寄存器中,段寄存器的段地址的装入是在程序中完成的。
( 1 ) DS 、 ES 、 SS 的装入
由于段寄存器不能用立即数寻址方式直接传送,所以段地址装入可通过通用寄存器传送给段寄存器。
MOV AX ,逻辑段名
MOV 段寄存器, AX
其中逻辑段名为程序中定义各逻辑段的名字,(不包括代码段),段寄存器是指与各逻辑段相对应的各段寄存器( DS 、 ES 、 SS )。
( 2 ) CS 的装入
代码段寄存器是装当前执行目标代码的段地址, IP 是提供下一条要执行的目标代码的偏移量,为了保证程序的正确执行, CS 和 IP 装入新值时是一起完成的。
对 CS 和 IP 的装入有如下几种情况:
①根据用户程序中的伪指令 END 后的标号为 CS 和 IP 提供代码段的段地址和目标代码的偏移地址。
②在程序运行过程中,当执行某些指令和操作时, CPU 自动修改 CS 和 IP 的值,使它们指向新的代码段。 3 )程序中的数据与变量
在汇编源程序中的数据除了立即数,由指令产生的数和通过键盘输入的数以外,还胡大量的数据是通过伪指令语句进行预置和分配的,也就是在某逻辑段中(除代码段),将所需的数据以某种形式存放起来,在程序中可任意调用。在数据定义的同时还可以定义变量,将变量与数据结合在一起。可以为某个变量分配存储空间以便在程序执行过程中存放中间结果和最终结果,使用起来极为方便。 (1)变量与数据的定义
变量与数据的定义可以通过符号定义伪指令 EQU 、=和数据定义伪指令 DB 或 DW 或 DD 来实现。
EQU 和=可以出现在程序的逻辑段内也可出现在逻辑段外。 (2)汇编程序中数据的提供方法
①用数据定义伪指令提供数据
如果程序要求原始数据为一批数据时,用数据定义伪指令 DB 、 DW 和 DD 来提供较为方便。
②用立即数的形式提供数据
当原始数据只有几个时,一般用立即数的方法来提供。当然,用立即数的方法只是将一个数据传送到通用寄存器中,它只是通过通用寄存器传送数据。
③用编程的方法提供数据
假如原始数据是一组有规律的数据项,则用编程序的方法形成这一组数据,不用专门为这组数据分配存储单元,节省了存储空间。
④用键盘提供数据
当原始数据为任意数据时,一般用键盘输入方法,调用 DOS 21H 中断。 (3)数据的输出方式
①在显示器上显示一个字符
调用 02H 号功能调用号,发 21H 号中断,将要显示的字符的 ASCII 码送入 DL ,就可在显示
您可能关注的文档
- 弯矩和剪力图学案.doc
- 完成稿高效液相色谱学案.doc
- 趣味天文学——日食辩析.ppt
- 完璞医疗美容2016.4.25(公示版)学案.doc
- 完整版电力电子实验指导书学案.doc
- 趣味物理实验辩析.ppt
- 趣味英语Lesson1辩析.ppt
- 趣味知识竞赛1辩析.ppt
- 肾脏的排泄功能(人体解剖生理学)导论.ppt
- 权刚惠更斯原理波的反射与折射辩析.ppt
- 2025年新疆克拉玛依市单招语文测试题库完整.docx
- 2025年新疆师范高等专科学校单招(语文)测试模拟题库完美版.docx
- 2025年广西蓝天航空职业学院单招职业技能测试题库完美版.docx
- 2025年新疆工业职业技术学院单招职业适应性考试题库往年题考.docx
- 2025年庆阳职业技术学院单招综合素质考试题库推荐.docx
- 2025年无锡城市职业技术学院单招(语文)测试题库学生专用.docx
- 2025年新疆克孜勒苏柯尔克孜自治州单招语文测试模拟题库及完整答案一套.docx
- 2025年延安职业技术学院单招(语文)测试模拟题库新版.docx
- 2025年新疆轻工职业技术学院单招语文测试题库含答案.docx
- 2025年成都外国语学院单招(语文)测试模拟题库一套.docx
文档评论(0)