微机原理第3章2

合集下载

微机原理第三章(2)

微机原理第三章(2)

二、数据传送指令
分类 名称
基本传送指令 进栈指令 出栈指令 交换指令 有效地址送寄存器指令 指针送寄存器及DS指令 指针送寄存器及ES指令 输入指令 输出指令 换码指令 读取标志指令 设置标志指令
格式
MOV DST,SRC PUSH OPRD POP OPRD XCHG DST,SRC LEA REG, SRC LDS REG, SRC LES REG, SRC IN AL, PORT OUT PORT, AL
(3)堆栈操作指令可以使用除立即数以外的其他寻址方式。 (4)CS寄存器可以入栈,但不能随意弹出一个数据到CS (5)每执行一条指令,(SP)自动增减2
(6) 在使用堆栈指令时,要按“先进后出”原则来编写程序
(7)堆栈指令不影响标志位。
堆栈在计算机工作中起着重要的作用,如果在程序 中要用到某些寄存器,但它的内容却在将来还有用,这 时就可以用堆栈把它们保存下来,然后到必要时再恢复 其原始内容。例如: PUSH AX PUSH BX ┇ 其间程序用到AX和BX寄存器 ┆ POP BX POP AX 堆栈在子程序结构的程序以及中断程序中也很有用, 这将在以后加以说明。
数据写入堆栈称为压入堆栈(PUSH),也叫入栈。 数据从堆栈中读出称之为弹出堆栈(POP),也叫出栈。 先入栈的数据由于存放在栈的底部,因此后出栈;而后 入栈的数据存放在栈的顶部,因此先出栈。 微型计算机多在主存储器中开辟堆栈。这种堆栈 称之为外堆栈。外堆栈的主要优点是堆栈容量大,可以 认为堆栈空间是无限的,因此能实现无限制的中断嵌套 和子程序嵌套。但外堆栈的操作速度较慢。 另一类堆栈称之为内堆栈,所谓内堆栈就是在CPU 芯片的寄存器中开辟堆栈。MCS-51的堆栈就是开辟在 内部RAM中。内堆栈的主要优点是操作速度快,但堆 栈容量有限。此外,由于堆栈的占用,也会减少内部 RAM的用户可利用单元

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

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

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

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

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

微机原理 第三章 微处理器

微机原理 第三章  微处理器

青岛理工大学琴岛学院
表3.1 通用寄存器的特定用法
寄存器 操作 寄存器 操作 在移位指令中作 移位次数计数器
AX
字乘,字除,字I/O
CL
AL
字节乘,字节除,字节I/O, 查表转换,十进制运算
字节乘,字节除
DX
字乘,字除指令 中作辅助累加器
堆栈操作,做堆 栈指针
AH
SP
BX
查表转换,做基址寄存器
SI
青岛理工大学琴岛学院
2)逻辑地址与物理地址
逻辑地址(LA)和物理地址(PA):
物理地址:就是存储器的实际地址,它是指CPU和存储器 进行数据交换时所使用的地址(20位)。
逻辑地址:是在程序中使用的地址,它由段基址和偏移地
址两部分组成(16位)。
物理地址=段基址(左移4位)+偏移量
形成20位段 起始地址 16位
青岛理工大学琴岛学院
2 . 8086/8088CPU的寄存器结构
8086/8088CPU中可供编程使用的有14个16位寄存器, 按其用途可分为3类:通用寄存器、段寄存器、指针和标 志寄存器,如所示。
AH BH CH DH SP BP SI DI FLAGS IP CS DS SS ES AL BL CL DL 累加器 基址寄存器 计数寄存器 数据寄存器 数据寄存器 通用寄存器 地址指针和 变址寄存器
2
3 4 5
6
存取一般变量(除3、4、5项外)
DS
有效地址EA
根据寻址方式计算出来的偏移量又叫操作数的有效地址EA
青岛理工大学琴岛学院
4. CPU对堆栈的设置与操作
堆栈的功能:用于暂存数据和现场保护 (特别是在过程调用或中断处理时暂存断 点信息) 堆栈的解释:实际上是由特定存储单元 构成的一个存储区,只是在这个存储区中 信息的出入严格按照“先进后出”或“后 进先出”的规则进行。

微机原理第三章习题答案

微机原理第三章习题答案

习题3答案1. 指出下列指令的错误原因。

(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数(5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前(6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。

(请给出3种方法)方法1:MOV BX, 0方法2:SUB BX, BX方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。

(1) 判断AX的值,若AX等于0,则转到标号LABEL处。

(请写出3种方法)方法1:CMP AX, 0JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果; 因此指令执行后AX内容不会受到破坏方法2:TEST AX, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。

; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。

MOV AH, ALAND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。

微机原理课件第3章2

微机原理课件第3章2
MOV AX ,TABLE [BP] SRC的寻址方式为寄存器相对寻址。 指令完成的操作为:
(AX) (DS: OFFSET TABLE+(BP))
3.3 数据寻址方式
④基址变址寻址Based Indexed Addressing
要寻找的操作数在某存储器单元之中,该单元
有效地址的一部分在 BBXP中,另一部分在 中D。SII
3.3 数据寻址方式
…… ……
MOV AX , [BX]
DS: 3 0 0 0 0 H
+BX1: 0 5 0 H
PA: 3 1 0 5 0 H
8BH 07H
AX AH AL
31050H 31051H
存储器
操作码
CS 段
数据段
3.3 数据寻址方式
例2:MOV ES:[SI] , AL 指令完成的功能为: (ES:(SI)) (AL)
寄存器寻址既可以作DST,也可以作SRC。
3.3 数据寻址方式
3.存储器寻址
这类寻址方式,操作数在存储器中,而存 储器单元的地址由以下五种寻址方式的任何 一种均可以找到。但在指令中给出的只是要 寻找的操作数所在单元的段内偏移地址,而 操作数所在单元的段地址除非指令中用段前 缀特别指明,否则是默认的DS。

∴(AX)=1234H
存储器
3.3 数据寻址方式
立即寻址主要用来给REG或M赋初值。 注 意:只能用于源操作数字段,不能用于目的操作 数字段。如:MOV 12H , AL (语法错误)
3.3 数据寻址方式
2.寄存器寻址
数据放在指令规定的寄存器中,对16位数据, REG可以是AX、BX、CX、DX、SI、DI、SP、 BP以及段寄存器,而对于8位数据, REG可以是 AH、AL、BH、BL、CH、CL、DH、DL。

微机原理第3章.ppt

微机原理第3章.ppt
(a) 指令 偏移量 段地址
EA 有效转移地址
指令 寻址方式
CS 指令
寻址方式 IP
根据寻址 方式计算 或
EA
(b)
寄存器 有效转移地址
有效转移地址 存储器
根据寻址 方式计算
EA
内存中 两个连续的字 转移地址偏移量
段地址
(c)
(d)
(a)段内直接(相对)寻址; (b) 段内间接寻址; (c) 段间直接寻址; (d) 段间间接寻址
(DS)×10H=30000H
(SI)=2000H
+
10H
32010H
存储器 操作码 操作码
10 H
(DS)×10H=30000H (BX)=1000H
+ COUNT=1050H 32050H
30000H
AX

CX
40 H
50 H
32010H
存储器 操作码 操作码
50 H 10 H
30000H …
32050H 30 H 40 H
(DI)=1500H
+
1200H
83700H
存储器
(SS)×10H=60000H
(BP)=1000H
(SI)=1600H
+
200H
62800H
存储器
AX
80 H
56 H
80000H …
83700H 56H 80H
CX
78H
56H
60000H …
62800H 56 H
78 H
2019/12/17
19
8. 隐含寻址
2019/12/17
15
6. 基址变址寻址

微机原理课程总结3章

微机原理课程总结3章

第3章从8086到Pentium系列微处理器的技术发展由于课时的关系,本章内容一般作为自学或讨论学习的内容。

但是,本章内容对本课程学习的升华具有潜在的意义,故在此也进行提示。

3.1分析教材内容本章主要对80386 CPU,同时也对80486及Pentium微处理器的改进之处和特点进行简单提示。

3.1.1分析重点难点问题1. 80386微处理器1) 80386的特点及其体系结构,请参见教科书P50-52,注意:硬件支持多任务处理。

2) 80386引脚的功能,请参教科书见P53,注意:理解协处理器接口信号。

3) 80386的寄存器组,请参见教科书P54-56,注意:掌握各寄存器的功能。

4) 80386的工作模式,请参见教科书P57,注意:理解三种模式,3种工作模式可以相互转换。

5) 80386中断,请参见教科书P59-60,注意:80386的中断管理机制在实模式和保护模式下是不同的。

2. 80486微处理器1) 80486的主要特点,请参见教科书P60-61。

2) 80486的内部结构,请参见教科书P61-64。

注意和80386的区别。

3. Pentium微处理器1) Pentium体系结构,请参见教科书P65-67,注意Pentium微处理器在486体系结构基础上,还作了哪些增强性的改进。

2) Pentium Ⅱ微处理器,请参见教科书P68。

注意其结构上的特色。

3) Pentium Ⅲ微处理器,请参见教科书P69。

注意其SSE指令。

4) Pentium Ⅳ微处理器,请参见教科书P69。

注意其两组独立工作的ALU。

3.1.2 典型例题解析本章例题主要从微处理机体系结构和新的设计思想出发,以8086微处理机为基础,把重点放在Pentium微处理机的新体系结构和新的设计思想上。

例如Pentium微处理机新体系结构的特点?相对8048体系结构有哪些增强点等?这些问题有助于提高计算机系统结构的水平。

有关这方面的问题,上节已很明确的写出,在此不再赘述。

(完整版)微型计算机原理(第三章课后答案)

(完整版)微型计算机原理(第三章课后答案)

微型计算机原理第三章80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。

答:(1)BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。

(2)EU的作用:执行指令,并为BIU提供所需的有效地址。

(3)并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。

这样就实现了取指和执行指令的并行工作。

2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。

其主要作用是:(1)数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。

AX(Accumulator)称为累加器。

用该寄存器存放运算结果可使指令简化,提高指令的执行速度。

此外,所有的I/O指令都使用该寄存器与外设端口交换信息。

BX(Base)称为基址寄存器。

用来存放操作数在内存中数据段内的偏移地址,CX(Counter)称为计数器。

在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。

DX(Data)称为数据寄存器。

在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。

(2)地址寄存器:一般用来存放段内的偏移地址。

SP(Stack Pointer)称为堆栈指针寄存器。

在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。

BP(Base Pointer)称为基址寄存器。

作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。

SI(Source Index)称为源变址寄存器。

SI存放源串在数据段内的偏移地址。

微机原理第三章

微机原理第三章
15
执行周期也需要三个节拍:这里以LDA例行程序为 例:
(4) T3=1,IR高四位送至控制器进行分析,IR低四 位送总线,MAR接受此低四位并指向PROM的 某个单元。(第一次访问的是指令区,第二次访 问的是数据区)
CON= CPEP LMER LIEILAEA SUEU LBLB
= 0 0 1 0 01 0 0 0 0 0 0
果而分别跳转至其他子程序。 3·循环程序——程序进行过程中,在某一循环体进行若干
次循环运行,然后再继续前进。 4·调用子程序~一程序进行至某一阶段,调用存储于某存
储区中的某个子程序,然后返回至主程序继续运行下去。
35
【例3.1】程序清单(循环程序) R0 LDA 6H 把(R6)装人A去 R1 SUB 7H 从(A)减去(R7)
(2)运行/停车触发器 (3)“启动”和“清零”按钮
图3-7用方块图展示了控制部件各个电路间的关系。
27
28
3.1-3.5节小结
• 1. 掌握机器周期、时钟周期(机器节拍)的概念 • 2. 以一个指令为例,掌握各机器节拍所完成的工作 • 3. 了解控制部件的组成电路 • 作业(P57):3.2、3.3、3.5、3.6、3.7、3.12
LDA=1
25
由图可见五条指令的控制器就已经这么复杂,由此可 知要扩大指令系统,其控制矩阵的结构以及设计上的问题 是相当复杂的。这样从结构上用逻辑电路的方法来实现控 制字的方法称为硬连线方法(硬件方法)。也可以用软件 的方法来实现这个目的,这就是所谓微程序法。这将在后 面做简要介绍。
26
3.5.3 其它控制电路: (1)时钟脉冲发生器:它一般由两部分组成,即时钟振 荡器及射极输出器。前者是石英晶体振荡器,后者则用 以降低输出电阻,以提高带负载能力。

微机原理第三章习题与参考答案

微机原理第三章习题与参考答案

第三章习题与参考答案3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。

指出下列指令的寻址方式和物理地址。

(1) MOV AX,0ABH 立即寻址无(2) MOV AX,BX 寄存器寻址无(3) MOV AX,[l000H] 直接寻址 10000H(4) MOV AX,DATA 直接寻址 (DS*16+DATA )(5) MOV AX,[BX] 寄存器间接寻址 10100H(6) MOV AX,ES:[BX] 寄存器间接寻址 20100H(7) MOV AX,[BP] 寄存器间接寻址 30200H(8) MOV AX,[SI] 寄存器间接寻址 10050H(9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH(10) MOV AX,DISP[BX] 寄存器相对寻址 11100H(1l) MOV AX,[BX+SI] 基址变址寻址 10150H(12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H3.2 分别说明下例指令采用的寻址方式和完成的操作功能。

(1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器(2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器(3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器(4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元(5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元(6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元(7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器(8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元(9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元3.3 判断下列指令正误,如果错误请指出原因。

微机原理第三章(基本工作原理)

微机原理第三章(基本工作原理)

31
初级程序设计举例
• • • • • • 所谓初级程序是包括下列的程序模式: 简单程序 分支程序 循环程序 调用子程序 书上(P58-64)
32
控制部件的扩展
• 控制矩阵,变得更庞大而复杂 • 增加了指令 • 一个机器周期也是6拍,前三拍为取指周 期,后三拍为执行周期。
33
现代技术在微型计算机中的应用
13
14
程序及数据的输入方法
• 拨动相应单元的开关 • 将程序和数据通过拨动每个数据位的开 关来置一或置零。 • 置一:开关拨向断开的方向 • 置零:开关拨向接通的方向 • 打х:表示随意状态
15
执行指令的例行程序
环形计算器及机器节拍
T0 T1 T2 T3
16
工作过程:取、分析、执行
• 取指令:根据PC内容取出指令,送至IR,并为取 下一条指令做好准备,共包括3个步骤 地址节拍T0: • 将PC内容释放到总线上,Ep=1 • MAR接收总线上传来的地址,Lm=1 存储节拍T1: • ROM将指定单元内容送到总线上,Er=1 • IR接收总线上传来的指令,Li=1 增量节拍T2: • PC内容加1,做好取下一条指令的准备工作,
IR
Ei
ALU
CLK
Eu
CLR CLK
CON
Ep Cp Li Ei…Su…Lo
B
Lb
CLK
Lm
CLK
>MAR
OUTP <
Lo CLK
Er
ROM
LED
5
模型机的组成部件
• • • • • •


PC:程序计数器,其内容为将取出指令的存储地址 MAR:存储器地址寄存器 PROM:16*8只读存储器,存放程序与数据 IR:指令寄存器 CON:控制部件,产生所有控制信号 A:累加器 B:辅助寄存器 ALU:算术逻辑单元 OUTP:输出寄存器 LED:显示设备,显示最后运算结果

微机原理第3章课件

微机原理第3章课件
6
“与”指令应用例
开始 取待输出数的 偏移地址
取输入口地址
读入状态字
测试bit1位状态
N
Bit1=1?
Y
取输出口地址
输出一个字
7
“与”指令应用例
LEA SI,DATA MOV DX,3F8H WATT:IN AL,DX AND AL,02H JZ WATT MOV DX,38FH MOV AX,[SI] OUT DX,AX
49
程序控制指令
转移指令 循环控制 过程调用 中断控制
50
程序的执行方向
程序控制类指令的本质是:
控制程序的执行方向
决定程序执行方向的因素:
CS,IP
控制程序执行方向的方法:
修改CS 和IP ,则程序转向另一个代码段执行; 仅修改IP,则程序将改变当前的执行顺序,转向本
代码段内其它某处执行。
ATJAZENNSWDDTATAAATLLL,,,0222AHAHH CTJXZEMOSWPRTAAATALTLL,,,0282HAAHH JTJNENSZZT WAWLA,ATT2TT0H
JZ WATT
;ZF=1转移
MOV DX,38FH MOV AX,[SI] OUT DX,AX
17
二、移位指令
串传送指令常与无条件重复前缀连用
37
串传送指令
对比用MOV指令和MOVS指令实现将 200个字节数据从内存的一个区域送到 另一个区域的程序段。
P104例3-12
38
串传送指令例
用串传送指令实现200个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT
34

微机原理讲义(第三章)

微机原理讲义(第三章)
CS DS、SS、ES
通用寄存器 AX、BX、CX、DX、 SI、DI、BP、SP
指令是计算机执行某种操作的命令。计算机为了 完成不同的功能而要执行不同的指令。一台计 算机能够识别和执行的全部指令称为该计算机 的指令系统或指令集。 不同的微处理器有不同的指令系统, 80X86/Pentium系列微处理器的指令集是在 8086/8088CPU指令系统上发展起来的。
第3章 80X86/Pentium 指令系统
第3章 80X86/Pentium 指令系统
• 8086/8088指令系统中对段地址有个基本 规定: • 在正常情况下,由寻址方式中有效地址 规定的基地址寄存器来确定段寄存器, 即只要寻址方式中出现BP寄存器作为基 地址,段寄存器一定采用堆栈段SS,其余 的情况都采用数据段DS。
第3章 80X86/Pentium 指令ቤተ መጻሕፍቲ ባይዱ统
第3章 80X86/Pentium 指令系统
关注以下三个方面: • 功能 • FR • 结果
第3章 80X86/Pentium 指令系统
数据传送指令
通用数据传送指令
MOV PUSH POP XCHG XLAT IN OUT
LEA LDS LES
MOV
PUSH POP XCHG XLAF IN OUT
第3章 80X86/Pentium 指令系统
设DS=1200H, BX=05A6H, BP=40A0H, SI=2000H, 位移量disp=1618H • MOV AX , [BP]
SS=5000H, DI=3000H,
EA=40A0H PA=SSx16+EA=50000H+40A0H=540A0H 执行结果: 将堆栈段540A0H和540A1H两单元的内容取出送 至AX。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
26
非循环移位指令

左移n位与乘以2n等效,可使用SHL/SAL指令 例如: 6x22=00000110Bx100B=00011000B 同样,右移n位与除以2n等效,若是无符号数, 则右移使用逻辑右移SHR;如果是有符号数, 则右移使用算术右移SAR。 利用移位指令编制乘除运算程序,其执行时间 比直接用乘除指令快,速度可提高5-6倍
31
循环移位指令的应用

用于对某些位状态的测试;


高位部分和低位部分的交换;
与非循环移位指令一起组成32位或更长字
长数的移位。
32
程序例
MOV SI,1000H MOV DI,3000H MOV CX,4 BBB:MOV AL,[SI] MOV BL,AL AND AL,0FH OR AL,30H MOV [DI],AL INC DI MOV AL,BL PUSH CX MOV CL,4 SHR AL,CL OR AL,30H MOV [DI],AL INC DI INC SI POP CX DEC CX JNZ BBB HLT
;ZF=1转移
MOV AX,[SI]
OUT DX,AX
17
对逻辑运算指令的说明:
1.对应位进行相应的逻辑运算 2.AND指令一般用于将指定位清0 3.OR指令一般用于将指定位置1 4.XOR指令一般用于将某个寄存器清0 5.TEST指令一般用于测试寄存器中的指定位是0 还是1,在TEST指令后常跟一条条件转移指令
27


循环移位指令
左移 ROL

不带进位位的循环移位
右移 ROR 左移 RCL

带进位位的循环移位
右移 RCR

循环移位指令的格式、对操作数的要求与非循环移位指令相同
28
不带进位位的循环移位
CF
CF
29
带进位位的循环移位
CF
CF
30
循环移位指令




操作数可以是寄存器或内存单元中的8位或16位操作 数 ROL和ROR不含CF循环移位指令,8位操作数移动8 次后还原 RCL和RCR含CF循环移位指令,8位操作数移动9次后 还原 如果循环移位次数为1可以直接由指令给出,如果循环 移若干次,则必须用CL寄存器预先指定所移的位数 对于循环移位指令,只有循环移位次数是1时,OF才 有意义,循环移位后如果CF和最高位不同,OF=1, 否则OF=0
18
2. 移位指令
非循环移位指令 循环移位指令

移动一位时由指令直接给出;移动两位及以上, 则移位次数由CL指定。
19
非循环移位指令

逻辑左移 算术左移 逻辑右移 算术右移
20
算术左移和逻辑左移

格式: SAL SAL SHL SHL OPRD,1 OPRD,CL OPRD,1 OPRD,CL

数据块长度值由CX指定 可增加自动重复前缀以实现自动修改CX内容。
36
重复前缀

REP REPE
无条件重复 相等重复
CX≠0 重复


REPZ
为零重复
CX≠0 ZF=1
条件重复 CX≠0 ZF=0
REPNE 不相等重复
REPNZ 不为零重复
37
串操作指令流程
取源串地址 传送一个字节或字
13

“测试”指令


格式: TEST OPRD1,OPRD2
操作: 执行“与”运算,但运算的结果不 送回目标地址。 应用:常用于测试某些位的状态

14
“测试”指令例

从地址为38F0H的端口中读入一个字节数, 如果该数的bit1位为1,则可从38FEH端口
将DATA为首地址的一个字输出,否则就不
35
串操作指令的特点

源串一般存放在数据段(DS),偏移地址由SI指定。允许段重设; 目标串必须在附加段(EI),偏移地址由DI指定; 串操作指令是唯一源操作数和目的操作数都在内存中的一组指令

指令自动修改地址指针,修改方向由DF决定。
DF=0 DF=1 增地址方向; 减地址方向;
对字符串操作,SI、DI每次变量为±1;字串操作每次变量为± 2
能进行数据传送。
编写相应的程序段。
15
“测试”指令例
开 始 测试bit1位状态 取待输出数的 偏移地址 N
Bit1=1? Y
取输入口地址
取输出口地址
读入状态字
输出一个字
16
“测试”指令例
LEA SI,DATA
MOV DX,38F0H
WATT:IN AL,DX TEST AL,02H JZ WATT MOV DX,38FEH
8
“或”指令的应用

实现两操作数相“或”的运算; 使某些位不变,某些位置“1”

在不改变操作数的情况下使OF=CF=0
9
“或”指令的应用例

OR AX,[DI]
OR CL,0FH
OR AL,AL
JPE GOON
OR AX,AX
OR AL,80H
GOON:….
偶校验转移 (PF=1)
10
0送累加器AL
区域首地址送ES:DI
串长度送CX
执行串送存指令
置方向标志DF
p139
50
五、程序控制指令
转移指令 循环控制 过程调用 中断控制
51
1. 转移指令
考虑:

指令的存放地址 实现程序转移的原理
52
转移指令
通过修改指令的偏移地址或段地址及偏移地址 实现程序的转移 无条件转移指令
无条件转移到目标地址,执行新的指令
有条件转移指令
在具备一定条件的情况下转移到目标地址
53
无条件转移指令

格式:
JMP OPRD 目标地址
与JMP在同 一代码段
与JMP不在同 一代码段
原则上可实现在整个内存空间的转移
54
无条件转移指令
段内转移
转移的目标地址在当前代码段内 由指令中的寄存器 或存储器操作数指 出目标地址
指令中直接给 出目标地址
目 标 操作数

执行与CMPS指令相似的操作,只是这里的源操作数 是AX或AL
45
串扫描指令的应用

常用于在指定存储区域中寻找某个关键字。
46
串装入指令

格式: LODS OPRD LODSB LODSW
操作:对字节: AL 对 字: AX
源操作数

([DS:SI]) ([DS:SI])
47
串装入指令

用于将内存某个区域的数据串依次装入累加 器,以便显示或输出到接口。
LODS指令一般不加重复前缀。

48
串送存指令


格式: STOS OPRD STOSB STOSW 操作:对字节: AL 对 字: AX
目 标 操作数
([ES:DI]) ([ES:DI])
49
串送存指令例

内存某个区域清零
设计思想:
“或”指令的应用
将一个二进 制数9变为字 符‘9’

11
“非”运算指令


格式:NOT
OPRD
操作:操作数按位取反再送回原地址
指令中的操作数不能是立即数
指令的执行对标志位无影响 例:NOT BYTE PTR[BX]
12
“异或”运算指令

格式: XOR OPRD1,OPRD2 操作: 两操作数相“异或”,结果送目 标 地址 两操作数自身相异或,结果 XOR AX,AX

数 据 段
57
无条件转移指令
段间转移
转移的目标地址不在当前代码段内
指令中直接给 出目标地址
由指令中的32位存 储器操作数指出目 标地址
段间间接寻址
58
段间直接寻址
无条件段间转移

段内直接寻址
JMP FAR Label
IP

JMP XXH XXH XXH XXH 代 码 段 1
远地址标号
Label与 JMP之间 的位移量
串传送指令

对比用MOV指令和MOVS指令实现将
200个字节数据从内存的一个区域送到 另一个区域的程序段。
41
串传送指令例

用串传送指令实现200个字节数据的传送:
LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT
42
串比较指令

格式: CMPS OPRD1,OPRD2 CMPSB CMPSW [DS:SI] [ES:DI] 串比较指令常与条件重复前缀REPE/REPZ连用, CX≠0且比较的字节相等(ZF=1)时,继续比 较,用前缀REPNE/REPNZ, CX≠0且比较的 字节不等(ZF=0)时,继续比较 指令的执行不改变操作数,仅影响标志位。 通过前缀是现在两个字符串中寻找第一个不等 的元素或第一个相等的元素
5
“与”指令的应用

实现两操作数相与的运算; 使目标操作数的某些位不变,某些位清零; 在操作数不变的情况下使CF和OF清零。 实现手段:
6
“与”指令应用例


AND BL,[BX]
AND AL,0FH
AND AX,AX
7
“或”运算指令

格式: OR OPRD1,OPRD2 操作: 两操作数相“或”,结果送目标地 址
程序 功能?
33
程序例

将1000H开始存放的 四个压缩BCD码转换 为ASCII码存放在 3000H开始的单元中 去。
相关文档
最新文档