微机原理与接口技术第3章

合集下载

微机原理与接口技术第3章

微机原理与接口技术第3章

直接寻址
例【3-4】 MOV AL,DS:[2345H]是偏移地址为16位 的直接寻址的指令,指令中直接给出了偏移地址, EA=2345H,机器码是:A04523H,其中,操作码是 A0H,紧接着的是偏移地址。 例【3-5】 假定在数据段DS有双字变量定义为: VAR DD 12345678H 其中VAR是变量名,在经过汇编与连接生成可执行 的程序在执行时,它有实际的物理地址,由段寄存 器DS与偏移地址EA组成。在执行指令MOV EAX,VAR 时,其功能是根据变量名VAR的DS和EA,从数据段 内偏移地址为EA的内存单元,连续读取4个字节数 送给EAX,即(EAX)=12345678H。
(5)相对基址(加)变址寻址 相对基址(加)变址寻址是在基址(加)变 址寻址的基础之上,加上一个带符号的8位或16 位的位移量,最后形成一个16位的偏移地址,所 访问的段、基址寄存器与变址寄存器的组合与上 述的相同。 例【3-21】 MOV AL,[BX+SI+10H] ;访问DS段,可以写成 MOV AL,[BX][SI+10H]形式 MOV DX,[BP+DI-29H] ;访问SS段,可以写成 MOV DX,[BP][DI-29H]形式
8.16位的存储器寻址方式
32位CPU兼容16位CPU的寻址方式,也兼容16 位的指令系统,在编写32位程序时,不可避免地 要使用16位的指令系统编程,在16位CPU的寻址 方式中,存储器寻址仍然是主要的,这是因为16 位的立即寻址、寄存器寻址与32位的相同,容易 理解,下面简单介绍16位的存储器寻址方式。 (1)直接寻址 指令中直接给出了16位的偏移地址,物理地 址=段寄存器值*16+偏移地址。 例【3-15】 MOV BL,[2060H] ;访问DS段 MOV AX,[3344H] ;访问DS段

微机原理与接口技术第三章

微机原理与接口技术第三章
17
(一)概述 3. 汇编语言源程序的结构 2)简化段定义的程序结构
.MODEL SMALL .STACK 100H .DATA ………… .CODE START: MOV AX,@DATA MOV DS,AX ………… MOV AH,4CH INT 21H END START ;存储模型:小型 ;定义堆栈段及其大小 ;定义数据段 ;数据声明 ;定义代码段 ;起始执行地址标号 ;数据段地址 ;存入数据段寄存器 ;具体程序代码
22
(一)概述
5. 编译、链接和运行程序
Link library Source file Step2: Assembler Object file Listing file Step1: Text editor Step3: Linker Step4: Executable OS loader Output file Map file
(一)概述 3. 汇编语言源程序的结构 1)完整段定义的程序结构 ASSUME伪指令:告诉汇编程序,哪一个段和哪一 个段寄存器相对应,即某一段地址应放入哪一个段寄 存器。 操作系统的装入程序在装入执行时,把CS初始化成 正确的代码段地址,把SS初始化为正确的堆栈段地址, 因此源程序中无再需初始化CS、SS。 装入程序已将DS寄存器留作它用,故在源程序中应 有以下两条指令: MOV AX,DATA MOV DS,AX DOS环境下,汇编语言返回DOS: MOV AH,4CH INT 21H

每个寄存器可作32位或16位使用。 一些16位的寄存器也可以作为两个单独的8位使用。
3
一、Intel x86 微处理器的组成结构 1. 内部寄存器 通用寄存器:主要用于算数运算和数据传送。

每个寄存器可作32位或16位使用。 一些16位的寄存器也可以作为两个单独的8位使用。

微机原理与接口技术课件微机第三章

微机原理与接口技术课件微机第三章

常见的高级语言包括C、C、Java、 Python等,可用于开发各种应用程序 和软件。
高级语言具有易学易用、可移植性好 的特点,但执行速度较慢,占用内存 较多。
05
微机操作系统
操作系统定义与功能
操作系统定义
操作系统是计算机系统中用于管 理和控制计算机硬件与软件资源 的系统软件,是计算机系统的核 心组成部分。
微机发展历程
总结词
微机的发展经历了从早期的大型机、小型机到现在的个人计算机和移动设备的演变。
详细描述
微机的发展始于20世纪70年代,最早的微机是苹果电脑和IBM PC。随着技术的不断发展,微机的性能不断提高, 体积不断减小,价格也逐渐降低。同时,随着互联网的普及,微机已经成为人们获取信息、交流沟通、娱乐休闲 的重要工具。

执行指令
执行指令是指根据指令的操作 码执行相应的操作,完成指令
的功能。
访存取数
访存取数是指根据指令中的地 址码从内存中读取或写入数据

04
微机编程语言
机器语言
机器语言是计算机能够直接执 行的指令集合,由二进制数0和 1组成。
机器语言具有执行速度快、占 用内存少的特点,但编写复杂, 易出错,可移植性差。
实时操作系统
实时操作系统主要用于实时控制系统,要求系统能够快速、准确地响 应外部事件,具有实时性和高可靠性。
网络操作系统
网络操作系统是用于管理网络资源的操作系统,支持网络中计算机之 间的通信和资源共享。
常见微机操作系统介绍
Windows
微软公司开发的桌面操作 系统,广泛应用于个人计 算机领域。
Linux
02
微机硬件组成
中央处理器
中央处理器(CPU)是微机的核心部 件,负责执行指令和处理数据。

第3章-微机原理与接口技术-陈波-清华大学出版社

第3章-微机原理与接口技术-陈波-清华大学出版社
与数据有关的寻址方式 与地址有关的寻址方式
8
3.1.2指令的寻址方式
立即 数寻 址
寄存 器寻 址
与数 据相 关的寻 址方式
直接 寻址
寄存 器间 接寻址
80
存储器寻址 寄存器相对寻址
86

基址 加变 址寻址


相对 基址 加变址 寻址

段内 寻址
段内 直接 寻址
与地 址相 关的寻 址方式
段内 间接 寻址
10
3.1.2与数据有关的寻址方式
立即数寻址示意图:
代码段
低地址
MOV 28H
高地址
MOV 56H 34H
AX AH AL
AH AL
图3.2 立即数寻址
11
3.1.2与数据有关的寻址方式
说明: ①立即数可以是8位,也可以是16位。 ②立即数存放在存储器的代码段中,低字节在低地址,
高字节在高地址中。
21
3.1.2与数据有关的寻址方式
直接寻址指令可访问一个内存单元数据,也可以 访问两个内存单元数据。它的格式如下:
操作码 操作码
目的操作数寄存器,[立即数(有效地址)] [立即数(有效地址)],源操作数寄存器
22
3.1.2与数据有关的寻址方式
例3-4 MOV AX,[1234H]
其 中 , 1234H 立 即 数 为 内 存 中 数 据 段 的 有 效 地 址 。 假 设 (DS)=2000H,则操作数所在的段地址为2000H,有效地址 为1234H,其逻辑地址表示为2000H:1234H。 其 物 理 地 址 为 : 2000H*10H+1234H=21234H 。 而 其 执 行过程是将内存中物理地址为21234H单元的字节数据取到 累加器AL中,将21235H地址单元内容送到AH中,即取出一 个字数据,低地址单元数据送低8位寄存器AL中,高地址单 元数据送高8位寄存器AH中。

微机原理与接口技术--第3章 3.4-546

微机原理与接口技术--第3章 3.4-546
13
变量的属性
段 偏移量
类型
变量所在段的段地址
变量所指单元与段首之间的位移量 (相对字节数)
变量的长度(变量所占内存单元个数)
字节型、字型、双字型等
14
变量的定义
变量必须在使用之前定义,由汇编语言提供的 伪指令来实现的,即为变量分配存储器单元, 预置初值。
常用的伪指令有DB、DW、DD、DQ、DT等 。 格式:
(2)逻辑运算符
逻辑运算符
AND,OR,NOT,XOR
例:
MOV AL,8 AND 4 MOV AL,8+4-1 MOV BH,VAR+2
35
【例3-20】分析下面程序,确定逻辑运算符的作用。
MOV AX,NOT 0F0F0H MOV AX,0F0FH等效
MOV BL,55H AND 0F0H MOV BL,50H等效
指令的符号地址 标号后要有冒号
操作码,如有前缀 ,需用空格分开
Hale Waihona Puke 注释前加分号6指示性语句格式(伪指令语句)
[符号名] 伪指令 参数[ ;注释]
指示汇编程序应 执行的具体操作
变量的符号地址 其后不加冒号
对汇编过程的进一步 说明,参数个数由伪 指令确定
7
宏指令语句
宏指令是将程序中多次使用的程序段定义为一 条指令。在对宏指令汇编时,用原程序代码取 代宏指令。
20
字符串
可作为表达式使用,存放字符的ASCII码值。
例如伪指令:
按字节依次存储A、B、C、D的
XYZ DB ‘ABCD’ ASCII码值
DATA DW ‘CD’,‘76’
按字依次存放CD和7、6 的ASCII码值
21

微机原理与接口技术(第3版)3

微机原理与接口技术(第3版)3

段寄存器 段首址
左移4位 EA
PA 操作数
演示
指令系统
操作数的偏移地址EA按以下公式计算:
BX+SI +rel
EA=
BX+DI +rel BP+SI +rel
BP+DI+rel
用 BX 作基址寄存器,SI 作变址寄存器时。 用 BX 作基址寄存器,DI 作变址寄存器时。 用 BP 作基址寄存器,SI 作变址寄存器时。 用 BP 作基址寄存器,DI 作变址寄存器时。
例如,MOV AX, [BX][SI] 执行前:BX=1000H,SI=200H,DS=2000H,(21200H)=0ABCDH。
目的操作数是AX,源操作数采用基址变址寻址,由于源操作数选用 BX作基址寄存器,所以其物理地址PA由数据段寄存器DS的内容左移 4位与偏移地址EA相加形成。 即:源操作数的 PA=(DS)左移4位+BX+SI=21200H。
堆栈操作指令包括入栈指令PUSH和出栈指令POP。
指令系统
入栈指令PUSH
格式:PUSH OPS 功能:将寄存器,段寄存器或存储器的一个字数据压入
堆栈中。 执行的操作:SP ← SP-2
(SP+1,SP)←OPS 例如,PUSH AX 执行前:AX=0ABCDH,SP=2000H,堆栈情况如图(a)所示: 执行后:(1FFEH)=0ABCDH,AX的内容不变。
操作码

寄存器名 段寄存器
变址值
段首址
rel
位移量
EA
左移4位
操作数
演示
举例说明
指令系统
例如,MOV BX,DAT[DI] 执行前:

微机原理与接口技术的课件第3章

微机原理与接口技术的课件第3章
译码周期
对指令进行译码,确定指令的操作码和操作数。
执行周期
根据译码结果,执行相应的操作,如数据传送、算术运算、逻辑运算 等。
中断处理
当外部设备发出中断请求时,微处理器响应中断,保存现场并转入中 断服务程序执行。执行完毕后恢复现场并继续执行原程序。
03 存储器与I/O接口技术
存储器类型及特点
RAM(随机存取存储器) 可读可写
传输协议和电气特性。
键盘的编程控制
03
通过编程控制键盘的输入,实现特殊功能键的定义、组合键的
识别等。
显示输口、DVI接口、HDMI接口等, 不同接口有不同的传输带宽和显示效果。
显示器的基本工作原理
将显卡输出的模拟或数字信号转换成图像显 示出来。
显示编程控制
通过编程控制显卡的输出,实现图像的缩放、 旋转、色彩调整等特效。
宏定义
用一条指令代替一段程序的方法,可以提高程 序的可读性和可维护性。
伪指令与宏定义的区别
伪指令是汇编器的一部分,而宏定义是由程序员定义的。
汇编语言程序设计举例
顺序程序设计
按照指令的执行顺序编 写程序,适用于简单的
计算和控制任务。
分支程序设计
根据条件选择不同的执 行路径,实现复杂的控
制逻辑。
循环程序设计
• 中断优先级:多个中断源同时请求时,确 定响应顺序的依据。
中断系统与DMA传
DMA控制器
控制DMA传输的硬件电 路。
DMA传输过程
外设向DMA控制器发请 求,DMA控制器向CPU 发总线请求并获得总线 控制权,DMA控制器控 制外设与内存直接交换 数据。
DMA传输方式
单字节传输、成组传输、 请求传输等。
总线接口

微机原理与接口技术第3章 (汇编部分)

微机原理与接口技术第3章 (汇编部分)

BX TABLE 01H
二 汇编语言程序结构
②属性运算符 PTR
BX TABLE
01H
指定存储器操作数的临时属性
例:MOV BYTE PTR[BX],01H
BX+8
02 00
MOV WOR够生成目标代码
指示性语句(伪指令)
•由汇编程序执行的语句
五 汇编语言程序设计基础
例:教材161 例3.39 内存TABLE开始存放着0~15的平方表,查表求任意数X (0≤X≤15)的平方值,并将结果存入RESULT单元中。 分析: BX TABLE 1 、定义数据段 2、代码段 BX 表首地址; AH 0,AL X; BX BX+AX ;形成平方值地址 AL[BX];得到平方值 RESULT AL;存结果 3 , 返回操作系统, MOV AH,4CH DATA INT 21H; RESULT 0 1 4 9 16 25 36 49 64 81
2、END [标号名];汇编结束
M2
03H 04H
标号名为程序的启动地址
四 DOS系统功能调用 4-3
•汇编语言中如何从键盘输入数据? •用INT 21H指令,调用DOS系统功能,功能 号置入AH寄存器中
功能号
功能
从键盘输入字符并显示
• DOS系统内
01H
的各子功能
02H
0AH 4CH
显示字符串
输入字符串 至缓冲区 返回操作系统
三 伪指令
1、数据定义 DATA:0000H M1 定义变量类型及数据区 0002H M2 DATA SEGMENT 段名 M1 DB 1,2 M2 DW 3 DUP( 5) M3 DB ‘ABCD’ DATA ENDS M3

微机原理与接口技术——第三章.ppt

微机原理与接口技术——第三章.ppt

常数
出现在汇编源程序中的固定值,即其在运行期间不会变化 字符串常数 是由单引号括起来的一串字符。汇编程序把它们表示成一 个字符序列,一个字节对应一个字符,把引号内的字符翻 译成ASCII码 。 ’218’——32H,31H,38H
11
表达式
由操作数和运算符组合的序列,它在汇编时能产生一个值。 算术运算符 +、-、*、/、MOD
SIZE
DATA5
LENGTH DATA9
SIZE
DATA9
;结果为1000H ;结果为0001H ;结果为1 ;结果为1 ;结果为1 ;结果为3 ;结果为3
24
PTR 运算符
合成运算符PTR可以由已存在的存储器操作数声名一个段和 偏移量相同,而类型不同的新的存储器操作数,格式如下:
类型 PTR 表达式
0123H、0456H、0789H、0ABCH
CODE SEGMENT
程序4.1
ASSUME CS:完CO成D4E个数
MOV AX, 0123H
相加
ADD AX, 0456H
ADD AX, 0789H
ADD AX, 0ABCH
MOV AX, 4C00H
INT 21H
CODE ENDS
END
32
顺序程序设计
2
常数与表达式
3
标识符
4
数据定义
5
与数据相关的操作符
6
符号定义
9
常数
出现在汇编源程序中的固定值,即其在运行期间不会变化
数值常数
按其基数的不同,可以有二进制(B)、八进制(O)、十进 制(D)、十六进制数(H)等不同的表示形式
00101100B 1234D 1234 255O 56H 0BA12H

微机原理与接口技术-第3章-41

微机原理与接口技术-第3章-41

用来取代IP中的当前值。该寄存器或存储器单元可由数据寻址方式中
除立即数之外的任何一种方式得到。其示意如图3-14所示。
指令 数据寻址方式
寄存器
根据数据寻址方式 计算 EA 值
转移有效地址

IP
转移有效地址 取其中之一
存储器
图图3-41.144 段内间接寻址示意图
段内间接寻址的特点是CS的值不变,IP的值由16位寄存器或存储器
指令 寄存器
寄存器 EA
段寄存器 段地址
左移 4 位
+
存储器 操作数
图34-.66 寄存器间接寻址示意图
例如指令: MOV AX,[BX] 设(DS)=3000H,(BX)=3000H,执行后(AX)=2C7DH,操作示
意图如图3-7所示。 又如指令:MOV AX,ES:[SI];段寄存器为ES,数据在附加段中。
第3章 指令系统与汇编语言程序设计
3.1 概述 3.2 8086寻址方式 3.3 8086指令系统 3.4 汇编语言程序格式与常用伪指令 3.5 汇编语言程序设计 3.6 汇编语言程序上机过程
3.1 概述
3.1.1 指令与程序 3.1.2 汇编语言基本概念
3.1.1指令与程序
所谓指令,就是指示计算机进行某一工作的命令,而程序是为求 解某一问题或进行某项工作的若干条指令的有序集合。指令如图3-1 所示。一台计算机全部指令的集合称为指令系统。操作码域说明指令 的类型与功能,操作数域也称为地址域,说明数据在存储器中的地址 及操作结果存放的地址。
用二进制代码表示指令系统的语言称为机器语言,用以设计 的程序称为机器语言程序。例如以下两条指令可构成一段程序, 是把数据20H经寄存器CL,与累加器AL中的数相加,结果在AL 中。

微机原理与接口技术第3章

微机原理与接口技术第3章
高位字节在高地址存储单元,低位字节在低地址存储单元。
图3-1 立即数寻址方式的存储和执行示意图
2)寄存器寻址方式
该寻址方式的操作数在CPU内部的寄存器中,指令中指定寄存器号。 对于16位操作数,寄存器可以是AX、BX、CX、DX,SI、DI、SP和 BP等; 对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH。
3.1.1 指令格式
指令格式是指令字用二进制代码表示的结构形式。计算机中的指令 由操作码字段和操作数字段两部分组成。操作码字段指示计算机所要执 行的操作,操作数字段指出在指令执行操作过程的所需要的操作数。
汇编语言语句用符号或符号地址来表示操作数或操作数地址,它的 操作码与机器指令是一一对应的。用助记符表达的指令格式通常为:
图3-2 直接寻址方式指令的执行情况
4)寄存器间接寻址方式 操作数在存储器中,操作数有效地址在SI、DI、BX、BP这4个寄存
器之一中,在一般情况(即不使用段超越前缀明确指定段寄存器)下, 如果有效地址在SI、DI和BX中,则以DS段寄存器的内容为段值;如果有 效地址在BP中,则以SS段寄存器的内容为段值。
2)入栈指令 格式:PUSH SRC 功能:将操作数压入堆栈中。 操作:16位指令: (SP)← (SP)-2
((SP)+1,(SP)) ← (SRC) 32位指令: (ESP) ← (ESP)-4
3.2 微处理器的基本指令系统
80x86的指令系统大致分为6 种类型:数据传送指令、 算术运算指令、位操作指令、串操作指令、程序控制指令和 处理器控制指令。
3.2.1 数据传送指令
数据传送是机器内部最基本的操作之一。这些指令不仅能实现寄存 器之间、寄存器与内存之间、寄存器与I/O端口之间的字节或字数据的 传送,而且能传送目标地址和状态标示以及完成堆栈的操作。数据传送 指令负责把数据地址或立即数传送到寄存器或存储单元中。它又可以分 为以下5种。

微机原理与接口技术第三章

微机原理与接口技术第三章

实体说明及其外部接口信号关系
3.2.1 实体说明
1. 实体名
实体具体取名由设计者自定,但由于实体名实际
上表达的是该设计电路的器件名,所以最好根据相 应电路的功能来取定。例:counter16

实体名的命名要满足VHDL语言定义标识符的规则。
①第一个字符必须是字母; ②字母不区分大小写;③下划线
不能连用;④最后一个字符不能是下划线。
1 LIBRARY IEEE; 库和包说明部分 2 USE IEEE.STD_LOGIC_1164.ALL; 3 USE IEEE.STD_LOGIC_UNSIGNED.ALL; 4 5 6 7 8 9 ENTITY counter16 is GENERIC(n: INTEGER:=4); 实体说明部分 PORT(clk: IN STD_LOGIC; --时钟输入端 co:OUT STD_LOGIC; --进位输出端 q :OUT STD_LOGIC_VECTOR(n-1 DOWNTO 0)); END counter16;
3.2.1 实体说明
3. 端口(PORT)说明语句 端口说明语句指明实体的输入/输出信号及其模式。
端口说明语句的语法结构为:
PORT(端口名:端口模式 数据类型; … 端口名:端口模式 数据类型);
1) 端口名 端口名对应于元件符号的每个外部引脚的名称,一般由英 文字母组成。名字的定义有一定的惯例,如clk表示时钟,d开 头的端口名表示数据,a开头的端口名表示地址等。
STD_LOGIC_VECTOR等。建议:端口数据类型
只使用BIT、BIT_VECTOR、STD_LOGIC、 STD_LOGIC_VECTOR等具有电路特性的类型, 而不使用BOOLEAN、INTEGER 等数学意义明显 的类型。

微机原理与接口技术第3章

微机原理与接口技术第3章
35
第35页/共92页
串操作指令流程(以传送操作为例)
取源串地址 取目标串地址
传送一个字节或字 修改地址指针
设串长度
修改串长度值
设操作方向
传送完否?
N
Y
36
第36页/共92页
1. 串传送指令
• 格式: MOVS OPRD1,OPRD2 MOVSB MOVSW
• 串传送指令常与无条件重复前缀连用
37
第14页/共92页
5.“测试”指令
• 格式: • TEST OPRD1,OPRD2
• 操作: • 执行“与”运算,但运算的结果不送回目标地址。
• 应用: • 常用于测试某些位的状态
15
第15页/共92页
例:
• 从地址为3F8H的 端口中读入一个字节数,当该数的 bit1, bit3, bit5位同时为1时,可从38FH端口将 DATA为首地址的一个字输出,否则就不能进行数 据传送。 编写相应的 程序段。
1200H

JMP

MOV
第57页/共92页
代 码 段
57
段内间接转移例
• JMP WORD PTR[BX] 设:BX=1200H
IP BX=1200
第58页/共92页

JMP

指令码

XXH XXH
;ZF=1转移
8
第8页/共92页
2.“或”运算指令
• 格式: • OR OPRD1,OPRD2
• 操作: • 两操作数相“或”,结果送目标地址
9
第9页/共92页
“或”指令的应用
• 实现两操作数 相 “或”的 运算 • OR AX,[DI]

微机原理与接口技术 第3章

微机原理与接口技术 第3章


虚拟空间(虚拟存储器地址空间):编程空间 虚拟存储器是一项硬件和软件结合的技术。 存储管理部件把主存(物理存储器)和辅存 (磁盘)看作是一个整体,即虚拟存储器。允许编 程空间为246=64T,程序员可在此地址范围内编 程,程序可大大超过物理空间。该空间对应的地 址称为虚拟地址或逻辑地址。运行时,操作系统 从虚拟空间取一部分程序载入物理存储器运行。 当程序运行需要调用的程序和要访问的数据不在 物理存储器时,操作系统再把那一部分调入物理 存储器.……数据的交换极快,程序察觉不到。
32位名称
EAX EBX ECX
8位名称 16位名称 AH AX AL BH BX BL CH CX CL
名称
累加器
基址变址 计数 数据 堆栈指针 基址指针 目的变址
EDX
ESP EBP EDI
DH DX DL
SP BP DI SI
IP
ESI
源变址
有IP、SP、BP、SI、DI共5个16位寄存器,主要作用是为寻址存 贮单元提供偏移地址。其中: • IP (Instruction Pointer)为指令指针,固定用来存放代码段中偏移 地址,在程序运行过程中,它始终指向顺序存放在存贮器中,将 要执行的指令地址(与CS联合确定下条指令的物理地址),控制器 取得这条指令后,IP令自动增加一定的值(该值等于已执行(已 取得)指令的字节数),以指向下一条将要执行的指令。
根据功能,8086的标志可以分为两类,一 类叫状态标志,另一类叫控制标志。状态标志 表示前面的操作执行后,算数逻辑部件处在怎 样一种状态,这种状态会像某种先决条件一样 影响后面的操作。控制标志是人为设置的,指 令系统中有专门的指令用于控制标志的设置和 清除,每个控制标志都对某一种特定的功能起 控制作用。状态标志位有六个,即SF、ZF、 PF、CF、AF和OF。

微机原理与接口技术第3章

微机原理与接口技术第3章

【例3-13】 已知:(SS)=3000H,(SP)=1000H,(AX)=1122H, (31000H)=1234H。 执行指令:PUSH AX POP BX
3.2.3 交换指令
格式:XCHG OPR1, OPR2 功能:两个操作数中的内容进行交换。
注:两个操作数中必须有一个在寄存器中,即不允许两个存储器之间进行交 换。 不允许使用段寄存器和立即数。 交换指令不影响标志位。
第3 章
8086指令系统(上)
本章内容提要
3.1 8086指令系统入门 3.2 数据据传送类指令 3.3 算术运算与逻辑运算类指令
3.1 8086指令系统入门
3.1.1 指令分类
数据传送类指令 算术运算类指令
字符串操作指令 处理器控制类指令
逻辑运算类指令
程序控制类指令
3.1.2 指令格式
操作码 [目的操作数][,源操作数]
注:在一条指令中不能同时使用两个基址寄存器或两个变址寄存器。例如, MOV AX, [BX][BP]和MOV CX, [SI][DI]均是非法指令。
7.相对基址加变址寻址
操作数存放在存储器中,指令中基址寄存器(BX或BP) 的内容加上变址寄存器(SI或DI)的内容,再加上指令中给出 的偏移量作为操作数的偏移地址。 操作数的物理地址为: 段地址×16+(基址寄存器)+(变址寄存器)+偏移量
注:不允许CS、IP作为目的操作数。 源操作数和目的操作数不能同时为段寄存器。 源操作数和目的操作数的类型必须匹配。 源操作数和目的操作数不能同时为存储器单元。 立即数只能作为源操作数,不能作为目的操作数。 不允许直接向段寄存器传送立即数。 该指令不影响标志位。
【例3-12】 (1)MOV (2)MOV (3)MOV

《微机原理与接口技术》徐惠民 微机原理与接口技术3章

《微机原理与接口技术》徐惠民 微机原理与接口技术3章
MOV AL,[2000H]; MOV [3000H],AL
数据传送指令
③ 两个段寄存器之间不能直接传送信息,也不允许 用立即寻址方式为段寄存器赋初值; (X) MOV DS, 100H; (X) MOV DS, ES;
④ 目的操作数,不能用立即寻址方式。
⑤ MOV指令不影响标志位
数据传送指令
2.堆栈指令
功能:从I/O端口输入数据至AL或AX.
输入指令允许把一个字节或一个字 由一个输入端口传送到AL或AX中。若端 口地址超过255时,则必须用DX保存端 口地址,这样用DX作端口寻址最多可寻 找64K个端口。
8086/8088通过 输入输出指令与 外设进行数据交 换;呈现给程序 员的外设是端口 (Port)即I/O地 址。
一般格式:
LES OPRD1,OPRD2
这条指令除将地址指针的段地址部分送入ES外,与 LDS类似。
例如: LES DI,[BX]
数据传送指令
6.标志寄存器传送(有四条标志传送指令)
⑴ LAHF (LOAD AH WITH FLAG) 将标志寄存器中的S、Z、A、P和C(即低8 位)传送至AH寄存器的指定位,空位没有定 义。
2、寄存器寻址
操作数就放在CPU的内部寄存器中,AX、BX、CX、DX、 DI、SI、SP和BP,不需要访问存储器。
例:INC CX MOV AX,BX 若执行前 AX =30A6H, BX =69EDH, CX =40D9H 则执行后 AX =69EDH, BX内容不变 CX =40DAH
3.1 8088/8086的寻址方式
– 操作数是指令执行的参与者,即各种操作的对象。 – 有些指令不需要操作数,通常的指令都有一个或两
个操作数,也有个别指令有3个甚至4个操作数。

微机原理与接口技术课件微机第三章

微机原理与接口技术课件微机第三章
它的EA是由三部分组成的,基址 寄存器BX或BP的内容加上变址寄存器的内 容再加位移量。物理地址由基址寄存器按 规则选择段寄存器,也可以使用段超越。
例:
MOV AX , 8AH[BX][SI]
该例中EA=8AH+BX+SI
物理地址=DS即数在[ ]中表示直接地址,如[1000H]; ➢只有BX,BP,SI,DI可以出现在[ ]内,它们 可以单独出现,也可以组合,但BX和BP 不允许出现在同一个[ ],SI和DI也一样;
如果
RESULT DW 3E4CH; 符号地址 MOV AX,RESULT
4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器间接给出
例: MOV SI , 61A8H MOV DX , [SI]
5、寄存器相对寻址(Register Relative Addressing)
CX 在串操作指令和LOOP指令中作计数器用
CL 在移位/循环移位指令中作移位次数计数器用
DX
在字乘法/除法指令中存放乘积高位或被除数高位或余数 在间接寻址的输入输出指令中作地址寄存器用
在字符串运算指令中作源变址寄存器用 SI 在间接寻址中作变址寄存器用
在字符串运算指令中作目标变址寄存器用 DI 在间接寻址中作变址寄存器用
IN AL , 25H
;E5 25H
MOV DX , 3E4H
OUT DX , AL
;EE
三、8086的指令格式及数据类型
操作码
操作数
指令由操作码和操作数(地址码) 组成。8086的指令长度是可变的,一条 指令一般由1-6个字节组成。
二、寻址方式介绍
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作

《微机原理与接口技术》教学课件 第3章

《微机原理与接口技术》教学课件 第3章

立即寻址
寄存器寻址
直接寻址
寄存器间接寻 址
寄存器相对寻 址
基址加变址寻 址
相对基址加变 址寻址
1 立即寻址
3.1 8086指令系统入门
指令中直接给出指令的操作数(跟在操作码的后面),取出指 令的同时就可以获得操作数,这种寻址方式称为立即寻址,这种操 作数称为立即数。立即寻址方式主要用来给寄存器或存储器赋初值。
此外,在8086指令系统中,操作码的长度一般为1~2个字节,指令的总长度一般为1~6个字节。
3.1 8086指令系统入门
把一条指令中所包含的二进制代码的位数称为 指令字长,它通常是机器字长的一倍、两倍、多倍 或半倍。例如,8086 CPU的字长为16位,故其指 令长度可以是1个字节、1个字或多个字节等。
3.1.2 指令格式
计算机指令通常由操作码和操作数两部分组成,其格式如下: 操作码 [目的操作数][,源操作数]
操作码指出了计算机 所要执行的基本操作
操作数则指明了操作 的对象
指令中操作数的个数由指令的功能决定。在8086指令系统中,根据指令中操作数个数的不同,可以将指 令分为:无操作数指令、单操作数指令和双操作数指令。
内容提要
掌握8086指令的分类和格式。 掌握8086指令中操作数和程序转移地址的寻址方式。 掌握调试程序DEBUG的使用方法。 掌握数据传送类指令的功能及用法。 掌握算术运算与逻辑运算类指令的功能及用法。
4
3.1 8086指令系统入门
3.1.1 指令分类
计算机指令是指计算机所能识别并执行的基本操作命令,这些全部操作命令的集合被称为计算机 的指令系统。
行指令: MOV AX, COUNT[BX] 操作数的物理地址为:(DS)×16+(BX)+COUNT=3000H×16+1000H+2000H=33000H,指令
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

18
3.1.2 BCD数调整指令
(2)非压缩BCD数加法调整 格式: AAA 功能:将AL中的和调整为正确的非压缩BCD数送AX 调整规则: (AL&0FH)>9或AF=1,则 (AL+6)&0FH→AL ,AH+1→AH ; 否则,AL&0FH →AL ,AH不变.
19
3.1.2 BCD数调整指令
13
3.1.1 乘除法指令
格式:CBW ; AL的最高位扩展至AH CWD ; AX的最高位扩展至DX CWDE ;AX的最高位扩展至EAX的高16位 CDQ ;EAX的最高位扩展至EDX

两指令都隐含操作数

在做8位除以8位、16位除以16位、 32位除以
32位的除法之前,应先扩展AL、AX或EAX中的被 除数
三章 程序设计的基本技术
3.1
3.2 3.3 3.4 3.5
顺序程序设计 分支程序设计 循环程序设计 串处理程序设计 子程序设计 宏功能程序设计 2
3.6
3.1 顺序程序设计
顺序程序是最简单的程序,它的执行 顺序和程序中指令的顺序完全一致
3
3.1.1 乘除法指令
1.乘法指令MUL和符号整数乘法指令IMUL
EDX
EAX

可用乘法运算将BCD数转换为二进制数
6
例 将AX中的3位BCD数转换为二进制数存入字节变量SB中
程序段如下:
M0V MOV MOV MOV MUL MOV SHR ADD MUL AND ADD
CH,10 CL,4 SB,AL AL,AH CH AH,SB AH,CL AL,AH CH SB,0FH SB,AL
3.1.3 顺序程序设计举例
例3.5 从键盘键入0~9的任一自然数N,求其立方值并将 其送显示器显示.
可用乘法运算实现,也可用查表法实现。查表法程序段如下:
INPUT LFB N
DB DB DB DB MOV MOV INT
’Please Input N(0~9):$’ ’ 0$ 1$ 8$ 27$ 64$’ 建立 ’125$216$343$512$729$’ 立方表 0 DX,OFFSET INPUT 显示 AH,9 提示信息 21H 29
格式:MUL source
IMUL source
源操作数
;符号整数乘法
source可以是字节、字或双字,可为寄 存器或存储器操作数,不能为立即数 目的操作数是AL、AX或EAX,视source的类型属性 决定是AL、AX还是EAX 在乘法指令之前必须将目的操作数送AL(字节乘) 或AX(字乘) 或EAX(双字乘) 4

扩展指令和符号整数除法仅对补码数适用 14
3.1.1 乘除法指令
如:有一符号字数组变量ARRAY,第1个字是 被除数,第2个字是除数,接着存放商和余 数,其程序段为: MOV SI,OFFSET ARRAY MOV AX,[SI] CWD IDIV WORD PTR 2[SI] MOV 4[SI],AX MOV 6[SI],DX 15
;AL=05H,AH WORD PTR SUM+1,AX ;存十位和百位
26
例3.3字变量W和字节变量B分别存放着两个非压缩BCD数,编 写求两数之积,并将它存储到JJ字节变量中的程序。 程序段如下: W DW 0307H B DB 9 JJ DB 3 DUP(0) MOV AL,BYTE PTR W ;AL=07H MUL B ;AX=003FH AAM ;AX=0603H MOV WORD PTR JJ,AX MOV AL,BYTE PTR W+1 ;AL=03H MUL B ;AX=001BH AAM ;AX=0207H ADD AL,JJ+1 ;07H+06H=0DH, 即AL=0DH AAA ;进位直接加入AH!AX=0303H MOV WORD PTR JJ+1,AX
N2×102+N1×10+N0 =(N2×10+N1)×10+N0
;暂存十位和个位
; 百位存入AL中 ;百位×10→AX ;取十位 ;百位×10 + 十位→AL ;(百位×10 + 十位)×10 →AX ;取个位 ;(百位×10 + 十位)×10 +个位→SB
7
3.1.1 乘除法指令
2.除法指令DIV和符号整数除法指令IDIV
3.1.1 乘除法指令
16位乘法指令所执行的操作是AL或AX乘以 source,乘积放回到AX或DX和AX,如下图所示
AL × sourc8 × AX sourc16
AX
DX
AX
5
3.1.1 乘除法指令
32位乘法指令所执行的操作是EAX乘以source, 乘积放回到EDX和EAX,如下图所示
EAX × sourc32
注: 同DAA,AAA的操作数也隐含为AL,且要紧跟加法指 令 AAA调整后的存放规律可理解为调整后的个位数送 AL,十位数(即进位)加到AH中.故执行该指令前AH 应清0 如:将两个BCD数的ASCII码相加,得到和的ASCII码: MOV AL,35H ; ’5’ ADD AL,39H ; ’9’,AL=6EH MOV AH,0 AAA ;AX=0104H OR AX,3030H ; AX=3134H 即’14’ 20
DX
AX
9
3.1.1 乘除法指令
32位除法指令所执行的操作如下图所示
EAX sourc32

EDX
EDX
EAX
可用除法运算(除10取余)将二进制数转换为 BCD数

10
例 将AL中的8位无符号二进制数转换为BCD数放入AX中
MOV AL,7DH MOV CL,4 MOV BL,10 MOV AH,0 DIV BL MOV BH,AH MOV AH,0 DIV BL SHL AH,CL OR BH,AH MOV AH,0 DIV BL MOV AL,BH
3.1.2 BCD数调整指令
(2)非压缩BCD数减法调整 格式: AAS 功能:将AL中的差调整为正确的非压缩BCD数送AX 调整规则: (AL&0FH)>9或AF=1,则 (AL-6)&0FH→AL ,AH-1→AH ; 否则,AL&0FH →AL ,AH不变. 如: MOV AX,0806H SUB AL,07H ;AX=08FFH AAS ;AX=0709H 22
MOV ADD AAA MOV MOV ADC MOV AAA MOV
AL,BYTE PTR W1 AL,BYTE PTR W2
SUM,AL AL,BYTE PTR W1+1 AL,BYTE PTR W2+1 AH,0
;AL=09H ; AL=10H,AF=1 ;AL=06H,AH=01H ;存个位 ;AL=08H ; AL=0FH,AF=0
16
3.1.2 BCD数调整指令
1.BCD数加法调整指令DAA和AAA
(1)压缩BCD数加法调整 格式: DAA 功能:将AL中的和调整为正确的压缩BCD数 调整规则: (AL&0FH)>9或AF=1,则AL加6;
(AL&0F0H)>90H或CF=1,则AL加60H.
17
3.1.2 BCD数调整指令
27
例3.4字变量W和字节变量B中分别存放着两个非压缩BCD数 ,编制程序求二者的商和余数,并分别存放到字变量QUOT 和字节变量REMA中。程序段如下: W DW 0909H B DB 5 REMA DB 0 QUOT DW 0 MOV AX,W AAD ;0909H63H DIV B ;63H5=13H…4,AL=13H,AH=04H MOV REMA,AH AAM ;13H0109H MOV QUOT,AX 28
12
3.1.1 乘除法指令
3. 扩展指令CBW和CWD
要把一个8位二进制数除以一个8位二进制数,要有一
个16位二进制数在AX中.所以做8位除以8位的除法前
先要把8位被除数扩展为16位,做16位除以16位的除 法前要把16位被除数扩展为32位,做32位除以32位的 除法前要把32位被除数扩展为64位.这种扩展对于无 符号数除法只需将AH或DX清0,而对符号整数除法则 要通过扩展符号位来把被除数扩展。
W1 W2
W1+1 W2+1
;AL=31H ; AL=A9H,CF=0,AF=0 ;AL=09H,CF=1 ;存个位和十位 ;AL=89H ; AL=E0H, CF=0,AF=1 ;AL=46H, CF=1 ;存百位和千位 ;处理向万位的进位
25
例3.2 求两个字变量W1和W2中非压缩BCD数之和,存入 字节变量SUM中。如:89+67=156,程序段如下: W1 W2 SUM DW 0809H DW 0607H DB 3 DUP(0)
3.1.2 BCD数调整指令
3.非压缩BCD数乘除法调整指令AAM和AAD
(1)乘法调整 格式: AAM
功能:将AL中小于64H的二进制数变换为非压缩 BCD数送AX 调整规则: AL / 0AH
如:
→ AH(十位),
AL MOD 0AH → AL(个位) MOV AL,63H AAM ;AX=0909H 23
“除10取余”法
; 将8位二进制数扩展为16位 ; 商→AL,余数→AH(个位数) ;个位暂存 ; 商→AL,余数→AH(十位数) ; BCD数十位与个位合并 ; AH中余数为BCD数百位 ;BCD数十位与个位送AL
11
如,用除10取余法将8位二进制数FFH转换为BCD数 255H的二进制运算如下图所示。
注: 该指令操作数隐含为AL,即只能对AL中的操作数 据调整 对结果调整时要用到CF,AF标志,所以调整指令 应紧跟BCD数加法指令 DAA指令会影响标志
如: MOV AX,3456H ADD AL,AH ;AL=8AH,AF=0,CF=0 DAA ;AL=90H
相关文档
最新文档