微机原理 第三章5

合集下载

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

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

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

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

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

微机原理第三章5

微机原理第三章5

(4)SHR AL, 1
29
• 已知(AL)=0B4H=10110100B,(CF)=1。
(1)SAL AL, 1 ;移位后(AL)= 68H=01101000B, CF=1
(2)SAR AL, 1 ;移位后(AL)=0DAH=11011010B, CF=0
(3)SHL AL, 1 ;移位后(AL)= 68H=01101000B, CF=1
3.3.4 串操作指令
• 串操作指令 :
• 数据传送类指令每次只能传送一个数据,若要传 送大批数据就需要重复编程,这样就浪费了大量的时 间和空间。 为此8086提供了一组处理主存中连续存放数据串 的指令,这就是串操作指令。

针对数据块或字符串的操作; 可实现存储器到存储器的数据传送;
待操作的数据串称为源串,目标地址称为目标串。
ROLÖ · Á î µ Ä Ñ ­ º ²³ ó Ò Æ ² Ø ³ ô
D15ò º D7 D0 CF
RORÖ · Á î µ Ä Ñ ­ º ²Ó Ò Ò Æ ² Ø ³ ô
32
通过进位的循环指令图解
CF D15ò º D7 D0
RCLÖ · Á î Ä µ ´ ÷ ¼ ÷ Î º Ñ ­ º ²ó ³Ò Æ ² Ø ³ ô
34
[例 ]
• 循环指令举例
ROL BX,CL
; 将 BX 中的内容不带进位循环左移 CL 中规定 的次数 ROR WORD PTR[SI],1
;将物理地址为 DS*16+SI单元的字不带进位循 环右移1次
35
[例 ]
• 设CF=1, AL = 1011 0100B = 0B4H 若执行指令ROL AL, 1 ;则AL=? CF=?, OF=? 若执行指令ROR AL, 1 ;则AL= ? CF=?, OF=? 若执行指令RCR AL, 1 ;则AL=? CF=?, OF=? 若执行指令MOV CL, 3 RCL AL, CL ;则AL=?, CF=?, OF=?

微机原理2007年-第三章-指令系统第五节控制转移

微机原理2007年-第三章-指令系统第五节控制转移

③ 段间直接转移 段间直接转移
指令中给出的16位的段和 位的偏移地址送到CS和IP。 指令中给出的16位的段和16位的偏移地址送到CS和IP。 位的段和16位的偏移地址送到
④ 段间间接转移 段间间接转移
MEM中给出的 位的段和 位的偏移地址送到CS和IP。 MEM中给出的16位的段和16位的偏移地址送到CS和IP。 中给出的16位的段和16位的偏移地址送到
6
例:代码段内有一条无条件转移指令
JMP SHORT NEXT 指令本身占有两个字节 操作码占一个字节; 位位移量占有一个字节 操作码占一个字节;8位位移量占有一个字节
内存
... 源程序 : 条件转移指令: 条件转移指令:JMP SHORT next qqq: ... ... next: MOV AL,03H
5
① 段内直接转移 转移的目标地址由指令直接给出。 段内转移,故转移后CS内容保持不变, 段内转移,故转移后CS内容保持不变,只改 变IP的值。 IP的值。
汇编语言中格式 JMP SHORT OPRD JMP NEAR PTR OPRD 位移量 转移范围 8位 -128~+127 128~ 16位 16位 -32768~+32767 32768~
13
JMP DWORD PTR [SI]的机器码 11111111 11101100 DS:[SI]
4000 DS +) 1212 SI 41212 41212 41213 41214 41215
00 10 00 4A
1000 4A00
IP CS
段间间接转移操作示意图
14
(2)条件转移指令 (2)条件转移指令 - JXX 条件转移指令可实现程序的条件分支。 条件转移指令根据标志位的状态来决定是 否进行分支转移。(判位转移) 格式: JXX label xx为条件名称缩写 ;xx为条件名称缩写 指令的转移范围为-128~+127字节。 指令的转移范围为-128~+127字节。

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

微机原理与接口技术课件微机第三章
符号地址:
MOV AX , ES:[3E4CH] MOV AX , RESULT
如何区分RESULT是立即数还是符号地址?
如果 RESULT DW 3E4CH; 符号地址 MOV AX,RESULT
如果 RESULT EQU 3E4CH; 立即数 MOV AX,RESULT
(2)PUSH 进栈指令 指令格式为:PUSH 源(不能是立即数) 其操作过程是: a、SP-2,指示堆栈中可以存放数据的位置 b、存源操作数,完成进栈操作。
(3)POP 出栈指令 指令格式为:POP 目的(不能是CS) 其操作过程是: a、将SS:SP所指示的栈顶处的两个字节的数据,弹到目的操作数中; b、SP+2,指示当前栈顶位置,完成出栈操作。
操作码
0:数据从寄存器传出 1:数据传至寄存器
2.立即数寻址指令的编码
包含段寄存器的指令的编码
段超越前缀指令的编码
3-3 8086的指令集
01
添加标题
02
添加标题
03
添加标题
04
添加标题
05
添加标题
06
添加标题
8086指令系统按功能可分为6大类型:
一、数据传送指令
l 通用数据传送
添加标题
l累加器专用传送指令
目标地址传送指令 这类指令有: LEA 有效地址传送到寄存器 LDS 将双字指针送到寄存器和DS LES 将双字指针送到寄存器和ES Eg:LEA BX,[1000H] LDS SI,[1000H] LES DI,[1000H]
标志寄存器传送指令 LAHF FR寄存器的低8位送AH SAHF AH 送 FR寄存器的低8位 PUSHF FR寄存器推入堆栈 POPF 从栈顶中弹出存入FR寄存器

微机原理第3章-指令系统

微机原理第3章-指令系统

▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB


PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:

微机原理第三章习题答案

微机原理第三章习题答案

习题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不变。

《微机原理及接口技术》第三章

《微机原理及接口技术》第三章

输入输出接口的种类繁多, 常见的有串行接口、并行 接口、USB接口等。
ABCD
常见的输入设备包括键盘、 鼠标、扫描仪等,输出设备 包括显示器、打印机等。
输入输出接口的性能指标 包括传输速度、数据格式 和兼容性等。
总线
01
总线是微机中各部件之间传输信 息的公共通道。
02
总线分为数据总线、地址总线和 控制总线,分别传输数据、地址
汇编语言程序设计的风格
良好的编程风格可以提高代码的可读性和可维护性,包括变量命名 规则、注释规则、代码布局等。
05
微机的应用与发展
微机在工业控制中的应用
实时控制
微机用于实时控制工业生产过程 中的各种参数,如温度、压力、 流量等,确保生产过程的稳定性
和安全性。
自动化生产线
微机集成于自动化生产线中,负责 监控生产设备的运行状态,实现生 产线的自动化和智能化。
故障诊断与预防
微机通过对工业设备的监测和分析, 能够及时发现潜在的故障并进行预 警,提高设备运行的可靠性。
微机在数据处理中的应用
数据采集与处理
01
微机用于采集、处理和分析大量数据,支持企业决策和业务运
营。
数据库管理
02
微机作为数据库服务器,提供数据存储、查询和管理功能,支
持企业信息系统的运行。
云计算与大数据
微机将朝着更小巧、轻便和集成化的方向发展,便于携带和使 用。
随着网络安全问题的日益突出,微机的安全性和可靠性将受到 更多关注,以确保数据和系统的安全。
THANKS
感谢观看
微机原理及接口技术第三章
• 微机原理概述 • 微机的硬件结构 • 微机的指令系统 • 微机的编程技术 • 微机的应用与发展

微机原理-第三章ppt课件

微机原理-第三章ppt课件
当S= 0 而R= 1 时, Q= 0( Q= 1) 称为复位。R 端称为复位端,
当S=1而R=1时,输出保持
符号:为了作图方便, 用方块来表示。
.
5
改进型式:时标RS 触发器——RS 触发器外 加的时标脉冲, 如图下图 所示。 图中的CLK 即为时标脉冲。
S

QS Q
CLK
R&
QR Q
功能:无论是置位还是复位, 都必须在时标脉 冲端为高电位时才能进行。
.
6
3.2.2 D 触发器
基本构成:D 触发器是在RS 触发器的基础上 引伸出来的, 它只需一个输入端口, 下图 为D 触发器的原理。
D
QS Q
QR Q
功能:当D 端为高电位时, S 端为高电位,
称为置位。
当D 端为低电位时, S 端为低电位,
称为复位。
.
7
改进型式:增加两个与门就可以接受 时标脉冲CLK 的控制。
第三章 微型计算机的基本组成电路
3.1 算术逻辑单元(ALU) 3.2 触发器( Trigger ) 3.3 寄存器( Register ) 3.4 三态输出电路 3.5 总线结构 3.6 译码器、数据选择器 3.7 存储器(Memory)
.
1
3.1 算术逻辑单元( ALU)
功能: 二进制数的四则运算, 布尔代数的逻辑运算。
⋯⋯ 第七时钟后沿到 Q= 111 第八时钟后沿到 Q= 000
在第八个时钟脉冲到时, 计数器复位至0, 因 此这个计数器可以计由0 至7的数。
如8 位计数器可计由0至255 的数, 12
位计数器可计由0 至4095 的数, 16 位
则可计由0 至65535 的数。

微机原理第三章课件

微机原理第三章课件

第一个操作数为目的Reg 第一个操作数为目的
第二个操作数 为Reg.操作数 操作数
若指令中两个操作数都是Reg,则D=1。 , 若指令中两个操作数都是 。 为源操作数, 决定目的。 当:D=0,Reg.为源操作数,由 mod r/m决定目的。 , 为源操作数 决定目的 D=1,Reg.为目的操作数,由 mod r/m决定源。 为目的操作数, 决定源。 , 为目的操作数 决定源 机器码存放在内存中 00000010 11001111
操作码:由CPU设计人员定义。每一种操作唯一对应一个操作码。 操作码 例:加法 加法操作助记符ADD; 加法 数据传送操作助记符MOV; 数据传送 比较操作助记符CMP; ; 比较 操作数:可由编程人员采用不同方式给出。 操作数 指令格式:指令中对操作码、操作数的编码方式。 指令格式 对X86,由1~16个字节构成。 X86, 16个字节构成。 个字节构成 前缀 1~4 操作码 1 ~2 Mod r/m 1 S-i-b 1 disp 0.1.2.4 data 0.1.2.4
1~6字节
Disp/DATA
(高)
DATA (低)
DATA (高)
依据指令的不同而取舍
指出存贮器操作数地址的位移量 存贮器操作数地址的位移量或 规定指 两个操作数 指出存贮器操作数地址的位移量或立即数 令的操 存放地址及 在指令中的操作数 作类型 EA计算方法 EA计算方法
有效地址EA:从段的首地址到操作数所在地址的距离,用字节 有效地址EA: EA 数表示,是一个无符号16位整数,它指向段首地 址开始的64KB。 操作码与寻址方式字节 D W OP Code 7 6 5 4 Reg 3 2 1 r/m 0
80X86/Pentium指令系统 第3章 80X86/Pentium指令系统

微机原理第3章习题答案

微机原理第3章习题答案

微机原理第3章习题答案第3章习题参考答案1 分别指出下列指令中的源操作数和目的操作数的寻址方式。

答:源操作数目的操作数(1)MOV AX,[SI] 寄存器寻址寄存器间接寻址(2)MOV DI,100 寄存器寻址立即寻址(3)MOV [BX],AL 寄存器间接寄存器(4)MOV [BX][SI],CX 基址+变址寄存器(5)ADD DX,106H[SI] 寄存器变址(6)PUSH AX 寄存器(7)ADD DS:[BP],AX 带段超越寄存器间接寻址寄存器(8)OR AX,DX 寄存器寄存器2.设寄存器(DS)=2000H,(SS)=1500H,(ES)=3200H,(SI)=0A0H,(BX)=100H,(BP)=10H,数据段中变量VAL的偏移地址为50H。

试指出下列各条指令中源操作数的寻址方式是什么?对于存储器操作数,其物理地址是多少?答:操作数的寻址方式存储器操作数PA (1)MOV AX,[100H] 直接寻址20100H(2)MOV CX,ES:[BX] 带段超越的寄存器间接寻址32100H(3)MOV DX,[BX][SI] 基址+变址寻址200F0H(4)MOV AX,V AL[SI] 变址寻址200F0H(5)MOV BX,1234[BX] 基址寻址205D2H(6)MOV AX,[BP] 寄存器间接寻址15010H3. 判断下列指令有误错误,若有,则改之。

答:(1)PUSH CL 有错,对堆栈操作数总是16位的。

改为:PHSH CX (2)ADCAX,0ABH 无,只是CF的值是不确定的(0或1)(3)OUT 3EBH, AX 有,输出设备的端口地址若超过8位,应使用DX 间接寻址。

改为:MOV DX, 3EBHOUT DX,AX(4)MUL AL, CL 有错。

乘法指令中有AX或AL寄存器是隐含的。

改为:MUL CL(5)MUL AX, 25 有错。

乘法指令中不能用立即数。

改为:MOV BX,25MUL BX(6)ROL DX,5 有错。

微机原理第三章

微机原理第三章
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章课件

微机原理第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。

《微机原理与应用教学资料》第三章(课件).ppt

《微机原理与应用教学资料》第三章(课件).ppt

例:STRING1 DB ‘OK’ STRING2 DW ‘OK’
STRING1 ‘O’
‘K’
STRING2 ‘K’
‘O’
例:STRING2 DW ‘GOOD’;错误
电气学院学习部资料库
17
(2)堆栈、出栈指令 PUSH、POP 格式:PUSH 源
POP 目的 功能:PUSH 将源操作数压到堆栈中,POP将堆栈中数据弹
SS 10 20
SP初值 00 30
电气学院学习部资料库
20
入栈操作
堆栈段 起始地

栈顶 栈 底
PUSH AX 12 34 PUSH BX 1A B1 10200H 10202H 10204H 10206H 10208H …… 1022CH 1A B1 1022EH 12 34 10230H 00 11
SP 0000 23CE0
电气学院学习部资料库
22
(3) 交换指令 XCHG 格式:XCHG 目的,源 功能:目的操作数与源操作数互换 影响标志位:无
例:XCHG AL,BL XCHG BX,DX XCHG AL,BX;错误
注意: ❖ ① CS、IP 不能做操作数
例:XCHG CS,AX;错误 XCHG IP,BX;错误
(11065H)→AH 若(11064H)=00H,(11065H)=12H,(AX) =1200H
电气学院学习部资料库
5
一个字在存储体中相邻的两个字节存放,字单元的地址以低 位地址表示,存入时以低位字节在低地址,高位字节在高 地址
②段超越前缀:若段地址为CS、SS、ES,应在指令中指定段超 越前缀
❖ ② 不能直接交换两个存储单元 例:XCHG [1000H],[BX];错误
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
逻辑运算与移位类指令
当需要对字节或字数据中的各个二进制位进行操作时,可 以考虑采用逻辑运算与移位类指令。 ADD、ADC、SUB、SBB、CMP和AND、OR、XOR、TEST具有相同 的指令格式:
运算指令助记符 运算指令助记符
reg,imm/reg/mem mem,imm/reg
以上格式表明了操作数的寻址方式。也可统一表示为: 运算指令助记符 dst, src
循环移位指令的操作数形式(寻址方式)和移位指令相同 ,按指令功能设置进位标志CF,不影响AF、ZF、PF、SF标 志。对OF的影响,循环移位指令同移位指令是一样的。
[例] 实现32位数的联合左移1位:高16位在DX中,低16位在 AX中。(相当于 (DX:AX)×2 ) SAL AX,1 RCL DX,1
; 相 等 循 环 : CXCX-1; 若 CX≠0 且 ZF=1, 转 移 LOOPNE/LOOPNZ LABEL
;不等循环:CXCX-1;若CX≠0且ZF=0,转移 LOOP指令首先将CX减1,然后判断计数值CX是否为0;若CX不 为 0 , 则 转 移 到 标 号 处 执 行 ; 等 于 0 , 顺 序 执 行 。 LOOPE 和 LOOPNE又要求同时ZF=1或ZF=0才进行转移,用于判断结果是否 相等(或为0),以便提前结束循环。标号到循环指令之间的 代码序列就是循环体。
Jcc LABEL ;条件满足,发生转移: ;IPIP+8位的位移量; ;否则,顺序执行。
注意:
① 条件转移指令Jcc只支持段内短转移的寻址方式,只能实现 段内-1ห้องสมุดไป่ตู้8~127个单元范围的跳转,其间共有多少条指令是不确 定的。 ② 条件转移指令不影响标志,但利用状态标志作为控制转移 的条件。Jcc中的cc表示利用标志判断的条件。同一条指令可能 有多个助记符形式,这只是为了利于记忆,方便使用。 ③ 因为条件转移指令要利用影响标志的指令执行后所设置的 标志状态以形成判断条件,所以在条件转移指令之前,常有 CMP、TEST、加减运算、逻辑运算、CMPS、SCAS等指令。
[例] 将DB_BCD开始的两个字节2位非压缩BCD码合并到DL中。 DB_BCD DB 04H,08H …… MOV DL,DB_BCD ;取低字节 AND DL,0FH ;屏蔽高四位,保留低四位 MOV DH,DB_BCD+1 ;取高字节 MOV CL,4 ;设置循环移位次数 SHL DH,CL ;移到高4位,或用ROL DH,CL OR DL,DH ;合并,或使用ADD DL,DH
SAR reg/mem,1/CL ;算术右移:reg/mem右移1/CL位,最高位不变, ;最低位进入CF
符号位
注意:
① 四条(实际为三条)移位指令的目的操作数可以是寄存器 或存储单元,后一个操作数表示移位的位数,为1表示移动一 位;移位位数大于1,则由CL寄存器的值表示。 ② 移位指令按照移入的位来设置CF,根据移位后的结果影响 SF、ZF和PF,对AF没有定义;如果进行一位移动,则按照操 作数的最高符号位是否改变来确定OF,有改变,OF=1;否则, OF=0。移位次数大于1,OF不确定。 ③ 逻辑移位指令和算术移位指令可以实现无符号数和有符号 数的乘或除2、4、8……。左移相当于乘2,右移相当于除2, 商在操作数中,余数由CF标志反映。
1、 逻辑运算指令
AND OR XOR TEST NOT dst,src dst,src dst,src dst,src reg/mem ;逻辑与指令:dstdst∧src ;逻辑或指令:dstdst∨src ;逻辑异或指令:dstdst⊕src ;测试指令:dst∧src ;逻辑非指令reg/mem~reg/mem
执行的操作:IPmem32 低地址对应的字
CSmem32 高地址对应的字
例: JMP
JMP
DWORD PTR [SI]
DWORD PTR ALPHA[BP][DI]
例如:C1
SEGMENT
…… JMP FAR PTR
段间直接转移
NEXT_PROG
……
C1 ENDS …… C2 SEGMENT …… NEXT_PROG: ……
逻辑运算指令用来对字节或字数据按位进行逻辑运算。 AND: 只有相“与”的两个位都为1,结果才是1;否则结果为0; OR: 只要相“或”的两位有一个为1,结果是1;否则结果为0; NOT: 原来为0的位置为1;原来为1的位置为0; XOR: 相“异或”的两位不相同时结果为1,相同时结果为0;
①双操作数逻辑运算指令均设置CF=OF=0,根据结果设置SF、ZF 和PF,对AF未定义。NOT指令不影响状态标志位。 [例] MOV AL,75H ;AL75H AND AL,32H ;AL30H,CF=OF=0、SF=0、ZF=0、PF=1 OR AL,71H ;AL71H,CF=OF=0、SF=0、ZF=0、PF=1 XOR AL,0F1H ;AL80H,CF=OF=0、SF=1、ZF=0、PF=0 NOT AL ;AL7FH,不改变状态标志位 ②逻辑运算指令除了可以进行逻辑运算以外,经常用来处理操 作数的某些位,例如可屏蔽某些位(将这些位置0),或使某 些位置1,或将某些位取反,或使用TEST指令测试某些位。 [例] MOV AL,01011111B AND AL,11111100B;AL01011100,屏蔽AL的第0、1两位 OR AL,00100000B;AL01111100,将AL的第5位置1 XOR AL,00110000B;AL01001100,将AL的第4、5位取反 XOR AX,AX ;作用?
C2
ENDS
代码段C1 EAH 50H JMP指令
02H
00H
新IP=0250H 新CS=2000H
20H
...... 代码段C2 ...... NEXT_PROG
20000H 20250H
段间直接转移举例
2、条件转移指令
Jcc
条件转移指令Jcc根据指定的条件确定程序是否转移。 如果满足条件,则程序转移到目的地址去执行程序; 如不满足条件,则程序将顺序执行下一条指令。
移位指令助记符 opr, count
mem/reg
为1或CL
SHL reg/mem,1/CL ;逻辑左移:reg/mem左移1/CL位,最低位补 ;零,最高位进入CF
SHR reg/mem,1/CL ;逻辑右移:reg/mem右移1/CL位,最高位补0, ;最低位进入CF SAL reg/mem,1/CL ;算术左移:与SHL是同一条指令
[例]
编写程序段,将DX:AX中的双字右移4位。 MOV SHR MOV SHR SHL OR CL,4 AX,CL BL,DL DX,CL BL,CL AH,BL
;保留DL的值
;将DX向右移出的4位加到 ; AH的高4位
DH
DL DL
DX
DH
4bit
AH AL AL
AX
AH
丢弃
控制转移类指令
寄存器AL中是字母‘Y’或‘y’,则令AH=0,否则令AH=…… CMP JE AL,’y’ NEXT
CMP
JE MOV JMP NEXT:
AL,’Y’
NEXT AH,-1 DONE
MOV
DONE: ……
AH,0
测试CX的值作为转移的依据:
JCXZ LABEL ;当CX=0,转移
分支程序结构
[例]
[例] TEST JZ ADD
将AX中的无符号数除以2,如果是奇数则加1后除以2。 AX,01H ;测试AX的最低位D0 ;ZF=0, 即D0=1:AX是奇数,AXAX+1
SET_EVEN ;ZF=1,即D0=0:AX是偶数,程序转移 AX,1
SET_EVEN:
SHR
AX,1
;AXAX/2
[例] 1。
其余的位保持不变。
4、用一条逻辑运算指令使AX中和BX中的对应位
不相同的位均置位 为1。
1、XOR
AND 2、OR 3、AND 4、XOR
BX,BX
BX,0

DX,1110000000000000B BL,11110000B AX,BX
2、 移位指令
SHL(shift logical left) 逻辑左移 SAL(shift arithmetic left) 算术左移 SHR(shift logical right) 逻辑右移 SAR(shift arithmetic right) 算术右移 ROL(rotate left) 循环左移 ROR(rotate right) 循环右移 RCL(rotate left through carry) 带进位循环左移 RCR(rotate right through carry)带进位循环右移
Disp=08H 0100H 0101H 0102H Disp=08H 010AH(HELLO) 010BH
MOV指令
新的IP
2)段内直接近转移 格式:JMP NEAR PTR
可以省略
LABEL
执行的操作:IPIP + 16位的位移量 3)段内间接转移
JMP
r16/m16
JMP
;IPr16/m16
TEST指令对两个操作数执行按位逻辑与的运算,但结果不 送目的操作数,只根据结果设置状态标志位。TEST指令通常用 于检测操作数中某些位的状态,但又不希望改变原操作数的情 况。这条指令之后,一般都是条件转移指令,目的是利用测试 结果对状态标志位的影响作为判断条件转向不同的程序段。
[例] TEST AL,80H
将AX和BX中较大的数值存放在WMAX单元。
CMP AX,BX JAE NEXT ;比较AX和BX ;若AX>=BX(无符号数),转移到NEXT处
XCHG AX,BX ;若AX<BX,交换 NEXT: MOV WMAX,AX
相关文档
最新文档