汇编课第3章寻址方式与指令系统之3 (1)

合集下载

CH3 MCS-51单片机指令系统-1 单片机优秀课件

CH3 MCS-51单片机指令系统-1 单片机优秀课件
邮箱!
2020/7/3
§3-3 寻址方式
寻址方式:寻找操作数存放单元的地址的方式。 1、立即寻址 1)定义
操作数在指令中直接给出,通常把出现在指令中的 操作数称之为立即数,因此就把这种寻址方式称之为 立即寻址。 2)举例
8位立即数操作:MOV A,#data 1620/7/3
MCS-51指令格式: [标号:] [操作码][第一操作数][,第二操作数][;注释]
LOOP: MOV A,#40H ;取参数
§3-2 指令格式
助记符举例:
MOV __ move
传送
XCH __ exchange
交换
ANL __ and logic
与逻辑运算
XRL __ exclusive or logic 异或运算
CH3 MCS-51单片机指令系统及汇编程序设计
内容提要: §3-1 指令系统简介 §3-2 指令格式 §3-3 寻址方式 §3-4 指令系统 §3-5 汇编语言程序设计 CH3 习题课
2020/7/3
2020/7/3
§3-2 指令格式
指令 = 操作码 + 操作数 操作码:表示了该指令所能执行的操作功能。 操作数:表示参加操作的数的本身或操作数所在的地址。
MUL __ multiply
乘法
RR __ rotate right
右循环
SJMP __ short jump
短跳转
RET __ return
子程序返回
§3-2 指令格式
操作数的表示形式: (1)无操作数或操作数隐藏在操作码中
如:NOP RET
(2)只有一个操作数 如:INC A DEC A
(3)有两个操作数 如:MOV A, #00H

汇编习题及答案

汇编习题及答案

汇编习题及答案第三章 8086的寻址⽅式和指令系统1. 指令正误判断,对正确指令写出源和⽬的操作数的寻址⽅式,对错误指令指出原因(设VAR1, VAR2为字变量, L1为标号):(1)MOV SI,100 (2)MOV BX,VAR1[SI](3)MOV AX, [BX] (4)MOV AL, [DX](5)MOV BP, AL (6)MOV VAR1, VAR2(7)MOV CS, AX (8)MOV DS, 0100H(9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2(11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2(13)SUB [DI], 78H (14)MOVS VAR1, VAR2(15)PUSH 100H (16)POP CS(17)XCHG AX, ES (18)MOV DS, CS(19)JMP L1+5 (20)DIV AX, 10(21)SHL BL, 2 (22)MOV AL, 15+23(23)MUL CX (24)XCHG CL, [SI](25)ADC CS:[0100], AH (26)SBB VAR1-5,154参考答案:(1)MOV SI,100 ;指令正确,源:⽴即数寻址,⽬的:寄存器寻址(2)MOV BX,VAR1[SI] ;指令正确,源:寄存器相对寻址,⽬的:寄存器寻址(3)MOV AX, [BX] ;指令正确,源:寄存器间接寻址,⽬的:寄存器寻址(4)MOV AL, [DX] ;指令错误,DX不能⽤作为地址寄存器(5)MOV BP, AL ;指令错误,类型不⼀致(6)MOV VAR1, VAR2 ;指令错误,MOV指令不能从存储器到存储器传送(7)MOV CS, AX ;指令错误,CS不能⽤作为⽬的操作数(8)MOV DS, 0100H ;指令错误,MOV指令不能将⽴即数传送到段寄存器(9)MOV [BX][SI], 1 ;指令错误,类型不定(10)MOV AX, VAR1+VAR2 ;指令错误,MOV指令中不能完成加法运算(11)ADD AX, LENGTH VAR1 ;指令正确,源:⽴即数寻址,⽬的:寄存器寻址(12)OR BL, TYPE VAR2 ;指令正确,源:⽴即数寻址,⽬的:寄存器寻址(13)SUB [DI], 78H ;指令错误,类型不定(14)MOVS VAR1, VAR2 ;指令正确,源:隐含寻址,⽬的:隐含寻址(15)PUSH 100H ;指令错误,⽴即数不能直接压⼊堆栈(16)POP CS ;指令错误,CS不能⽤作为⽬的操作数(17)XCHG AX, ES ;指令错误,XCHG指令中不能使⽤段寄存器(18)MOV DS, CS ;指令错误,MOV指令不能从段寄存器到段寄存器(19)JMP L1+5 ;指令正确,段内直接转移(20)DIV AX, 10 ;指令错误,DIV指令格式错误(21)SHL BL, 2 ;指令错误,移位指令的移位数要么是1,要么是CL(22)MOV AL, 15+23 ;指令正确,源:⽴即数寻址,⽬的:寄存器寻址(23)MUL CX ;指令正确,源:寄存器寻址,⽬的:隐含寻址(24)XCHG CL, [SI] ;指令正确,源:寄存器间接寻址,⽬的:寄存器寻址(25)ADC CS:[0100], AH ;指令正确,源:寄存器寻址,⽬的:直接寻址(26)SBB VAR1-5,154 ;指令正确,源:⽴即数寻址,⽬的:直接寻址2.写出下列转移指令的寻址⽅式(设L1为标号,VAR1为字型变量,DVAR1为双字型变量):(1)JMP L1 (2)JMP NEAR L1(3)JNZ L1 (4)JMP BX(5)JG L1 (6)JMP VAR1[SI](7)JMP FAR PTR L1 (8)JMP DVAR12. 答:(1)JMP L1 ;段内直接寻址(2)JMP NEAR L1 ;段内直接寻址(3)JNZ L1 ;段内相对寻址(4)JMP BX ;段内间接寻址(5)JG L1 ;段内相对寻址(6)JMP VAR1[SI] ;段内间接寻址(7)JMP FAR PTR L1 ;段间直接寻址(8)JMP DVAR1 ;段间间接寻址3. 如果堆栈的起始地址为2200:0000,栈底为0100H,(SP)=00A8H,求(1)栈顶地址;(2)SS的内容;(3)再存⼊数据5678H,3AF2H后,SP的内容。

第3章 指令系统与汇编程序

第3章  指令系统与汇编程序

数据传送指令
1.以累加器A为目的操作数的指令 (4条) 2.以寄存器Rn为目的操作数的指令(3条) 3.以直接地址为目的操作数的指令(5条)
4.以间接地址为目的操作数的指令(3条)
5.十六位数据传送指令(1条)
6.查表指令(2条)
7.累加器A与片外RAM传送指令(4条) 8.栈操作指令(二条) 9.交换指令(5条)
7)位寻址
• 位寻址:采用位寻址方式的指令的操作数是8 位二进制数中的某一位,指令中给出的是位地 址。位地址在指令中用bit表示。 例如:CLR bit。 • 位地址的表示方法: (1)直接使用位地址,如D3H; (2)特殊功能寄存器名+位号,如 PSW.3; (3)字节地址+位号,如 20H.3; (4)位符号地址,即某些SFR的位地址,如 TR0,表定时器T0的启动位。
(direct)→(Ri)
MOV @Ri, #data;
0111 011i
#data→(Ri)
MOV指令在片内存储器的操作功能如图3.2-1示
@Ri
direct
Rn
#data
A
5、 十六位数据传送指令(1条)
汇编指令格式 机器码格式 操作 #data16→DPTR 注释 将16位立即数传送到DPTR 中
汇编指令格式 机器码格式 操作 注释
MOVC A,@A+DPTR; 1001 0011
((A)+(DPTR))→A 将程序存储器内容传送到 A中(远程查表)
先(PC)+1→PC ((A)+(PC))→A 将程序存储器内容传送到 A中(进程查表)
MOVC A,@A+PC;
1000 0011
A寄存器

第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

第3章  8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

秦晓飞系列-单片机原理及应用-第3章 指令系统

秦晓飞系列-单片机原理及应用-第3章 指令系统

MOV R5,70H
;(70H)→R5,(R5)=F2H
MOV R5,#A3H ; A3H→R5,(R5)=A3H
3.3 89C51/S51单片机的指令系统
3.3.1 数据传送指令
3. 以直接地址为目的操作数的指令(5条)
汇编指令格式
机器码格式 操作
注释
MOV direct ,A;
1111 0101 (A)→ direct direct
MOV direct ,#data;
0111 0101 direct data
#data → direct 将立即数传送到直接地址direct所指出 的片内存储单元中
② 由指令中的rrr三位的不同编码指定某一寄存器,如:
指令“MOV A,Rn”的指令代码格式为:1110 1rrr
• 双字节指令:一个字节表示操作码,另一个字节表示操作数或操作数的地址。 89C51有45条双字节指令。
操作码
立即数或地址
• 三字节指令:一个字节表示操作码,两个字节表示操作数。89C51有17条三字节指 令。共111条指令。
3.3 89C51/S51单片机的指令系统
3.3 89C51/S51单片机的指令系统
• 89C51/S51指令系统由111条指令组成。 • 从指令占用空间大小来看,单字节指令49条,双字节指令45条,3字节指
令仅17条。 • 从指令执行时间快慢来看,单周期指令64条,双周期指令45条,只有乘、
除两条指令执行时间为4个周期。 • 该指令系统有255种指令代码,使用汇编语言只要熟悉42种助记符即可。 • 5大类指令: ① 数据传送指令:28条 ② 算术运算指令:24条 ③ 逻辑运算及移位指令:25条 ④ 控制转移指令:17条 ⑤ 位操作指令(布尔操作):17条

第三章--89C51汇编语言指令系统

第三章--89C51汇编语言指令系统
在 MOV x,y 格式中 y为源操作数,可以是: A、立即数、工作寄存器、 直接地址、间接地址。 x为目的操作数,可以是:A、工作寄存器、直接地 址、间接地址。 注意(1)立即数不能是目的操作数 (2)不存在 MOV R1,R2 MOV @R1,@R0 MOV A,@R2
指令举例
MOV A,#05H MOV A,@R0 MOV R3,A MOV R5,33H MOV 22H,A MOV 40H,41H MOV 43H,#3AH MOV MOV A,R7 A,40H
A
(A=7CH)
3.3.5 控制转移类(使用较少但很重要)
共16种助记符:
无条件小类 JMP @A+DPTR 间接转移(散转) SJMP rel 一字节补码短跳转 AJMP 11位地址标号 2K空间 LJMP 16位地址标号 64K空间 条件转移小类 JZ rel / JNZ rel 为0/非0转 JC rel / JNC rel 有/无进位转 JB bit,rel / JNB bit,rel 置位/复位转 CJNE [x],[y],rel 比较不等转 DJNZ x, rel 减1不为0转 调用和返回小类 ACALL / LCALL 短调用/长调用 RET / RETI 子程序返回/中断返回
3.3.2 数据传送类
共8种助记符: MOV CPU与内部RAM和SFR之间传送 MOVX CPU与外部RAM和I/O之间传送 MOVC CPU对程序存储器ROM读操作 PUSH 压栈 POP 弹栈 XCH 字节交换 XCHD 半字节交换 SWAP 累加器自身半字节交换
MOV 指令详解(使用最频繁)
3.3 89C51单片机指令系统
要求:了解汇编指令按功能分类 能读懂简单程序片段
3.3.1 5种指令类别:

3 指令系统

单字节指令(49条)、双字节指令(46条)和三字节 指令(16条)
按指令执行时间分类:
单机器周期指令(64条)、双机器周期指令(45条) 和四机器周期指令(2条)
按功能分类
数据传送指令(29条)、算术操作指令(24条)、逻 辑操作指令(24条)、控制转移指令(17条)和位操 作指令(17条)
指令系统概述
AB ROM地址 指令 机器码 0000H LJMP 0100H ; 02H,01H,00H …… 0100H MOV A,#63H; 74H,63H 0102H ADD A,#20H; 24H,20H……
MCS-51存储器
片内RAM:
数据缓冲区:内 RAM中 工作寄存器区:有专用于工 从广义上讲, MCS-51 内RAM 作寄存器操作的指令,读写 30H ~7FH为数据缓冲区,用 (00~07H )和SFR(80~FFH) 速度比一般内 RAM 要快,指 于存放各种数据和中间结果, 均属于片内RAM 空间,读写 令字节比一般直接寻址指令 起到数据缓冲的作用。 指令均用MOV指令。但为加 要短,还具有间址功能。 以区别,内RAM通常指 00H~7FH的低128B空间。 位寻址区:存放各种位数据。 注意事项: 位地址与字节地址 编址相同,容易混淆。 区分方法:位操作指令中的地 址是位地址;字节操作指令 中的地址是字节地址。
寄存器B
标志寄 存器 PSW
内ROM
20H 20h 24h 24h 63h 63h 74h 74h 00h 00H 01h 01h 02h 02h
指令寄 存器IR
运算逻辑单元ALU 83h 63h+20h=83h
指令译 码器ID
0103H 0102h 0101h 0100h
内RAM 内部 外设 并行 I/O接 口

第3章 51单片机指令系统

MOV MOV MOV MOV MOV MOV MOV R0, #30H ;R0←30H ,立即寻址 A, @R0 ;A←(R0) ,寄存器间接寻址 R1, A ;R1←A ,寄存器寻址 B, @R1 ;B←R1 ,寄存器间接寻址 @R1, P1 ;(R1)←P1 ,直接寻址 P2, P1 ;P2←P1 ,直接寻址 10H, #20H ;(10H)←20H ,立即寻址
3.1.3 堆栈操作指令
(1)入栈指令:
PUSH direct; SP ← SP+1, (SP) ← (direct)
入栈操作:栈指针SP+1指向栈顶的上 一个空单元,将直接地址direct寻址的单元 内容压入当前SP所指示的堆栈单元中。 (本操作不影响标志位)
例3-3 在中断响应时,SP=09H,数据 指针DPTR的内容为0123H。执行下列指令 后:
MOV @Ri , A ; (Ri)←A MOV @Ri , direct ; (Ri)←(direct) MOV @Ri , data ; (Ri)←#data 上述指令将累加器A,直接地址单元内 容或立即数送到Ri间接寻址单元中。由于内 容较多,下面需要说明:
累加器A是个使用最多的寄存器,MCS-51单 片机以A为中心体系结构。绝大部分指令均需通 过A送到ALU进行运算,结果存于A中,有些指令 仅在A中进行。 直接地址direct ,8位直接地址可寻址0~255个 单元。对于8051则直接寻址内部RAM0~127地址 空间的单元及128~255地址空间的特殊功能寄存 器。这里需注意128~255地址空间很多单元开始 时无定义,对无定义单元进行读/写,则读数不定, 欲写入的数将丢失。 间接寻址@Ri,@间接寻址的符号,是以Ri 的内容作为地址进行寻址,亦即Ri的内容不是操 作数,而是地址。此地址所对应的单元内容才是 所要找的操作数。间接寻址的寻址范围与直接寻 址相同(0~255)。直接寻址单元在编程时就已 明确,而间接寻址单元是在程序运行中明确。

第3章指令系统


XCHD A, @Ri 结果:(A)=? (30H)=?
(3) 累加器A中高四位与低四位交换指令
SWAP A
功能: 交换A中高、低半字节(3~0和7~4), 结果不影响标志寄存器PSW。
例: 设(A)=0A5H(10100101B) SWAP A 结果:(A)=5AH(01011010B)
3.3.2算术运算类指令
弹出指令:POP direct ; ((SP))←(direct),SP←SP-1
PUSH ACC PUSH B 则出栈的顺序为: POP B POP ACC
9.数据交换指令
(1)字节交换指令
目的操 作数 XCH A, XCH A, XCH A, 源操作数 功能说明 direct @Ri Rn (direct) ((Ri)) (Rn) 源操作数寻址 方式 直接寻址 间接寻址 寄存器寻址
5.16位目标地址传送指令
目的操 作数 MOV DPTR, 源操作数 功能说明 #data16 源操作数 寻址方式
;(DPTR)←data16 立即寻址
16位立即数的高8位送入DPH中,低8位送入DPL中。 该指令的执行,不影响程序状态寄存器PSW。
6.外部数据存储器(或I/O口)与累加器A传送指令
第3章
MCS-51单片机的指令系统
汇编语言的指令格式及符号简介
寻址方式 数据传送类指令 算术运算类指令 逻辑运算类指令 位操作类指令 控制转移类指令 思考练习题
3.1 汇编语言的指令格式及符号简介
3.1.1 指令格式
[标号:] 操作码助记符 [目的操作数] [, 源操作数]
例如: LOOP: MOV A, #50H DEC R0 DJNZ R0, LOOP END

汇编语言--操作数的寻址方式(三)

汇编语⾔--操作数的寻址⽅式(三)三、操作数的寻址⽅式操作数是指令或程序的主要处理对象。

如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。

在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,⼤量的指令在执⾏过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在位置就是正确运⽤汇编指令的⼀个重要因素。

在指令中,指定操作数或操作数存放位置的⽅法称为寻址⽅式。

操作数的各种寻址⽅式是⽤汇编语⾔进⾏程序设计的基础,也是本课程学习的重点之⼀。

微机系统有七种基本的寻址⽅式:⽴即寻址⽅式、寄存器寻址⽅式、直接寻址⽅式、寄存器间接寻址⽅式、寄存器相对寻址⽅式、基址加变址寻址⽅式、相对基址加变址寻址⽅式等。

其中,后五种寻址⽅式是确定内存单元有效地址的五种不同的计算⽅法,⽤它们可⽅便地实现对数组元素的访问。

另外,在32位微机系统中,为了扩⼤对存储单元的寻址能⼒,增加了⼀种新的寻址⽅式——32位地址的寻址⽅式。

为了表达⽅便,我们⽤符号“(X)”表⽰X的值,如:(AX)表⽰寄存器AX的值。

1、⽴即寻址⽅式操作数作为指令的⼀部分⽽直接写在指令中,这种操作数称为⽴即数,这种寻址⽅式也就称为⽴即数寻址⽅式。

⽴即数可以是8位、16位或32位,该数值紧跟在操作码之后。

如果⽴即数为16位或32位,那么,它将按“⾼⾼低低”的原则进⾏存储。

例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456HMOV B1, 12H MOV W1, 3456H ADD D1, 32123456H其中:B1、W1和D1分别是字节、字和双字单元。

以上指令中的第⼆操作数都是⽴即数,在汇编语⾔中,规定:⽴即数不能作为指令中的第⼆操作数。

该规定与⾼级语⾔中“赋值语句的左边不能是常量”的规定相⼀致。

⽴即数寻址⽅式通常⽤于对通⽤寄存器或内存单元赋初值。

图3.1是指令“MOV AX, 4576H”存储形式和执⾏⽰意图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京理工大学-张华平-2010
24
① 段内直接短转移 格式:JMP SHORT LABEL 例.
JMP SHORT B1 ;无条件转移到B1标号处 A1: ADD AX,BX B1: …
北京理工大学-张华平-2010
25
② 段内直接转移 格式:JMP LABEL 或: JMP NEAR PTR LABEL
同上
测试并取反由SRC 指定的DST中的位
同上
表3-4 位测试指令
北京理工大学-张华平-2010
10
三、位扫描指令
从386开始增加了位扫描指令,它们包括 BSF、BSR指令,可用于扫描操作数中第一个含 1的位。
北京理工大学-张华平-2010
11
1.顺向扫描指令 BSF 格式:BSF DST,RSC 功能:从右向左扫描RSC操作数中第一个含1的
… B3: SUB AX,CX
… C2 ENDS
北京理工大学-张华平-2010
动画演示
29
2.条件转移指令 执行这类指令时通过检测由前边指令已
设置的标志位确定是否转移,所以它们通常 是跟在影响标志的指令之后。这类指令本身 并不影响标志。
条件转移指令的通用汇编格式: JCC LABEL
北京理工大学-张华平-2010
(设为n),空出的位用操作数OPRD2高端的n位 填充,但OPRD2的内容不变,最后移出的位在进 位标志CF中。
2.双精度右移指令 SHRD 格式:SHRD OPRD1,OPRD2,CNT
北京理工大学-张华平-2010
20
3.6 程序控制指令
本节提供的指令可以改变程序执行的顺 序,控制程序的流向。它们均不影响标志位。
表3-7 检测北单京理个工大条学件-张华标平志-201位0 转移指令 33
例. 比较AX和BX寄存器中的内容,若 相等执行ACT1,不等执行ACT2。
CMP AX,BX JE ACT1 ACT2: .
. . ACT1: …
北京理工大学-张华平-2010
34
⑵ 根据两个带符号数比较结果实现转移的 条件转移指令
例. CODE1
SEGMENT

JMP FAR PTR B3

CODE1
ENDS
CODE2
SEGMENT

B3:
SUB AX,BX

CODE2
ENDS
北京理工大学-张华平-2010
28
⑤ 段间间接转移 例. V DD B3
C1 SEGMENT … JMP DWORD PTR V …
C1 ENDS C2 SEGMENT
循环 右移
带进位 循环左 移 带进位 循环右 移
ROR DST,CNT
RCL DST,CNT
RCR DST,CNT
注:当CNT>1时,OF值不确定。 说明:对DST和CNT的限定同基本移位指令。
同上 同上 同上
表3-6北京基理工本大学移-张位华平指-2令010
18
例. 把CX:BX:AX一组寄存器中的48位数据左 移一个二进制位。
PF=1
JNP/JPO LABEL 奇转移
PF=0
JS LABEL 负数转移
SF=1
JNS LABEL 非负数转移
SF=0
JZ/JE LABEL 结果为0/相等转移
ZF=1
JNZ/JNE LABEL 结果不为0/不相等转移 ZF=0
注:对实现同一功能但指令助记符有两种形式时,在程序中究竟选用 哪一种视习惯或用途而定,例如对于指令JZ/JE LABEL,当比较两数相等 转移时常使用JZ助记符,当比较某数为0转移时常使用JE指令。下同。
利用上表中提供的指令,可以实现两个 带符号数的比较转移。
北京理工大学-张华平-2010
35
汇编格式
功能
JG/JNLE LABEL 大于/不小于等于转移
JNG/JLE LABEL 不大于/小于等于转移 JL/JNGE LABEL 小于/不大于等于转移
测试条件
ZF=0 and SF=OF ZF=1 or SF≠OF
C=A⊕B 加密后的数据为C。在不知道密码的情况 下,从C不能推断出原始数据A,从而达到保密的 目的。 而知道密码B后,从C可以求出A。如何解 密?
不需要借助中间数,使用“异或”运算就能交 换两个变量的值?
北京理工大学-张华平-2010
8
二、位测试指令
从386开始增加了位测试指令,它们包括 BT、BTS、BTR和BTC。这些指令首先把指定位的 值送给CF标志,然后对该位按照指令的要求操 作。
SHL AX,1 RCL BX,1 RCL CX,1
在没有溢出的情况下,以上程序实现了 2×( CX:BX:AX)→CX:BX:AX的功能。
北京理工大学-张华平-2010
19
六、双精度移位指令(386以上)
1.双精度左移指令 SHLD 格式:SHLD OPRD1,OPRD2,CNT 功能:把操作数OPRD1左移由CNT指定的位
北京理工大学-张华平-2010
9
名称 格 式
功能
标志
位测 试
位测试 并置位
位测试 并复位
位测试 并取反
BT DST,SRC
BTS DST,SRC
BTR DST,SRC
BTC DST,SRC
测试由SRC指定的 所选位值送CF,
DST中的位
其它标志不定
测试并置1由SRC 指定的DST中的位
例. JMP B2
A2: ADD AX,CX …
B2: SUB AX,CX
北京理工大学-张华平-2010
26
③ 段内间接转移 格式:JMP REG/M 例. LEA BX,B2 JMP BX A2: ADD AX,CX … B2: SUB AX,CX
北京理工大学-张华平-2010
动画演示
27
④ 段间直接转移
位,并把扫描到的第一个含1的位号送DST操作数。 若RSC=0,则DST值不确定。 2.逆向扫描指令 BSR
格式:BSR DST,RSC
北京理工大学-张华平-2010
12
四、基本移位指令
这类指令实现对操作数移位,包括 SHL、SAL、SHR和SAR指令。表3-5给出了 这组指令。
北京理工大学-张华平-2010
30
JCC LABEL 功能:如果条件为真,则转向标号处,否则顺 序执行下一条指令。
说明:其中cc为条件,LABEL是要转向的标 号。在8086~80286中,该地址应在与当前IP值的- 128~+127范围之内,即只能使用与转移地址有关的 寻址方式的段内短转移格式,其位移量占用一个字 节。
北京理工大学-张华平-2010
SF≠OF
JNL/JGE LABEL 不小于/大于等于转移 SF=OF
注1. G=Greater, L=Less, E=Equel, N=Not 注2. 显然,表3-7中的指令JZ/JE LABEL和 JNZ/JNE LABEL 同样可以用于两个带符号数的比较转移。
表3-8 根据两个带符号数比较结果实现转移的条件转移指令
CF
数据流向
操作数
表3-5北京基理工本大移学-张位华指平-2令010
14
可以用逻辑移位指令实现无符号数乘除法运 算,只要移出位不含1:
SHL DST,n执行后是原数的2n倍 SHR DST,n执行后是原数的1/2n 可以用算术移位指令实现带符号数乘除法运 算,只要移位操作不改变符号位: SAL DST,n执行后是原数的2n倍 SAR DST,n执行后是原数的1/2n (只要移出位不含1)
北京理工大学-张华平-2010
北京理工大学-张华平-2010
23
无条件转移指令 JMP
段内转移(IP) 段内直接短转移 段内直接转移 段内间接转移
段间转移(CS:IP) 段间直接转移 段间间接转移
JMP SHORT LABEL JMP NEAR PTR LABEL JMP REG/M
JMP FAR PTR LABEL JMP DWORD PTR M
转移指令; 循环指令; 子程序调用及返回指令; 中断调用及返回指令;
北京理工大学-张华平-2010
21
一、转移指令
这类指令包括无条件转移指令和条件 转移指令。
北京理工大学-张华平-2010
22
1.无条件转移指令 JMP 格式:JMP DST 功能:无条件转移到DST所指向的地址
说明:DST为转移的目标地址(或称转向 地址),使用与转移地址有关的寻址方式可以形 成目标地址。
北京理工大学-张华平-2010
16
五、循环移位指令
这类指令实现循环移位操作,包括 ROL、ROR、RCL、RCR指令。表3-6给出了基 本移位指令。
北京理工大学-张华平-2010
17
名称 格 式
功能


循环
ROL
左移 DST,CNT
CF中总是最后移进的位,当CNT=1时, 移位使符号位改变则置1 OF*,否则清 0,不影响ZF、SF、PF
北京理工大学-张华平-2010
6
XOR指令的用法:
0⊕0 = 0
1⊕1 = 0
1⊕0 = 1
0⊕1 = 1
1.逻辑值相同,运算结果为0; 将某个寄存器清零操作;
2.与1异或,结果相反; 将输入字符进行大小写转换;
北京理工大学-张华平-2010
7
加密解密
设数据的原始形式为A,密码为B。加密的操 作为:
北京理工大学-张华平-2010
15
例. 设无符号数X在AL中,用移位指令实现 X×10的运算。
MOV AH,0 ;为了保证不溢出,将AL扩展为字 SHL AX,1 ;求得2X MOV BX,AX ;暂存2X MOV CL,2 ;设置移位次数 SHL AX,CL ;求得8X ADD AX,BX ;10X=8X+2X
相关文档
最新文档