+伪指令及汇编语言程序结构
第 4章
伪指令及汇编语言程序结构
+伪指令及汇编语言程序结构
重点掌握: 重点掌握:汇编语言和汇编程序 源程序的格式及程序分段 参数的表达、 参数的表达、变量的定义 伪指令的格式、 伪指令的格式、功能及应用 汇编语言源程序的建立、 汇编、 汇编语言源程序的建立 、 汇编 、 连接、 连接、调试及运行
+伪指令及汇编语言程序结构
4.1 汇编语言和汇编程序
+伪指令及汇编语言程序结构
汇编语言的特点汇编语言是一种以处理器指令系统为基础的低级程序设计语 言,它采用助记符表达指令操作码,采用标识符号表示指令 它采用助记符表达指令操作码, 操作数。 操作数。 利用汇编语言编写程序的主要优点是可以直接、 利用汇编语言编写程序的主要优点是可以直接、有效地控制 计算机硬件,因而容易创建代码序列短小、运行快速的可执 计算机硬件,因而容易创建代码序列短小、 行程序。 行程序。 在有些应用领域,汇编语言的作用是不容置疑和无可替代的。 在有些应用领域,汇编语言的作用是不容置疑和无可替代的。 汇编程序设计的过程是与其他高级语言程序设计大致相同。 汇编程序设计的过程是与其他高级语言程序设计大致相同。
+伪指令及汇编语言程序结构
汇编程序功能编辑程序program. program.asm
汇编程序
program.obj program.
连接程序program. program.exe
●汇编程序的主要功能: 汇编程序的主要功能: 检查源程序,给出出错信息。 检查源程序,给出出错信息。
产生目标文件(.obj)和列表文件(.lst)。 产生目标文件(.obj)和列表文件 和列表文件(.lst)。 展开宏指令。 展开宏指令。
+伪指令及汇编语言程序结构
汇编语言程序的处理过程(开发步骤): ●汇编语言程序的处理过程(开发步骤):
编辑程序 Edit 等
. ASM 文件
汇编程序 MASM
. OBJ 文件
连接程序 LINK
. EXE 文件
运行 与 调试
+伪指令及汇编语言程序结构
1、编辑:形成 .ASM文件 编辑: ASM文件
(EDIT)
2、汇编(编译):将 .ASM文件翻译成二进制代码的 汇编(编译) ASM文件翻译成二进制代码的 目标文件(即将助记符语言翻译成机器指令) 目标文件(即将助记符语言翻译成机器指令),形 OBJ文件 文件。 MASM) 成.OBJ文件。(MASM) 3 、 连接 : .OBJ 虽是二进制文件 , 但不能直接上机运 连接: OBJ虽是二进制文件 虽是二进制文件, 必须经过连接, 行,必须经过连接,把目标文件与库文件等其他连 接在一起,形成可执行文件.EXE。 LINK) 接在一起,形成可执行文件.EXE。(LINK) 4、运行:可在DOS提示符下键入文件名运行。 运行:可在DOS提示符下键入文件名运行 提示符下键入文件名运行。 5、调试:在DEBUG下进行动态调试,检查错误等。 调试: DEBUG下进行动态调试 检查错误等。 下进行动态调试,
+伪指令及汇编语言程序结构
4.2 汇编语言语句格式
+伪指令及汇编语言程序结构
●汇编语言程序
由三种基本语句组成: 汇编语言程序由三种基本语句组成:指令语句、伪指令语句、 指令语句、伪指令语句、宏指令语句
●指令语句格式: 指令语句格式: ,标号: 标号: 助记符 操作数 ;注释
+伪指令及汇编语言程序结构
完整的汇编语言程序格式;大于50送数,小于等于则省略 大于50送数 送数,my_data segment array1 db 05,a2H,00,10H,85H n equ 5 array2 db n dup(?) my_data ends my_code segment assume cs:my_code assume ds:my_data begin: mov ax, my_data mov ds, ax Lea si, array1 Lea di, array2 Mov cx, n again: Mov al,[si] Inc si Cmp al, 50 Jbe next Mov [di], al Inc di next: dec cx jnz again mov ah,4ch int 21h my_code ends end beginarray2 array1
CS
05 A2 00 10 85
DS
+伪指令及汇编语言程序结构
汇编语言源程序格式完整的汇编语言源程序由段组成。 完整的汇编语言源程序由段组成。 一个汇编语言源程序可以包含若干个代码段、数据段、 一个汇编语言源程序可以包含若干个代码段、数据段、附 加段或堆栈段,段与段之间的顺序可随意排列。 加段或堆栈段,段与段之间的顺序可随意排列。 需独立运行的程序必须包含一个代码段 需独立运行的程序必须包含一个代码段,并指示程序执行 代码段, 的起始点,一个程序只有一个起始点。 起始点,一个程序只有一个起始点。 所有的可执行性语句必须位于某一个代码段内, 所有的可执行性语句必须位于某一个代码段内,说明性语 句可根据需要位于任一段内。 句可根据需要位于任一段内。 通常,程序还需要一个堆栈段。 通常,程序还需要一个堆栈段。
源程序由语句 源程序由语句序列构成 语句序列构成
+伪指令及汇编语言程序结构
汇编语言的语句格式 ⑴ 执行性语句 ——执行性语句用于表达处理器指令 执行性语句——执行性语句用于表达处理器指令 ( 也称为硬指令 ) , 汇编后对应一条指令代码 。 由 也称为硬指令) 汇编后对应一条指令代码。 处理器指令组成的代码序列是程序设计的主体。 处理器指令组成的代码序列是程序设计的主体。标号: 标号: 硬指令助记符 操作数,操作数 操作数, ;注释
⑵ 说明性语句 ——说明性语句用于表达伪指令, 指 说明性语句——说明性语句用于表达伪指令 说明性语句用于表达伪指令, 示源程序如何汇编、变量怎样定义、 示源程序如何汇编 、 变量怎样定义 、 过程怎么设 置等。 置等。名字 伪指令助记符 参数,参数,…… ;注释 参数,参数,
+伪指令及汇编语言程序结构
汇编语言程序格式源程序的每条语句可表示为: 源程序的每条语句可表示为:[名字] 名字] 标号 变量 操作项 指令 伪指令 宏指令 操作数 [; 注释] 注释]
寄存器 说明程序或语句 标号 的功能 变量 常数 表达式
标号/变量:段值、偏移量、 标号/变量:段值、偏移量、类型三种属性 表
达式: 表达式:数字表达式 地址表达式
+伪指令及汇编语言程序结构
一、名字项●每条语句中的名字项可以是标号 ,或伪指令定 每条语句中的名字项可以是标号, 义的对象。 义的对象。 例:START: 例:START:PUSH DS XOR AX,AX , 标号,用来表 标号, PUSH AX 示一条指令的地址。 地址。
MESS1 MESS1 DB ‘NO····$ ' ‘NO····$变量,用来表示数据的地址。 变量,用来表示数据的地址。
+伪指令及汇编语言程序结构
●不论是标号还是伪指令定义的对象,都可称标识符。 不论是标号还是伪指令定义的对象,都可称标识符。 ◆标识符的组成: 标识符的组成:◆标识符的规定: 标识符的规定: ①不能以数字开头。 不能以数字开头。 ②标识符的长度≦31。 标识符的长度≦31。 ③专用字符?不能单独构成标识符。 专用字符?不能单独构成标识符。 一般情况下,名字项可以是标号 变量。 标号或 一般情况下 , 名字项可以是 标号 或 变量 。 他们用来表示 本语句的符号地址,是可有可无的, 本语句的符号地址,是可有可无的,只有当需要用符号地址 来访问该语句时才出现。 来访问该语句时才出现。
+伪指令及汇编语言程序结构
1、标号标号实际上是用符号表示的地址 标号在代码段 中定 标号实际上是用 符号表示的地址 。 标号 在代码段中定 符号表示的地址。 义,后跟“:”号。是一条指令目标代码所在存储单元的符 后跟“ 号地址,表明该指令代码在存储器中的位置, 号地址,表明该指令代码在存储器中的位置,可作为转移指 令或CALL指令的操作数 以确定程序转移的目标地址。 令或CALL指令的操作数,以确定程序转移的目标地址。 指令的操作数,
●标号有三种属性: 标号有三种属性: