第四章指令系統及汇编语言程序设计 本章学习目标 ◇了解助记符、指令格式 ◇掌握单片机寻址方式 ◇掌握单片机指令系统 ◇掌握单片机汇编语言程序设计及开发环境 02404 16:17:5
16:17:59 第四章 指令系统及汇编语言程序设计 本章学习目标 了解助记符、指令格式 掌握单片机寻址方式 掌握单片机指令系统 掌握单片机汇编语言程序设计及开发环境 3 10:24:04
第四拿指令系统及汇编语言程序设计语合( 41编程语言简介(4记符语言;41.2操作码;43操作数) 42指令和伪指令(4.2.1指令格式;42.2寻址方式;4.23伪指令) 43汇编语言程序调试 44利用STC-ISP工具将程序下载到单片机中验证程序 45各类指令详解 45.1数据传送类指令 45.,2逻辑操作类指令 具体指令系 45.3算术运算类指令 统介绍 45.4位操作指令 45.5控制类转移指令 46汇编语言程序设计 102404 16:17:5
16:17:59 第四章 指令系统及汇编语言程序设计语言 4.1 编程语言简介 (4.1.1助记符语言; 4.1.2操作码; 4.1.3操作数) 4.2 指令和伪指令(4.2.1指令格式; 4.2.2寻址方式; 4.2.3伪指令) 4.3 汇编语言程序调试 4.4 利用STC-ISP工具将程序下载到单片机中验证程序 4.5各类指令详解 4.5.1 数据传送类指令 4.5.2 逻辑操作类指令 4.5.3 算术运算类指令 4.5.4 位操作指令 4.5.5 控制类转移指令 4.6 汇编语言程序设计 4 10:24:04 具体指令系 统介绍
§4.1编程语言介汇编指令:MOYA,# 机器语言:0111000110 1、指令及指令系统 十六进制:74H,76H 指令是计算机完成某种指定操作的命令,以完 成一定任务为目的指令的有序组合组成程序 指令的集合构成指令系统。 2、指令两种形式(在CPU的同一指令系统中) ◇汇编指令(汇编语言)的形式:是用英文缩写形式的 助记符书写的指令,地址、数据也可用符号表示。 ◇机器指令(机器语言)的形式:是机器所能识别的 二进制数(写成十六进制数)的形式。 102404 16:17:5
16:17:59 §4.1 编程语言简介 1、指令及指令系统 指令是计算机完成某种指定操作的命令,以完 成一定任务为目的指令的有序组合组成程序。 指令的集合构成指令系统。 2、指令两种形式 (在CPU的同一指令系统中) 汇编指令(汇编语言)的形式: 是用英文缩写形式的 助记符书写的指令, 地址、数据也可用符号表示。 机器指令(机器语言)的形式:是机器所能识别的 二进制数(写成十六进制数) 的形式。 5 10:24:04 汇编指令: MOV A, #76H 机器语言: 01110100和01110110 十六进制: 74H, 76H
§4.1编程语言简介 3、编写计算机程序有三种不同层次的计算机语言: 机器语言,汇编语言和高级语言(不针对具体cpu) ◇机器语言( Machine language) ◆用二进制数表示的指令,是CPU唯一能够直接 识别和执行的程序形式。 ◆缺点是不直观,不易识别、理解和记忆,因此 编写、调试程序时都不采用这种形式的语言。 汇编指令:MOvA,#76H 机器语言:0110100011010 02六进制:74H,76H 16:17:5
16:17:59 §4.1 编程语言简介 3、编写计算机程序有三种不同层次的计算机语言: 机器语言, 汇编语言和高级语言(不针对具体cpu)。 机器语言(Machine Language) 用二进制数表示的指令,是CPU唯一能够直接 识别和执行的程序形式。 缺点是不直观,不易识别、理解和记忆,因此 编写、调试程序时都不采用这种形式的语言。 6 10:24:04 汇编指令: MOV A, #76H 机器语言: 01110100和01110110 十六进制: 74H, 76H
汇编语言( Assembly Language) ◆是用英文缩写形式的助记符书写的指令,地址、数 据也可用符号表示。 ◆优缺点:与机器语言程序相比,编写、阅读和修改 都比较方便,不易出错。但用汇编语言编写的源程 序必须进行汇编。 ◆目前,常用计算机软件自动完成汇编工作。 不同的CPU具有不同的汇编语言,一般不能通用。 ◆在实际系统中,对程序执行速度要求较高而软件处理 功能有限的场合,以及对硬件操作有较强的针对性的 场合,常用汇编语言编程。汇编指令:MOVA,#76H 机器语言:0110100801010 02404 十六进制:74H,76H
16:17:59 汇编语言(Assembly Language) 是用英文缩写形式的助记符书写的指令,地址、数 据也可用符号表示。 优缺点:与机器语言程序相比,编写、阅读和修改 都比较方便,不易出错。但用汇编语言编写的源程 序必须进行汇编。 目前,常用计算机软件自动完成汇编工作。 不同的CPU具有不同的汇编语言,一般不能通用。 在实际系统中, 对程序执行速度要求较高而软件处理 功能有限的场合, 以及对硬件操作有较强的针对性的 场合, 常用汇编语言编程。 7 10:24:04 汇编指令: MOV A, #76H 机器语言: 01110100和01110110 十六进制: 74H, 76H
高级语言( High Level Language) ◆优缺点:不针对某种具体的计算机,通用性强。用高 级语言编程不需了解计算机内部的结构和原理,这种 语言的形式更接近英语,对于非计算机专业的人员比 较易于掌握。 ◆高级语言程序易读、易编写,程序结构比较简洁,大 量用于科学计算和事务处理。 ◆用高级语言编写的源程序同样必须编译后,计算机才 能执行。编译程序比汇编程序复杂得多,需要占用较 大容量的存储器,编译的过程也要花费更多的时间。 本章主要介绍汇编语言及其程序设计 02404 16:17:5
16:17:59 高级语言(High Level Language) 优缺点:不针对某种具体的计算机,通用性强。用高 级语言编程不需了解计算机内部的结构和原理,这种 语言的形式更接近英语,对于非计算机专业的人员比 较易于掌握。 高级语言程序易读、易编写,程序结构比较简洁,大 量用于科学计算和事务处理。 用高级语言编写的源程序同样必须编译后, 计算机才 能执行。编译程序比汇编程序复杂得多, 需要占用较 大容量的存储器, 编译的过程也要花费更多的时间。 8 10:24:04 本章主要介绍汇编语言及其程序设计
4、汇编语言(助记符语言)指令的组成 ◇汇编语言的指令由操作码和操作数组成。操作码指出 对操作数进行什么操作;操作数指出对什么数进行操 作以及将操作的结果放到何处。 (1)操作码功能:表示对操作数进行什么操作。 ◇表示形式:由英文缩写字母组成称为助记符,易理解记忆 ◇例,MOV:数据的传送;ADD:数据相加;ANL:逻辑与 ◇用助记符编写的汇编指令只有被汇编成机器语言代码 (目标代码)才能被CPU识别执行,如:"MOVA,#76H 表示将数据76H送到累加器A中,对应机器代码: ◆二进制机器语言是:01110100和01110110 ◆十六进制数是:74H,76H。 74H:操作码,将一个数据传送到累加器A;76H:操作数
16:17:59 4、汇编语言(助记符语言)指令的组成 汇编语言的指令由操作码和操作数组成。操作码指出 对操作数进行什么操作; 操作数指出对什么数进行操 作以及将操作的结果放到何处。 9 10:24:04 (1 )操作码 功能: 表示对操作数进行什么操作。 用助记符编写的汇编指令只有被汇编成机器语言代码 (目标代码)才能被CPU识别执行, 如: "MOV A, #76H" 表示将数据76H送到累加器A中, 对应机器代码: 二进制机器语言是:01110100和01110110 十六进制数是:74H,76H。 74H: 操作码, 将一个数据传送到累加器A; 76H: 操作数。 表示形式: 由英文缩写字母组成,称为助记符,易理解记忆。 例, MOV: 数据的传送; ADD:数据相加; ANL: 逻辑与
(2)操作数 MOV RO,#10H;MOV30HR1; ◇操作数功能:指出对什么数进行操作以及将操作的结 果放到何处。 ◇操作数的表示形式:可以是参与操作的数据,也可以 是参与操作的数据所在存储器的地址,还可以是数据 所在的寄存器等不同形式。 ◇寻找这些不同形式的操作数的方式称为寻址方式。 ◇立即数MOVA,#76H ◆定义:汇编语言指令中,直接参与操作的数据。 ◆表示方法:十进制格式、十六进制格式、二进制格式。 ◆数据进制区分是在数据后面加后缀:十进制数后缀为D 或省略,十六进制数后缀为H,二进制数后缀为B。 102404 16:17:5
16:17:59 (2 ) 操作数 操作数功能:指出对什么数进行操作以及将操作的结 果放到何处。 操作数的表示形式:可以是参与操作的数据,也可以 是参与操作的数据所在存储器的地址,还可以是数据 所在的寄存器等不同形式。 寻找这些不同形式的操作数的方式称为寻址方式。 10 10:24:04 立即数 定义:汇编语言指令中, 直接参与操作的数据。 表示方法:十进制格式、十六进制格式、二进制格式。 数据进制区分是在数据后面加后缀:十进制数后缀为D 或省略,十六进制数后缀为H, 二进制数后缀为B。 MOV A, #76H MOV R0, #10H ; MOV 30H, R1;
(2)操作数 ◇注意 ◆参与操作的数据的位数要与参与操作的环境相匹配。 ◆例如,指令MOVA,#71H,立即数71是8位二进制 数01110001B的十六进制格式,而A是8位的寄存器, 所以给8位寄存器送的数据不能超出8位。 ◆同理,给十六位寄存器送的数据不能超出16位。 MOV DPTR. #1234H ◆数据只能是整数的格式,不能是小数的格式。 102404 16:17:5
16:17:59 (2 ) 操作数 注意 参与操作的数据的位数要与参与操作的环境相匹配。 例如,指令MOV A, #71H,立即数71H是8位二进制 数01110001B的十六进制格式,而A是8位的寄存器, 所以给8位寄存器送的数据不能超出8位。 同理,给十六位寄存器送的数据不能超出16位。 MOV DPTR, #1234H 数据只能是整数的格式,不能是小数的格式。 11 10:24:04
(2)操作数 ◆当汇编指令中的数据是十六进制且是以字母开头时, 该数据应加一个前导0,以表示后面的字母不是变量 而是数字 MOV A#OFFH ◆在8051内核单片机中,一个数据的前面有前缀#号则 表示后面的数据是立即数,如果数据的前面没有#号, 则说明该数据表示的是直接地址 02404 16:17:5
16:17:59 (2 ) 操作数 当汇编指令中的数据是十六进制且是以字母开头时, 该数据应加一个前导0,以表示后面的字母不是变量 而是数字。 MOV A, #0FFH, 在8051内核单片机中,一个数据的前面有前缀#号则 表示后面的数据是立即数,如果数据的前面没有#号, 则说明该数据表示的是直接地址。 12 10:24:04