好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

微机接口原理第4章..ppt

91页
  • 卖家[上传人]:我**
  • 文档编号:117848422
  • 上传时间:2019-12-11
  • 文档格式:PPT
  • 文档大小:1.80MB
  • / 91 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1 微微型计算型计算机原理机原理 与接口技术与接口技术 第四章 第4章汇编语言及其程序设计 2 4.1汇编语言源程序 4.2 伪 指 令 4.3 DOS系统功能调用 教学目的 了解汇编语言源程序的结构 掌握伪指令系统 理解DOS功能调用 掌握汇编语言源程序的设计方法 4.4 汇编语言程序设计基础 3 4.1.1汇编语言源程序结构 汇编语言源程序结构是指语句的格式和程序的组成部分源程 序结构取决于汇编程序,不同的汇编程序要求的源程序结构不同, 不同CPU的汇编程序也不相同不过功能大致相同的汇编语言其源 程序结构也大致相同本章以80X86CPU所常用的MASM宏汇编程 序为背景介绍汇编语言源程序结构 4.1 汇编语言源程序 用汇编语言编写的程序称为汇编语言源程序,将汇编语言源程 序翻译成机器语言的系统程序称为汇编程序(assembler),翻译 的过程叫做汇编(assemble) 4 1. 汇编语言源程序的组成部分: 数据段名 SEGMENT …… 数据段名 ENDS 附加数据段名 SEGMENT …… 附加数据段名 ENDS 堆栈段名 SEGMENT …… 堆栈段名 ENDS 代码段名 SEGMENT …… 代码段名 ENDS END 每段以SEGMENT 语句开始 整个程序以END 语句结束 以ENDS 语句结束 5 1.汇编语言源程序的组成部分 先观察下面的程序: 【例题4-1】将STRING 1中100个字节传送到STRING 2中。

      DATASEGMENT ;定义数据段 STRING1 DB 100 DUP(55H) DATA ENDS ;数据段结束 EDATA SEGMENT ;定义附加段 STRING2 DB 100 DUP(?) EDATA ENDS ;附加段结束 STACKSEGMENT ;定义堆栈段 DW256 DUP(?) STACK ENDS ;堆栈段结束 CODE SEGMENT ;定义代码段 ASSUME CS:CODE, DS:DATA, ES:EDATA, SS:STACK START: MOV AX, DATA MOV DS, AX ;初始化DS MOV AX, EDATA MOV ES, AX ;初始化ES MOV AX, STACK MOV SS, AX MOV SI, OFFSET STRING1 ;初始化源串指针 MOV DI, OFFSET STRING2 ;初始化目的指针 MOV CX, 100 ;初始化计数器 CLD ;设置DF=0,使SI和DI按增量变化,增量为1 REP MOVSB MOV AH, 4CH INT 21H CODE ENDS ;代码段结束 END START 6 汇编语言源程序由若干段组成:数据段、附件数据段、堆栈段和 代码段等,段与段之间的顺序可以随意排列,每一段由 SEGMENT开始,以ENDS结束,每段的开始和结束都附有相同 的名字。

      一个程序一般定义三个段:数据段、堆栈段和代码段, 必要时增加定义附加数据段,能独立运行的程序至少包含一个代 码段如果没有堆栈段,程序在执行时自动使用操作系统提供的 堆栈,因此汇编源程序时的警告信息“NO STACK SEGMENT”可 以忽略 7 2. 汇编语言的语句格式 汇编语言源程序中一行只能写一个语句每个语句可以有4部分: 标号(名字)、操作码助记符、操作数助记符和注释 例如: BEGAIN: MOV AX, BX;BX数据传送给AX l标号是某条指令的地址,是用符号表示的地址,所以也叫符号地址 l标号后加冒号“:” l名字是变量、段或子程序的名字 例如【例题4-1】中的DATA、EDATA、STACK和CODE 名字后面没有冒号“:”,与操作码之间用空格分隔 l操作码和操作数之间用空格分隔,操作数之间用逗号分隔 l分号表示注释,用来说明程序或语句的功能,常跟在语句的后面,分号 为注释的开始如果一行的第一个字符是“;”说明整行都是注释,用来 说明下面程序段的功能 汇编语言语句类型:指令性语句、指示性语句 8 1. 指示性语句 又称为伪操作语句,它不是8088/8086CPU的指令,它与汇编程序( assembler)有关。

      指示性语句的功能主要是变量定义、为数据分配存储空间 、告诉汇编程序如何对源程序汇编等源程序汇编后指示性语句不生成目标代 码,所以常被称为伪指令 指示性语句的一般格式: 名字 伪操作码助记符 操作数,操作数… ;注释 例如: DATASEGMENT ;定义数据段 STRING1 DB 100 DUP(55H) DATA ENDS ;数据段结束 名字与伪操作助记符之间用空格分隔,名字由程序员设置 9 指令性语句 指令性语句是可执行语句,是8088/8086CPU的指令源程序 汇编后指令性语句生成目标代码第3章中介绍的所有指令都是指 令性语句的主体,其操作数最多只能有两个 指令性语句的一般格式: 标号: 操作码助记符 操作数助记符,操作数助记符 ;注释 例如:【例题4-1】中语句“START:MOV AX,DATA ”和语句“ INT 21H ”之间的所有语句都是指令性语句START是标号,可 根据需要由程序员设置标号表示指令的符号地址,可以作为转 移指令、循环指令和调用指令的操作数,标号后面要加冒号 10 指令性语句和指示性语句在格式上的区别: 1.标号和名字 l 指令性语句的标号是指令的符号地址,后边通常加上’:’ l 名字通常表示变量名、段名和过程名,后边不加’:’ 2.操作数 l 指令性语句的操作数最多有2个,可以没有 l 指示性语句中的操作数至少要有1个,可以有多个,相互之间用 逗号分开 11 4.1.2 汇编语言源程序的处理过程 CPU只能执行机器语言程序,汇编语言毕竟不是机器语言,汇 编语言程序必须通过具有“翻译”功能的系统程序的处理。

      汇编程序 (Assembler)就是处理汇编语言源程序的系统程序,处理的过程称 为汇编源程序经过汇编生成机器语言目标程序,简称目标程序 目标程序经过连接程序连接,就得到可执行文件 汇编语言源程序 Good.asm 汇编MASM连接Link 可执行文件 Good.exe 机器语言目标程序 Good.obj 图4-1 汇编语言源程序的处理过程 12 4.1.3 汇编语言中的操作数 汇编语言语句中的操作数可以是寄存器、存储器单元、常量 、变量、名字、标号和表达式 1. 常量 常量也称常数,有数值常量和字符常量两种 u数值常量可以是二进制数、十进制数和十六进制数十六进 制数若是以字母(A~F)开始,需在前面加一个数字0,用以 说明这是数值常量,不是字符串例如: MOV AX, 0D3A9H u字符常量是用单引号括起来的字符或字符串,源程序汇编之 后它们转换为相应的ASCII码例如: MOV AL, ‘A’;AL=41H VARDB ‘Hello’ ;相当于 VAR DB 48H, 65H, 6CH, 6CH, 6FH 13 2. 变量 变量是指存储单元中的数据,这些数据在程序运行中可以修 改变化,因此称其为变量。

      每个变量可以有一个名字(变量 名),也可以没有一个变量名可以表示一个数据或一组类 型相同的数据,即一个变量名可以是一个数据的符号地址, 也可以是一组数据的符号首地址变量名可以作为存储器操 作数使用 例如: STRDB STRING NUMDW 0AAH,23H LAB0DQ 01A4578H 14 变量在除了代码段之外的其他段中定义,有段、偏移量和类型三种 属性 段属性:变量所在的段 偏移量属性:变量的偏移地址 类型属性:变量所存储数据的数据类型,有:BYTE、WORD、 DWORD、DQ(8个字节)、DT(10个字节) 15 3. 标号与名字 标号在代码段中定义,后面跟冒号,是指令的符号地址标号经 常作为转移指令、循环指令和调用指令的操作数 标号有三种属性:段、偏移量和类型 段属性:标号所在的段 偏移量属性:标号的偏移地址 类型属性:标号是在本段内还是在其他段内,在本段内称为近地 址属性(NEAR),在其他段内称为远地址属性(FAR),近地 址属性NEAR可以省略 16 例如: … LEA SI, VAR MOV CX, 100 XOR AX, AX COUNT:ADD SI, 2 ADD AX, [SI] LOOP COUNT MOV SUM, AX … ;COUNT的属性为近地址属性NEAR 17 名字通常指的是段名、变量名和子程序名,其后不跟冒号。

      标号 与名字的用法作用不同,但设置方法却一样可以使用: u大小写英文字母 u数字0~9 u特殊字符 ?• @ # $ 标号或名字中的第一个字符必须是英文字母或圆点• ,整体最长 不能超过31个字符,不能使用指令助记符、寄存器名及汇编语言 指令系统中的保留字 标号和名字由程序员确定 18 4. 表达式 表达式由常量、变量和标号通过运算符结合而成表达式中的运算 在汇编时完成,运算结果可以是操作数也可以是操作数地址例如 下面指令中的源操作数: MOV AX, SEG VAR MOV BX, 5 MOD 3 ADD AL, LAB*5+DATA 19 表达式中的常用运算符 (1)算术运算符: +、-、*、/、MOD MOD是指除法运算的余数,如15 MOD 7结果为1 MOV AX, 15 MOD 7 ;汇编之后为MOV AX, 1 MOV DX, ARRAY+(7-1)*2 (2)逻辑运算符: AND、OR、NOT、XOR 逻辑运算符只能用于数字表达式,不能用于地址表达式中 CMPAL, 04H AND 75H;汇编之后为CMP AL, 04 20 (3)关系运算符: EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小 于或等于)、GE(大于或等于) 关系运算符对两个性质相同的数据进行运算,可以构成数字表 达式或地址表达式,运算的结果应为逻辑值:关系成立结果为真, 输出为全1;关系不成立结果为假,输出为0。

      例如: DATA和NUM为常量,DATA= 5AH NUM=35H MOV BX, DATA GT NUM ; 汇编之后为MOV BX, 0FFFFH MOV BX, DATA EQ NUM ; 汇编之后为MOV BX, 0 21 (4)取值运算符: TYPE、SIZE、OFFSET、SEG l TYPE Variable 或label 取变量或标号的类型变量的类型值:DB为1、DW为2、 DD为4 、DQ为。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.