[计算机硬件及网络]微机原理与接口技术汇编语言程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
格式为: 段名 SEGMENT ……… 段内容 ………
段名 ENDS 伪指令ASSUME告诉汇编程序,哪一个段是数据段,哪一 个段是堆栈段,哪一个段是代码段。 格式为: ASSUME 段寄存器:段名<,段寄存器:段名>
源程序结束伪指令 END
一个标准汇编语言源程序结构如下:
数据段名 SEGMENT
汇编语句语句格式
指令性语句的格式如下:
<标识符:> 指令助记符 目标操作数 <,源操作数> <;注释>
START: MOV AX,1090H
;将16进制数1090H送入AX
INC BX
指示性语句的格式如下:
<标识符> 伪指令助记符 <操作数1,操作数2…> <;注释>
CR DB ODH
;在字节单元CR处存放数据0DH
汇编语言的编译过程
1)用文本编辑器编写符合汇编格式的程序,并将文件的扩展 名命名为.ASM,该文件称为汇编源程序。 2)利用汇编程序(MASM.EXE)将汇编源程序翻译成计算机可以 识别和运行的扩展名为.OBJ二进制目标程序。 3)利用链接程序(LINK.EXE)将目标文件进行地址重定位、目 标程序组合等过程,产生用户可以执行的扩展名为.EXE的可运 行程序。
………
数据段内容
………
数据段名 ENDS
堆栈段名 SEGMENT ………
堆栈段内容 ………
注意:各个段的名称可以任意起,一般 把数据段的段名记做DATA,堆栈段的段 名记做STACK,代码段的段名记做CODE。
堆栈段名 ENDS
代码段名 SEGMENT
ASSUME CS:代码段名, DS:数据段名, SS:堆栈段名
;定义段 ;把上面定义段的段基址放入 CS ;装入循环次数 ;装入第一个ASCII码
;每次将数据寄存器DL内的数值加1 ;执行一次,CX减1,直到CX为0. ;终止当前程序并返回调用程序 ;返回DOS ;段结束 ;汇编程序结束
编译工具MASM的使用
MASM是专门为汇编语言设计的一种集编译、链接 为一体的工具,它是利用文本编辑器(EDIT等)将汇 编指令按照规范格式建成一个独立且扩展名为.ASM的 汇编程序,称源程序。编译程序MASM将输入的ASM文 件,编译成.OBJ文件,称为目标程序。OBJ文件仅包 含有关程序各部分要载入何处及如何与其他程序合并 的信息,无法直接载入内存执行。链接程序LINK则可 将OBJ文件转换成可载入内存执行的EXE文件。
汇编源文件 .ASM
汇编 MASM.EXE
目标程序 .OBJ
链接 LINK.EXE
可执行程序 .EXE
汇编语言语句类型
指令性语句
一条指令性语句就是一条8086的指令,例如 ADD AL,BL和 MOV CX,1000;每一条指令性语句都会在汇编过程中产生相应 的目标代码。
指示性语句
指示性语句又称为伪指令,例如 SEGMENT和ABC DB 50H。 伪指令用来为汇编程序提供某些信息,让汇编程序在汇编的过 程中执行特定功能的信息,比如规定一个数据段从哪里开始到 哪里结束等。每一条伪指令在汇编的过程中都不会产生相应的 目标代码。
段,所以错误信息并不
←“no stack segment”
影响程序正常执行。
DEBUG和MASM的区别
DEBUG是调试器,它的主要用途在于除错,能够 观察每条汇编语句运行后的结果,方便的修正汇编 程序中的错误。DEBUG中必须使用16进制的数。
MASM是一种编译器,它能将汇编源程序进行编 译、链接形成可执行文件,但汇编程序必须使用规 范书写方式,源程序中除了指令性语句,还必须加 入许多与指令语句无关的指示性语句,以供编译器 识别。 MASM中的数据默认为10进制。
………
代码段内容
………
代码段名 ENDS
END
规范程序示例:
CODE SEGMENT ASSUME CS:CODE MOV CX,100H MOV DL,0
NEXT: MOV AH,02 INT 21H INC DL LOOP NEXT MOV AH,4CH INT 21H
CODE ENDS END
第4章 汇编语言程序设计
本章重点
掌握汇编语言程序的规范格式 掌握汇编语言程序设计的基本方法
-顺序程序设计 -循环程序设计 -选择程序设计 -子程序设计
了解汇编语言与高级语言的接口
4.1 汇编语言设计概述
汇编语言的特点
8086系统常用的汇编语言称为ASM-86,汇编语言的有如下 的特点: 1)汇编语言可以让我们从根本上了解计算机的工作原理,清晰 的跟踪计算机的工作过程。 2)计算机系统中,某些功能程序仍然用汇编语言来实现,比如 机器自检、输入输出驱动程序。 3)汇编语言书写的程序目标代码占用的内存空间少、执行速度 快、效率高、实时性强。 4)汇编语言可以直接调用系统中断,方便用户使用资源。
ORG 200H
;目标程序的偏移量
DATA SEGMENT
;数据段开始
指令性语句和指示性语句的最大区别就是指示性 语句在标识符和伪指令助记符没有冒号
4.2 汇编语言程序结构
段定义伪指令SEGMENT、ENDS、ASSUME
伪指令SEGMENT和ENDS总是成对出现。SEGMENT用来定义 段开始,ENDS是来定义段结束。这一段伪指令可以将源程序 分为几个段,通常为数据段,堆栈段和代码段。
利用MASM编译、链接汇编程序的步骤如下:
(1) 用EDIT编辑一个扩张名为ASM的源程序文件。例如:smile.asm
(2) DOS窗口的命令提示符下输入:MASM SMILE ←不用打入附加名.ASM。
50162 + 403867 Bytes symbol space free
wk.baidu.com
0 Warning Errors ←警告错误,表示编译器对某些语句不理解,通常
是输入错误。
0 Severe Errors ←严重错误,会造成程序无法执行,通常是语法结
构错误。
如果没有一个错误存在,即可生成OBJ文件。
(3) DOS窗口的命令提示符下输入: LINK SMILE← 不用附加名OBJ
LINK : warning L4021: no stack segment← 由于COM文件不使用堆栈
除了MASM外,还有TASM等工具软件也能对规范 格式的汇编语言进行编译
段名 ENDS 伪指令ASSUME告诉汇编程序,哪一个段是数据段,哪一 个段是堆栈段,哪一个段是代码段。 格式为: ASSUME 段寄存器:段名<,段寄存器:段名>
源程序结束伪指令 END
一个标准汇编语言源程序结构如下:
数据段名 SEGMENT
汇编语句语句格式
指令性语句的格式如下:
<标识符:> 指令助记符 目标操作数 <,源操作数> <;注释>
START: MOV AX,1090H
;将16进制数1090H送入AX
INC BX
指示性语句的格式如下:
<标识符> 伪指令助记符 <操作数1,操作数2…> <;注释>
CR DB ODH
;在字节单元CR处存放数据0DH
汇编语言的编译过程
1)用文本编辑器编写符合汇编格式的程序,并将文件的扩展 名命名为.ASM,该文件称为汇编源程序。 2)利用汇编程序(MASM.EXE)将汇编源程序翻译成计算机可以 识别和运行的扩展名为.OBJ二进制目标程序。 3)利用链接程序(LINK.EXE)将目标文件进行地址重定位、目 标程序组合等过程,产生用户可以执行的扩展名为.EXE的可运 行程序。
………
数据段内容
………
数据段名 ENDS
堆栈段名 SEGMENT ………
堆栈段内容 ………
注意:各个段的名称可以任意起,一般 把数据段的段名记做DATA,堆栈段的段 名记做STACK,代码段的段名记做CODE。
堆栈段名 ENDS
代码段名 SEGMENT
ASSUME CS:代码段名, DS:数据段名, SS:堆栈段名
;定义段 ;把上面定义段的段基址放入 CS ;装入循环次数 ;装入第一个ASCII码
;每次将数据寄存器DL内的数值加1 ;执行一次,CX减1,直到CX为0. ;终止当前程序并返回调用程序 ;返回DOS ;段结束 ;汇编程序结束
编译工具MASM的使用
MASM是专门为汇编语言设计的一种集编译、链接 为一体的工具,它是利用文本编辑器(EDIT等)将汇 编指令按照规范格式建成一个独立且扩展名为.ASM的 汇编程序,称源程序。编译程序MASM将输入的ASM文 件,编译成.OBJ文件,称为目标程序。OBJ文件仅包 含有关程序各部分要载入何处及如何与其他程序合并 的信息,无法直接载入内存执行。链接程序LINK则可 将OBJ文件转换成可载入内存执行的EXE文件。
汇编源文件 .ASM
汇编 MASM.EXE
目标程序 .OBJ
链接 LINK.EXE
可执行程序 .EXE
汇编语言语句类型
指令性语句
一条指令性语句就是一条8086的指令,例如 ADD AL,BL和 MOV CX,1000;每一条指令性语句都会在汇编过程中产生相应 的目标代码。
指示性语句
指示性语句又称为伪指令,例如 SEGMENT和ABC DB 50H。 伪指令用来为汇编程序提供某些信息,让汇编程序在汇编的过 程中执行特定功能的信息,比如规定一个数据段从哪里开始到 哪里结束等。每一条伪指令在汇编的过程中都不会产生相应的 目标代码。
段,所以错误信息并不
←“no stack segment”
影响程序正常执行。
DEBUG和MASM的区别
DEBUG是调试器,它的主要用途在于除错,能够 观察每条汇编语句运行后的结果,方便的修正汇编 程序中的错误。DEBUG中必须使用16进制的数。
MASM是一种编译器,它能将汇编源程序进行编 译、链接形成可执行文件,但汇编程序必须使用规 范书写方式,源程序中除了指令性语句,还必须加 入许多与指令语句无关的指示性语句,以供编译器 识别。 MASM中的数据默认为10进制。
………
代码段内容
………
代码段名 ENDS
END
规范程序示例:
CODE SEGMENT ASSUME CS:CODE MOV CX,100H MOV DL,0
NEXT: MOV AH,02 INT 21H INC DL LOOP NEXT MOV AH,4CH INT 21H
CODE ENDS END
第4章 汇编语言程序设计
本章重点
掌握汇编语言程序的规范格式 掌握汇编语言程序设计的基本方法
-顺序程序设计 -循环程序设计 -选择程序设计 -子程序设计
了解汇编语言与高级语言的接口
4.1 汇编语言设计概述
汇编语言的特点
8086系统常用的汇编语言称为ASM-86,汇编语言的有如下 的特点: 1)汇编语言可以让我们从根本上了解计算机的工作原理,清晰 的跟踪计算机的工作过程。 2)计算机系统中,某些功能程序仍然用汇编语言来实现,比如 机器自检、输入输出驱动程序。 3)汇编语言书写的程序目标代码占用的内存空间少、执行速度 快、效率高、实时性强。 4)汇编语言可以直接调用系统中断,方便用户使用资源。
ORG 200H
;目标程序的偏移量
DATA SEGMENT
;数据段开始
指令性语句和指示性语句的最大区别就是指示性 语句在标识符和伪指令助记符没有冒号
4.2 汇编语言程序结构
段定义伪指令SEGMENT、ENDS、ASSUME
伪指令SEGMENT和ENDS总是成对出现。SEGMENT用来定义 段开始,ENDS是来定义段结束。这一段伪指令可以将源程序 分为几个段,通常为数据段,堆栈段和代码段。
利用MASM编译、链接汇编程序的步骤如下:
(1) 用EDIT编辑一个扩张名为ASM的源程序文件。例如:smile.asm
(2) DOS窗口的命令提示符下输入:MASM SMILE ←不用打入附加名.ASM。
50162 + 403867 Bytes symbol space free
wk.baidu.com
0 Warning Errors ←警告错误,表示编译器对某些语句不理解,通常
是输入错误。
0 Severe Errors ←严重错误,会造成程序无法执行,通常是语法结
构错误。
如果没有一个错误存在,即可生成OBJ文件。
(3) DOS窗口的命令提示符下输入: LINK SMILE← 不用附加名OBJ
LINK : warning L4021: no stack segment← 由于COM文件不使用堆栈
除了MASM外,还有TASM等工具软件也能对规范 格式的汇编语言进行编译