第3章3-指令系统

合集下载

第3章 指令系统(BH)

第3章 指令系统(BH)
• 指令:是CPU根据人的意图来执行某种操作的命令。
• 程序设计语言:是实现人机交换信息的基本工具,
分为机器语言、汇编语言和高级语言。 能直接识别和执行的语言。
• 机器语言:用二进制编码表示每条指令,是计算机
• 汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的。
MOV direct,Rn;
111 1rrr direct
(Rn)
direct
MOV direct, direct;
1000 0101 源 direct 目的 direct
(源 direct) 目的 direct
MOV direct,@Ri ;
1000 011i direct
((Ri))
direct
• 例如
计算机科学学院
电子信息科学教研室
12
• 例如:将片内RAM 65H单元内容47H送A,可执行 指令“MOV A,@R0”。其中R0内容为65H。如 图所示:
以指令中所指定 的R0内容(65H) ① 为指针
地址 数据存储器
R0
65H

② A
47H
将片内RAM 65H单 元内容47H送A
65H
11
计算机科学学院
电子信息科学教研室
4、寄存器间接寻址
• 寄存器间接寻址:操作数的地址事先存放在某个寄
存器中,寄存器间接寻址是把指定寄存器的内容作为 地址,由该地址所指定的单元内容作为操作数。
• 89C51规定R0或R1为间接寻址寄存器,它可寻址内部
地址RAM低位的128B单元内容。还可采用DPTR作为 间接寻址寄存器,寻址外部数据存储器的64KB空间。

第三章 指令系统--指令

第三章 指令系统--指令

寻址方式指令系统
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
通用传送指令
累加器专用传送指令
地址传送指令
标志传送指令
对标志位的影响: 除SAHF和POPF指令外,其余的所有数据传送类指令
格式:
功能:
操作数类型:
DS,100H

堆栈:执行
PUSH
POP
SS指向堆栈段的起始位置SP指定栈顶
PUSH AX PUSH DS POP DS POP AX
格式:
oprd1,
立即数、段寄存器和
不影响
通用传送指令
累加器专用传送指令地址传送指令
标志传送指令
LEA (Load Effective Address)
LDS (Load pointer into register and DS) LES (Load pointer into register and ES)
LEA LEA
LEA
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
实现二进制
所有算术运算指令均所有算术运算指令均
四则运算是计算机经常进行的一种操作。

请注意算术运算指令对
只有一个操作数:寄存器或存储单元对操作数加
用于计数器和地址指针的调整
不影响进位
对操作数减
用于计数器和地址指针的调整不影响进位。

第三章 指令系统

第三章  指令系统

(1) 三地址双操作
50
指令
数指执令行一条三地址的加法指令需要访问514
下条指令
次主.存。
个 ( 假 单 存A显 设 元 放1号第中地指中在三单)址令,主一取地O,存第存元址次第P指放一的(双中从二令在、1A操2取5操的主第0作第0作含存二0)数一义 的 操号数存指和→为 5 作操令单,的2: 0 数A有作元第303分3号0数中四0别,取次0第指将号三令加单次,法元从第的。2二结1200000次果0从保第第1存一二号操操0到...单作作0主元数数
寄存器/存储器:直接给出寄存器或存储 器的地址码(名称)即可; 注:寄存器(CPU内部或外围设备内部) 及存储器的编址方式: 1)字编址、字节编址、位编址; 2)统一编址、非统一编址
操作数的编码方式
例:设某机主存容量为16MB ,机器 字长16 位,若最小寻址单位为字节 (按字节编址) ,其地址码为多少位? 若最小寻址单位为字(按字编址) ,其 地址码又为多少位?
共需12 条指令,其中7 条一地址的进、出栈指令, 5 条零地址的算术运算指令。进、出栈指令3 次访 存,算逻指令4 次访存,执行此程序共访存7 × 3 + 5 × 4 = 41 次。
例: 某一机器的指令系统,操作码8 位, 地址码均为16 位,CPU 与主存之间每次传 送16 位数据。A 、B 、C 、D 、E 表示字地 址,存放16 位数据。
常用指令寻址方式
顺序寻址方式 跳跃寻址方式:直接、相对、间接
栈及相关概念
1、栈的分类: 用寄存器实现堆栈(串联堆栈) 内存中开辟堆栈区
自底向上生成堆栈 自顶向下生成堆栈 2、栈的建立: 将栈顶地址传送到SP中 3、栈的操作: PUSH/POP、MOV
IA32指令系统

第3章指令系统

第3章指令系统
解:程序如下: 程序如下: ORG NUM DATA STRING DATA START: CLR MOV LOOP: LOOP: CJNE SJMP NEXT: NEXT: INC INC SJMP COMP: COMP: MOV SJMP 0800H 20H 21H A R0, R0,#STRING @R0, @R0,#24H,NEXT COMP A R0 LOOP NUM, NUM,A $
单片机原理 及接口技术
第3 章
89C51单片机指 89C51单片机指 令系统
LOGO
LOGO
程序设计举例
一 二 三 四 五 六
简单程序设计举例 分支程序 循环程序 子程序设计举例 代码转换程序设计举例 运算类程序设计举例
BACK
LOGO
一、 简单程序设计举例
例1 :拆字。将片内RAM 20H单元的内容拆成两段,每段 拆字。将片内RAM 20H单元的内容拆成两段 单元的内容拆成两段, 四位。并将它们分别存入21H 22H单元中 程序如下: 21H与 单元中。 四位。并将它们分别存入21H与22H单元中。程序如下:
练习: 练习: 1.将片外RAM 2000H单元开 始的20个字节,传送到片 内RAM 30H单元开始的单元 中去。 2.将片内RAM 20H单元开始 的10个字节,传送到片内 RAM 30H单元开始的单元中 去。 3.将片内RAM BK1单元开始 的COUNT个字节,传送到片 外RAM BK2单元开始的单元 中去。
Back
LOGO
3.4
思考题与习题
1. 简述下列基本概念: 指令、指令系统、机器语言、汇编语言、高级 语言。 2. 什么是计算机的指令和指令系统? 3. 简述89C51汇编指令格式。 4. 简述89C51的寻址方式和所能涉及的寻址空间。 5. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?

第3章.指令系统控制程序转移类指令new下

第3章.指令系统控制程序转移类指令new下

;3字节指令
同样地,使用时,可以将rel理解成标号,即: CJNE A,#data, 标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
⑵比较(不相等)转移指令
① CJNE A,#data,rel
;先(PC)+3→PC
若(A)>#data,则(PC)+rel→PC,且0→CY; 若(A)<#data,则(PC)+rel→PC,且1→CY; 若(A)=#data,则顺序执行,且0→CY。
② rel为负数时,范围为:-128~-1 (80H~FFH)。
③相对转移指令“SJMP rel”
★正向跳转时: rel=目的地址-源地址-2
=地址差-2。
例如:
0157H
0100H:SJMP rel
设转移的地址为0157H,则: rel=0157H-0100H-2=55H。故该指令可写成:
0100H:SJMP 55H 其机器码为: 80H 55H
⑵位置1指令
SETB C SETB bit
; 1→ CY。 1字节指令 ;1→bit 。 2字节指令
2. 位修正指令
⑶位取反指令
CPL C
;(C)→C, 1字节指令
CPL bit ;(bit) → bit。 2字节指令
3. 位逻辑运算指令 ⑴位逻辑“与”指令 ANL C, bit ;(C) ∧ (bit)→C。 2字节指令 ANL C, /bit ;(C) ∧ (bit) →C。 2字节指令
; 否则顺序执行。
JNZ rel ;(PC)+2→PC。若A≠0,则转移到(PC)=(PC)+rel ;
;否则顺序执行。

第3章 8086(8088)CPU指令系统

第3章 8086(8088)CPU指令系统
数据段 BX + SI 10H
20H 00H
00H 34H 12H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
16
+
3000H:3000H
AH
AL
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
●存储器寻址之相对基址加变址寻址(Base
9
第3章 8086/8088CPU指令系统
3.1.3 操作数寻址方式
4.1操作数寻址方式
所谓操作数的寻址方式,是在指令格式中怎样有效的表示出操 作数的存放位臵,CPU在执行该指令时,按照指令格式中的表示找 到并对数据进行存取。 1.立即寻址(Immediate Addressing) 立即寻址中的操作数作为指令的一 部分存放在代码段中,在取指阶段数据 随指令一起被取到CPU,这种数据在指 令格式中的直接表现为常数。 如:MOV AL,34H

2
第3章 8086/8088CPU指令系统
汇编语言指令或符号指令:用字母和其它一些符 号组成的“助记符”与操作数等表示的指令称为汇编 语言指令或符号指令。 例如: MOV AX, BX ; AX←BX 而其二进制代码(机器代码)为89D8H,就是 1000 1001 1101 1000 B 不易理解,不易记忆。助记符是MOV。
操作码
操作数
4
第3章 8086/8088CPU指令系统
3.1.1 8086/8088指令格式
4.1操作数寻址方式
8086/8088机器指令格式通常1-6个字节组成。典型的指令格式 由2个字节组成,如下图所示。
操作码 D W MOD REG R/M

第3章--Cortex-M3-指令系统

第3章--Cortex-M3-指令系统

3.2.2指令的可选后缀
(2)!后缀 如果指令地址表达式中不含!后缀,则基址寄存器中的地址值不会发生变化。 指令中的地址表达式中含有!后缀时,指令执行后,基址寄存器中的地址值将发 生变化,变化的结果如下: 基址寄存器中的值(指令执行后)=指令执行前的值+地址偏移量
例 3.3 分别执行下面两条指令有何区别?
18
3.3 指令的寻址方式
• 3.3.1 立即数寻址 • 3.3.2 寄存器寻址 • 3.3.3 寄存器间接寻址 • 3.3.4 寄存器移位寻址 • 3.3.5 基址变址寻址 • 3.3.6 多寄存器寻址 • 3.3.7 相对寻址 • 3.3.8 堆栈寻址
3.3.1立即数寻址
• 立即数寻址也叫立即寻址,操作数本身就在指令中给出,取出指令也就
第3章 Cortex-M3 指令系统
1
第3章 Cortex-M3 指令系统
• 3.1 指令基础 • 3.2 汇编语言 • 3.3 寻址方式 • 3.4 指令集
2
3.1 指令基础
• 3.1.1 程序设计语言的层次结构 • 3.1.2 程序的执行过程 • 3.1.3 Cortex M3寄存器
3.1.1程序设计语言的层次结构
S后缀通常用于对条件进行测试,例如是否有溢出,是否进位等;根据 这些变化,就可以进行一些判断,如是否大于,是否相等;从而可能影响 指令执行的顺序。
✓ 条件后缀和S后缀的关系如下: 如果既有条件后缀又有S后缀,则书写时S排在后面, 如:ADDEQS R1,R0,R2 该指令在Z=1时执行,将R0+R2的值放入R1,同时刷新条件标志位。
无法表示的32位数, 只有通过逻辑或算术运算等其它途径获得了. 比如0xffffff00, 可以通过0x000000ff按位取反得到.

单片机-第三章

单片机-第三章

间接寻址寄存器前缀, @Ri, @ 间接寻址寄存器前缀,如@Ri,@A+DPTR (X) X中的内容。 中的内容。 寻址的单元中的内容。 ((X)) 由X寻址的单元中的内容。 箭头右边的内容被箭头左边的内容所取代。 → 箭头右边的内容被箭头左边的内容所取代。
单片机原理及接口技术——自动化系 单片机原理及接口技术——自动化系
单片机原理及接口技术——自动化系 单片机原理及接口技术——自动化系
MCS-51单片机指令系统 第3章 MCS-51单片机指令系统
本章主要介绍MCS-51汇编语言的指令系统。 本章主要介绍MCS-51汇编语言的指令系统。 MCS 汇编语言的指令系统 MCS-51的基本指令共111条 的基本指令共111 MCS-51的基本指令共111条 单字节指令; (1) 单字节指令; 按指令所占的字节来分: 双字节指令; 按指令所占的字节来分: (2) 双字节指令; 三字节指令。 (3) 三字节指令。 按指令的执行时间来分: 按指令的执行时间来分: 1个机器周期 12个时钟振荡周期 指令64 个机器周期( 个时钟振荡周期) 64条 (1) 1个机器周期(12个时钟振荡周期)指令64条 2个机器周期 24个时钟振荡周期 指令45 个机器周期( 个时钟振荡周期) 45条 (2) 2个机器周期(24个时钟振荡周期)指令45条 4个机器周期只有乘 除两条指令的执行时间为(48个时 个机器周期只有乘、 (3) 4个机器周期只有乘、除两条指令的执行时间为(48个时 钟振荡周期)。 钟振荡周期)。 12MHz晶振 机器周期为1 晶振: 12MHz晶振:机器周期为1µs。
单片机原理及接口技术——自动化系 单片机原理及接口技术——自动化系
;A←(Rn) ;A←(direct) ;A←((Ri)) ;A←#data

第三章MCS-51指令系统

第三章MCS-51指令系统
第三章 MCS-51单片机指令系统
3.1 概述
3.2
3.3
寻址方式
MCS-51的指令系统
3.4
伪指令
3.1
概述
指令:使计算机完成某种操作的命令。 指令系统 :计算机能够执行的全部操作所对应的指 令集合。 机器语言: 采用二进制编码表示指令,是计算机能够直 接识别和执行的语言。 汇编语言: 采用助记符 、符号、数字来表示指令的程序 语言,它与机器语言指令时一一对应的。
如果我们分别向DPH,DPL送数,则结果也一样。
如下面两条指令: 则就相当于执行了 MOV DPH,#35H MOV DPTR,#3512H。 MOV DPL,#12H。
(6) 累加器A与片外RAM之间的数据传递类指令(4条)
MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所 有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接 进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送 入另一个单元(设为0200H单元),也必须先将0100H单元中的内 容读入A,然后再送到0200H单元中去。
MOV B,R0
PUSH ACC
;R0→B,R0为寄存器寻 址,B为直接寻址。
;A的内容压入堆栈
3.2.4
寄存器间接寻址
例:MOV A, @R0
• 以寄存器中内容为地址,以该地址中内容为操作数的
寻址方式。间接寻址的存储器空间包括内部RAM和
外部RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR, SP。其中R0、R1必须是工作寄存器组中的寄存器。 SP仅用于堆栈操作。

第三章基本指令系统

第三章基本指令系统

注:该指令用在多字节加法运算中。
28
例:两个4字节无符号数相加,两数分别在2000H、3000H开 始的内存单元,和放在2000H开始的4个内容单元。
MOV SI, 2000H MOV AX, [SI] MOV DI, 3000H ADD AX, [DI] MOV [SI], AX MOV AX, [SI+2] ADC AX, [DI+2] MOV [SI+2], AX ;SI指向一加数首址 2000H ;AX 8423H ;DI指向另一加数首址 ;AX 8423H+7F00H ;低16位和送[2000H][2001H] ;AX 1000H 3000H ;AX 1000H+2000H+CF ;高16位和送[2002H][2003H]
4)DST、SRC长度要一致。
MOV AL, BX ()
5) DST 不能是立即数 MOV 1000H, AX () 6)DST、SRC 不能同时为存储器寻址 MOV [1000H], [3000H] () 7)MOV指令不破坏源操作数
6
一、通用传送指令——XCHG
2、XCHG 格式:XCHG OPR1, OPR2 ; OPR1 OPR2 功能:两操作数内容相交换。 例: XCHG BL, AL ;两寄存器内容交换(字节交换)
第三章基本指令系统指令系统8086指令系统什么是指令系统cpu指令系统mcs51指令系统指令系统层指令系统的作用微处理器的指令系统指令系统就是指令吗
第三章 8086CPU基本指令系统
3.1 数据传送指令 3.2 算术运算指令
3.3 十进制调整指令
3.4 逻辑运算指令和移位指令 3.5 处理器控制指令
27
一、加法指令——ADC

汇编语言 第三章 实方式指令寻址与指令系统

汇编语言 第三章 实方式指令寻址与指令系统

3.2实方式32位指令寻址

实地址方式32位指令寻址,指在32位的PC机上使
用16位的存储机制,执行32位的非保护方式及非虚拟
方式的指令,达到直接存取32位寄存器和32位存储器
操作数的目的。
3.3实方式指令系统
指令系统是一台机器所有指令的集合。 Pentium系列 机指令系统庞大、类型多样,约有300多条指令,其中包 括基本指令100多条。 具有支持多进程、多任务、虚 拟存储器和多媒体等功能的32位指令。
设DS=4000H, 1、MOV AX,[3020H] 2、VAR DW 86
MOV AX,VAR 3、SI=1800H, MOV AX,[SI] 4、COUNT DW 5,6,7,8 SI=06H MOV AX,COUNT[SI]
3.1.3数据寻址与数据结构的 关系
多种寻址方式能方便、灵活的存取操作数, 支持高级语 言的某些数据结构。
寄存器间接寻址例
例:MOV AX,[BX] 设BX=1200H

MOV


偏移地址

1200H 22H

AH AL 11 22
11H


寄存器间接寻址
由寄存器间接给出操作数的偏移地址;
存放偏移地址的寄存器称为间址寄存器,它们是:BX, BP,SI,DI
操作数的段地址(数据处于哪个段)取决于选择哪一 个间址寄存器:
一、立即寻址
指令中的源操作数是立即数,即源操作数是参加操作 的数据本身
例:MOV AX,1200H
AH AL
MOV
00H

12H



寄存器寻址(Register Addressing)

微机原理与接口技术第三章指令系统

微机原理与接口技术第三章指令系统
子程序名:表示某个存储单元的地址,对应存储单元为子 程序的起始位臵;
标识符的构成
符号集合 英文字母(a~Z)、数字(0~9)、特殊符号(?、@、 _、 $)。 构成规则 不可以以数字开头;
不能实用单独的“?”作为标识符;
取名尽量有含义,但不能采用汇编语言的保留字; 助记符、定义符、寄存器名称等 最大长度为31字符。 例如: ABCDH →标识符 0ABCDH →立即数
MOV AX,05C7H 汇编指令 B8C705H
一对一
机器指令
3.1.2 指令格式 汇编语言指令:由操作码和操作数两部分组成。 操作码 操作数 操作数 指令的一般格式
操作码:指示指令要执行的具体操作。用助记符(一 般为英文字母缩写)表示。 操作数:指出指令执行过程中的操作对象。用符号或 符号地址标志。
(×)MOV CS,AX
(×)MOV AH, BX
AH AL BH BL CH CL DH DL
MOV AX, BX
;AX←BX
演示
寄存器寻址方式举例
MOV BX,1234H ;AX=1234H
源操作数是立即数寻址方式
目的操作数是寄存器寻址方式 MOV AX,BX BX=AX=1234H 源操作数和目的操作数均为寄存器寻址方式
AX 88H 66H … 66H 88H … 堆栈段 33200H 33201H
……
……
MOV BX, 1100H MOV AX, [BX]
码段
AX: 0078H
堆栈段
DS:0000H
…… ……
内存内容 偏移地址
0000H 0001H …… 1100H 1101H 1102H
…… ……
78H 00H 56H

第3章 Cortex-M3 指令系统

第3章  Cortex-M3 指令系统
低,它集中地反映了微处理器的硬件功能和属性。
3.2.1指令和指令格式
2. 指令的表示方法 从形式上看,ARM指令在机器中的表示格式是用32位的二进制数
表示。如ARM中有一条指令为: ADDEQS R0, R1, #8
其二进制代码形式为:
31~28 27~25 24~21 20
0000 001
0100 1
3.1.2 指令周期和时序
举例:以ARM7微处理器为例,所有存储器的传输周期都可以被 归结到以下四种类型之一:
(1)不连续周期:ARM请求传输到某个地址或者从某个地址传输 ,但这个地址跟前一个周期用到的地址没有联系,这种情况所 需的时间称为访问一个非顺序的内存位置的周期,简称为N 周 期。
(2)连续周期:ARM请求传输到某个地址或者从某个地址传输, 此地址或者同上一个周期的地址相同或者是上一个周期的地址 之后一个字。这种情况所需的时间称为访问一个顺序的内存位 置的周期,简称为S 周期。
3.2.3指令的条件执行
• 条件后缀只是影响指令是否执行,不影响指令的内容,如上
述ADDEQ指令,可选后缀EQ并不影响本指令的内容,它执 行时仍然是一条加法指令。
要的指令特征和可选后缀的编码;
第3个域是地址基址Rn,是4位[19:16],为R0~R15共16个寄存器 编码;
第4个域是目标或源寄存器Rd,是4位[15:12],为R0~R15共16个 寄存器编 码;
第5个域是地址偏移或操作寄存器、操作数区[11:0]。
3.2.1指令和指令格式
• 3. 汇编指令格式
3.2.3指令的条件执行
程序要执行的指令,均保存在存储器中,当计算机需要执行 一条指令时,首先产生这条指令的地址,并根据地址号打开 相应的存储单元,取出指令代码,CPU根据指令代码的要求 以及指令中的操作数,去执行相应的操作。

第三章指令系统总结及课后题

第三章指令系统总结及课后题

字 节 地 址
10、如何访问SFR,可采用那些寻址方式? 答:用直接寻址,位寻址,寄存器寻址 11、如何访问片外RAM,可使用那些寻址方式? 答:只能采用寄存器间接寻址(用MOVX指令) 12、如何访问片内RAM,可使用那些寻址方式? 答:低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器 寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13、如何访问片内外程序存储器,可使用那些寻址方式? 答:采用变址寻址(用MOVC指令) 14、说明十进制调整的原因和方法? 答:压缩BCD码在进行加法运算时应逢十进一,而计算机只将 其当作十六进制数处理,此时得到的结果不正确。用DA A指令 调整(加06H,60H,66H) 15、说明8951布尔机处理机功能? 答:用来进行位操作
;被减数的低8位→A ;减数低8位→R2 ;被减数减去减数,差→A ;低8位结果→30H ;被减数的高8位→A ;减数高8位→R2 ;被减数减去减数,差→A ;高8位结果→30H
带借位减法指令(四条)
汇编指令格式 SUBB A, Rn; 机器码格式 1001 1rrr 操作 (A)-CY -(Rn) → A 注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中 SUBB A,direct;1001 0101 direct SUBB A,@Ri; 1001 011i (A) -CY -((Ri)) →A (A) -CY -(direct) →A 将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中 将间接寻址(Ri为R0或R1) 所得的片内RAM单元中内 容与CY及累加器A中的数
高128字节RAM区(SFR区,特殊功能寄存器区)
B
F0
ACC

第3章(指令系统)

第3章(指令系统)
要指标之一。
在 MCS -51单片机指令系统中, 有以下 7种寻址方式: (1) 立即寻址; (2) 直接寻址; (3) 寄存器寻址; (4) 寄存器间接寻址; (5) 基址寄存器加变址寄存器间接寻址;
ห้องสมุดไป่ตู้
(6) 相对寻址;
(7) 位寻址。
1、立即数寻址 所要找的操作数是一二进制数或十进制数,出现在指令中, 用“#”作前缀 MOV A,#20H 2、寄存器寻址 操作数存放在工作寄存器R0 ~ R7中,或寄存器B中。 MOV A,R2 3、直接寻址
第3章 MCS - 51单片机指令系统
3.1
寻址方式
3.2 指令系统
一、汇编语言程序设计的意义 什么是程序? 完成某项特定任务的指令的集合。 计算机按程序一条一条地依次执行指令,从而完成指定任务。
要让计算机完成各项任务,就应设计各种程序。
程序设计语言:
机器语言: 用二进制代码表示指令和数据。 汇编语言: 用助记符表示指令操作功能,用标号表示操作对象。
例1、设(SP) = 09H,(DPTR)= 0123H,分析: 执行 PUSH DPL PUSH DPH
后,各单元中的内容。
POP direct 指令执行中,机器也自动进行两步操作: (1)(direct) ((SP))
(2)(SP)
(SP)- 1
例2、设(SP)= 0BH,(0BH)= 01H,(0AH)= 23H 执行 POP DPH POP DPL 后,各单元中的内容。
器 0 区), 执行该指令时,将累加器A中的数据传送至工作寄
存器R0(内部RAM 00H)单元中。
3. 数据传送到内部RAM单元或特殊功能寄存器SFR的指令 MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, @Ri

第3章 指令系统

第3章 指令系统
跳转指令的入口处和程序的开始位置通常需要设置标号,当程 序需要转移和调用时,可直接引用此标号,将程序的执行流向 引导到设置的标号处。 标号也有三个属性:段属性、偏移属性和距离属性。 标号以字母开头,由字母、数字、特殊字符(如?,下划线等 )组成的字符串表示。标号不能与保留字相同。保留字包括寄 存器名、指令助记符等。 3
(2) 32位寻址:任何一个32位通用寄存器可作为基址寄存器 ;除ESP之外的任一个32位通用寄存器可作为变址寄存器。 如:MOV AX,[EBX+ECX] ; 或 MOV AX,[EBX][ECX] ; DS段的字数据送AX。
17
7、带位移的基址加变址寻址:基址寄存器内容与变址 寄存器内容再加偏移量之和形成操作数的EA。即: EA=[基址寄存器]+[变址寄存器]+偏移量
:通用寄存器。长度可以是8位、16位、32位。 如reg8表示8位通用寄存器,reg16表示16位通用寄存 器。
Sreg mem imm
:段寄存器(段选择符)。
:存储器。长度可以是8位、16位、32位。如 mem8表示8位存储器。 :立即数。长度可以是8位、16位、32位。 AL,AX或EAX) 。
操作符:指令的操作符,指示CPU完成某种操作,不 可省略。 操作数:指令执行时的操作对象,可以是数据或地址 表达式。 注释:程序注解。 **方括号表示其中的内容为可选项。
START:MOV AX,DATA MOV DS,AX
;设置DS
4
数据类型
80X86主要包括以下六种数据类型: 1、无符号二进制数:
有符号二进制数以补码形式存储,地址单元分配与 无符号数类似。
3、浮点数(实数)
(从略)
6
4、BCD码 1)压缩(组合)BCD码:1字节存放两个BCD码,如图 a。 2)非压缩BCD码:1字节存放一个BCD码(低4位) ,如图b。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

杭州电子科技大学
微 机 原 理 及 应 用
1. 判断单个标志位状态
⑴ JZ/JE和JNZ/JNE 利用零标志ZF,判断结果是否为零(或相等) ⑵ JS和JNS 利用符号标志SF,判断结果是正是负 ⑶ JO和JNO 利用溢出标志OF,判断结果是否产生溢出 ⑷ JP/JPE和JNP/JPO 利用奇偶标志PF,判断结果中“1”的个数是偶是奇 ⑸ JC/JB/JNAE和JNC/JNB/JAE 利用进位标志CF,判断结果是否进位或借位
代 码 段
• 段内转移——短转移(short)
– 转移范围可以用一个字节表达,在段 内-128~+127范围的转移
代 码 段
杭州电子科技大学
微 机 原 理 及 • 应 用
目标地址的寻址范围:段间寻址
段间转移——远转移(far) – 从当前代码段跳转到另一个代码段, 可以在1MB范围 – 需要更改CS段地址和IP偏移地址 – 目标地址必须用一个32位数表达,叫 做32位远指针,它就是逻辑地址
;段间转移,间接寻址 演示 ;IP←[mem],CS←[mem+2]
杭州电子科技大学
微 机 原 理 及 应 用
3.4.3 条件转移指令 • 条件转移指令Jcc根据指定的条件确定程序 是否发生转移。其通用格式为:
Jcc label
;条件满足,发生转移 ;IP←IP+8位位移量; ;否则,顺序执行
• label是一个标号、一个8位位移量,表示Jcc指令 后的那条指令的偏移地址,到目标指令的偏移地 址的地址位移 • label只支持短转移的相对寻址方式
杭州电子科技大学
微 机 原 理 及 应 用
JMP label
;段内转移、相对寻址
演示
;IP←IP+位移量
JMP r16/m16
;IP←r16/m16
;段内转移、间接寻址
演示 演示
JMP far ptr label JMP far ptr mem
;段间转移、直接寻址
演示
;IP←偏移地址,CS←段地址
实际编程时,汇编程序会根据目标地址的 属性,自动处理成短转移、近转移或远转移 程序员可用操作符short、near ptr 或far ptr 强制成为需要的转移类型
代 码 段
代 码 段
杭州电子科技大学
微 机 原 理 及 应 用
3.4.2 无条件转移指令
JMP label ;程序转向label标号指定的地址
微 机 原 理 及 应 用
第3章 • 常见串操作
3.3 串操作指令
– 计算字符串的长度、查找某个特定字符、改换 字符、判断字符串是否一致等
• 串操作类指令
– MOVS、CMPS、SCAS、LODS、STOS
• 注意事项
– 操作数的源串在当前数据段DS中,若不在,可 使用段前缀指令;目的串必须在附加段ES中, 且不能使用段前缀指令
杭州电子科技大学
微 机 原 理 及 应 用
Байду номын сангаас
3.4.1 程序转移的地址 • 相对寻址方式
用标号表达
– 指令代码中提供目的地址相对于当前IP的位移量, 转移到的目的地址(转移后的IP值)就是当前IP 值加上位移量
• 直接寻址方式
用标号表达
– 指令代码中提供目的逻辑地址,转移后的CS和 IP值直接来自指令操作码后的目的地址操作数
杭州电子科技大学
微 机 原 理 及 应 用
3.4 控制转移类指令 • 控制转移类指令用于实现分支、循环、 过程等程序结构,是仅次于传送指令 的常用指令 • 重点掌握:
– JMP/Jcc/LOOP/JCXZ CALL/RET – INT n/IRET 常用系统功能调用
控制转移类指令通过改变IP(和CS)值, 实现程序执行顺序的改变
杭州电子科技大学
微 机 原 理 及 应 用
例题解答3 用JNS指令实现
mov bx,ax 错误!循环指令不影响SF等标 ror bx,1 志 ;将AX的最低位D0移进最高位(符号位SF) jns even ;标志SF=0,即D0=0:AX内是偶数,程序转移 add ax,1 ;标志SF=1,即D0=1:AX内的奇数,加1 even: shr ax,1 ;AX←AX÷2
杭州电子科技大学
微 机 原 理 及 应 用
CLD MOV MOV MOV MOV MOV REP
AX,3000H ES,AX DI,0200H CX,100 AL,00 STOSB
杭州电子科技大学
微 机 原 理 及 应 用
3.3.3 字符串的比较与扫描 • CMPS 源串,目的串(CMPSB/CMPSW)
杭州电子科技大学
微 机 原 理 及 应 用
例 偶校验
;对DL寄存器中8位数据进行偶校验 ;校验位存入CF标志 test dl,0ffh ;使CF=0,同时设置PF标志 jpe done ;DL中“1”的个数为偶数 ;正好CF=0,转向done stc ;DL中“1”的个数为奇数,设置CF=1 done: …… ;完成
ADD BX,0 ;增加一条指令
杭州电子科技大学
微 机 原 理 及 应 用
例 判断是否为字母Y
;寄存器AL中是字母Y(含大小写),则令AH=0, 否则令AH=-1 cmp al,’y’ ;比较AL与小写字母y je next ;相等,转移 cmp al,’Y’ ;不相等, ;继续比较AL与大写字母Y je next ;相等,转移 mov ah,-1 ;不相等,令AH=-1 jmp done ;无条件转移指令 next: mov ah,0 ;相等的处理:令AH=0 done: ……
– 功能是在字符串中查找一个与已知数值相同或 不同的元素。它以AL或AX的内容与附加段ES 中用DI寻址的目的串元素进行比较,利用结果 影响标志位,来反映扫描结果 – 执行结果不改变源串、目的串的数据 – 与REPNE或REPNZ配合使用,CX不等于0且 ZF=0,查找相同元素;CX不等于0且ZF=1, 查找不同元素 – SCAS替代符—SCASB/SCASW
– 用源串减去目的串,根据操作结果影响标志, 结果不回送 – 源串由SI指出,目的串由DI指出 – 源操作数写在左边,目标操作数写在右边,与 其他指令不同 – CPMS的替代符—CMPSB、CMPSW,使用方 法与MOVSB/MOVSW相同
杭州电子科技大学
微 机 原 理 及 应 用
• SCAS 目的串(SCASB/SCASW)
杭州电子科技大学
微 机 原 理 及 应 用
3.3.4 重复前缀指令 • 重复前缀指令
– REP与MOVS、STOS指令联合使用时,他的 意义是“字符串未处理完时重复” – REPE(相等时重复)和REPZ(等于0时重复) 实际上是相同的。将他们与CMPS、SCAS指 令联合使用,可对本条指令操作所设置的ZF进 行测试,ZF=1且CX不等于0,重复,否则退出 – REPNE(不等于时重复)和REPNZ(不等于0 时重复)意义相同。与CMPS、SCAS联合使 用,ZF=0且CX不等于0,则重复,否则退出
• 间接寻址方式
用寄存器或存储器操作数表达
– 指令代码中指示寄存器或存储单元,目的地址从 寄存器或存储单元中间接获得
杭州电子科技大学
微 机 原 理 及 应 用
目标地址的寻址范围:段内寻址
• 段内转移——近转移(near)
– 在当前代码段64KB范围内转移 ( ±32KB范围) – 不需要更改CS段地址,只要改变IP偏 移地址
杭州电子科技大学
微 机 原 理 及 应 用
CLD MOV SI,0700H MOV CX,5 LOOP1:LODSB PUSH CX : POP CX DEC CX MOV [DI],AL JNZ LOOP1
杭州电子科技大学
微 机 原 理 及 应 用
• STOS 目的串(STOSB/STOSW)
杭州电子科技大学
微 机 原 理 及 应 用
– 字符串指令中的操作数只用于指出指令的操作 类型。目的操作数与源操作数的逻辑地址由ES: DI和DS:SI指出 – 用CX存放要处理的字符串的元素个数。在执行 带重复前缀的字符串指令时,每执行一次字符 串操作指令,CX的内容自动减1 – 用DF标志置来规定字符串处理方向。DF=0, 由低向高,DF=1,相反 – 每处理完一个元素,自动修改SI和DI的内容 – 字符串处理过程可被中断
杭州电子科技大学
微 机 原 理 及 应 用
例题解答1 用JZ指令实现
test ax,01h ;测试AX的最低位D0(不用AND指令,以免改变AX) jz even ;标志ZF=1,即D0=0:AX内是偶数,程序转移 add ax,1 ;标志ZF=0,即D0=1:AX内的奇数,加1 even: shr ax,1 ;AX←AX÷2
杭州电子科技大学
微 机 原 理 及 应 用
3.3.1 字符串的传送 • MOVS 目的串,源串(MOVSB/MOVSW)
– 把一个字节或一个字从源串传送到目的串,并 自动修改SI和DI,指向下一个元素 – 通常加REP,完成块的传送 – MOVSB和MOVSW是MOVS的替代符
等价语句: MOVS PAP1,PAP2 MOVSW 传送字符串程序片断: MOV SI,2000H MOV DI,4000H MOV CX,200H CLD REP MOVSB
用右移一位的方法实现除以2。 本例中用RCR指令比SHR指令更好。
杭州电子科技大学
微 机 原 理 及 应 用
例题解答2 用JNC指令实现
还可用SAR、ROR和RCR指令
mov bx,ax shr bx,1 ;将AX的最低位D0移进CF jnc even ;标志CF=0,即D0=0:AX内是偶数,程序转移 add ax,1 ;标志CF=1,即D0=1:AX内的奇数,加1 even: shr ax,1 ;AX←AX÷2
相关文档
最新文档