第3章 8086的指令系统—3.2.4串操作类指令

合集下载

第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:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

第三章 8086的指令系统()PPT课件

第三章 8086的指令系统()PPT课件

7、串寻址(String addressing)
串寻址方式仅在8086的串指令中 使用。规定源操作数的逻辑地址为 DS:SI;目的操作数的逻辑地址为 ES:DI。当执行串指令的重复操作时, 根据设定的方向标志(DF),SI和 DI会自动调整。
8、I/O(输入/输出)端口寻址 (I/O port addressing)
2、MOV数据传送指令
其格式为:
MOV 目的操作数,源操作数
目的操作数和源操作数均可采用不 同的寻址方式,但两个操作数的类 型必需一致。
二、寻址方式介绍
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后
面,作为指令一部分存放在内存的代 码段中,这种操作数称为立即数。
1、通用数据传送指令
1)、MOV 传送指令 指令格式为: MOV 目的 ,源
2)PUSH 进栈指令
指令格式为:PUSH 源操作数 其操作过程是: a、SP-1,
指示堆栈中可以存放数据的位置,存源 操作数的高8位; 。
3)POP 出栈指令
指令格式为:POP 目的操作数
一、8086的操作码
指令由操作码和操作数(地址码) 组成。8086的指令长度是可变的,一 条指令一般由1-6个字节组成(加上 前缀字节,最长可为7字节)。
二、8086指令中寄存器的编码
8086指令中通常使用一个或两个 操作数,在少数指令中有隐含的第三 个操作数。
三、指令中的操作数
1、单指令操作数
当操作数在外部设备时,使用I/O指令。 此时有两种不同的寻址方式访问I/O端口。 (1) 直接端口寻址方式。 (2) 采用寄存器间接寻址方式 (3) 输入指令中目的操作数可为AL或
AX;输出指令中源操作数可为AL或AX。 例:

第三章 8086的指令系统

第三章 8086的指令系统
操作码 操作数
机器指令 B0 56 04 78 CB
操作码 操作数
计算机执行的指令是机器指令,是一串二进制代码。 MOV、ADD 是机器指令操作码 B0、04 的助记词。
2. 8086的机器指令格式
B1 OP D W MOD B2 B3 REG R/M B4 B5 B6
操作码 (6)
方 0-字节 寻址 向 1-字操作 方式
立即数→通用寄存器、内存单元
立即数→通用寄存器 MOV AX,2356H; MOV BH,33H; 立即数→内存单元 MOV [BX+SI],0F080H; MOV BYTE PTR [BX],12H; 源操作数、目的操作数的类型要匹配。 源操作数是单字节,目的操作数是间址、变址、基址+ 变址的内存操作数,后者必须用PTR说明是字节型。
三. 标志寄存器
1. 格式 2. 含义
1. 格式
记录当前指令执行后的特征信息,16位数据用9位
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 O D I T S Z A P C
溢出
8位无符号数相加大于255,有符号数相加大于127或小于 -128 16位无符号数相加大于65535,有符号数相加大于32767 或者 小于-32768; 判断 操作数是有符号数,运算后O标志为1表示溢出。
寄存 器号
寻址 方式
① ② ③ ④ ⑤ ⑥
8086 指令是 1~6字节的变字节指令格式。 指令的长度:最少一个字节,最多六个字节。 B1、B2为基本字节,B3-B6 根据指令取舍。 B1字节-称作操作码字节,必不可少的。 B2-操作数寻址方式。一条指令最多可用两个操作数。 B3~B6- 一般为存储器操作地址位移量或立即操作数。

第3章 8086指令系统_3

第3章 8086指令系统_3
用于对某个二进制数按位取反或对寄存器清0 用于对某个二进制数按位取反或对寄存器清0
如: , ① MOV AX,3333H
结果:AX=33CCH,AH数据保持 不变,对AL数据求反,即对应0不 XOR AX,00FFH; 变,对应1求反。 , ;
例:寄存器清0(有4条指令可达到AX清 例:寄存器清0(有4条指令可达到AX清0目的) XOR AX,AX AX, MOV AX,0 AX, SUB AX,AX AX, AND AX,0 AX,
7
七、处理器控制指令
1、标志位操作指令 、 2、与外部事件协调同步的指令 、 3、空操作指令 、
2010-11-5
第三章
8086/8088指令系统 8086/8088指令系统
8
1、“与”运算指令AND 、 运算指令
指令格式: 指令格式:AND dst,src , 指令功能: 指令功能: (dst)∧(src)→(dst) ) ) ( )
2010-11-5
第三章
8086/8088指令系统 8086/8088指令系统
10
3、“非”运算指令 、 非 运算指令NOT
指令格式: 指令格式:NOT dst 指令功能: 指令功能:dst→dst
该指令只是执行求反操作,而不是求反码指令,对符号位也 该指令只是执行求反操作,而不是求反码指令,对符号位也 求反;不影响标志位。 求反;不影响标志位。
6
六、控制转移指令 一般情况下,程序是顺序执行(IP自动修改) 一般情况下,程序是顺序执行(IP自动修改) 自动修改 若要打破顺序执行的规律, 的,若要打破顺序执行的规律,需用到转移指 令。
1. 2. 3.
无条件转移指令 条件转移指令 循环控制指令
2010-11-5

2_第3章 8086指令系统_加减运算指令比较指令52

2_第3章 8086指令系统_加减运算指令比较指令52
4
3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号数和有符号数 对加法指令和减法指令而言,无符号和有符号数可采用同
一套指令,其先决条件有两个: 一是参加的操作数必须同为无符号数或同为有符号数 二是要采用不同标志位来检查无符号数和有符号数的 运算结果是否溢出
而乘除运算指令则需要区分无符号数和有符号数
11 11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多次运算的加法 运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区 假设CPU进行8位的加法运算,为此将进行4次加法运算
.386
……
MOVZX AX, A
MOVZX BX, B
ADD
AX, BX
MOVZX BX, C
ADD
AX, BX
MOV
SUM, AX
;取第一个数,扩展0传送 ;取第二个数 ;加第二个数 ;取第三个数 ;加第三个数 ;保存三个数的和
20 20
[例] P,Q,R均为8位有符号数,求它们的和,送入TOTAL
这个问题的另一种方法:
MOV AL, A
;取第一个数
MOV AH, 0
;高8位清零,准备存放和的高8位
ADD AL, B
;加第二个数
ADC AH, 0
;如果有进位,存入AH
ADD AL, C
;加第三个数
ADC AH, 0
;如果有进位,加入AH
MOV SUM, AX ;保存三个数的和
19 19
这个问题的第三种方法:

ch3-4 8086指令系统(串操作与控制类指令)

ch3-4 8086指令系统(串操作与控制类指令)

指令n 指令n+1 指令n+3
第三章 8086/8088 指令系统
8086提供了四种控制转移指令:
转移指令 循环控制 过程调用 中断控制
• 除中断指令外,其它转移类指令都不影响状态标志。
第三章 8086/8088 指令系统
注意指令中条件缩写字母的含意分别是: A:Above 高于, B:Below 低于, C:Carry 进位, E:Equal 等于, G:Greater 大于, L:Less 小于, N:Not 无, O:Over 溢出 ,S:Sign 符号, PE:Parity Even 奇偶性偶, PO:Parity Odd 奇偶性奇 a
授课教师:王磊 齐鲁工业大学电气学院 办公室:机电楼C320 E-mail:wanglei@
第三章 8086/8088 指令系统
四、串操作指令
1. 串的概念 串是连续存放在内存中的字节块或字块。 每个串有一个起始地址和长度。待操作的数 据串称为源串,目标地址称为目标串.
第三章 8086/8088 指令系统
2. 串操作指令的特点
(1) 源串在数据段,用SI作地 址指针,允许段重设
(2) 目的串在附加段,用DI作 地址指针 (3)指令自动修改地址指针,修改 方向由DF决定。 DF=0 DF=1 增地址方向; 减地址方向
起始地址
'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H'
00H
串长=8
字 节 块 ( 串 )
ES段
1000H
41 42 43 44 45 46 ’A’ ’B ’ ’C’ ’D ’ ’E’ ’F’

指令系统串操作指令

指令系统串操作指令

第3章8086指令系统串操作指令1第3章8086 指令系统1数据传送指令2算术运算指令3逻辑运算和移位指令4串操作指令5控制转移指令6处理器控制指令2第3章8086 指令系统逻辑运算和移位指令1、字符串传送指令(MOVSB/MOVSW)1字符串传送指令2、字符串比较指令(CMPSB/CMPSW)2字符串比较指令3、字符串检索指令(SCASB/SCASW)3字符串检索指令4取字符串指令4、取字符串指令(LODSB/LODSW)5、存字符串指令(STOSB/STOSW)5存字符串指令3第3章8086 指令系统1、字符串传送指令(M St i B t )1、字符串传送指令(MOVSB/MOVSW )MOVSB ;(Move String Byte)字节传送指令MOVSW;(Move String Word)字传送指令[DS:SI]— [ES:DI]将DS 段SI 所指向的单元字节/字传送到ES 段由DI 指向的单元,指向个或两个单重复操作再自动修改DI 和SI ,指向下一个或两个单元重复操作。

计数器CX 存放传送的字节数或字数带重复前缀REP ,则每传送一次CX 自动减1,直到CX 为0SI ,DI 分别为源和目的寄存器方向标志DF=0,SI 、DI 自动增量;否则自动减量不影响标志位4eg: 将数据段1000H 开始的100个字节传送到扩展段2000H 开始的单元MOV SI,1000H MOV DI 2000H MOV SI,1000HMOV DI,2000H MOV DI,2000H MOV CX,100,MOV CX,100CLDCLD REP MOVSB ……KKK:MOVSBDEC CXJNZ KKK (5)2、字符串比较指令(CMPSB/CMPSW)CMPSB ;(Compare String Byte)字节比较指令(p g)CMPSW ;(Compare String Word)字比较指令[DS:SI]←→[ES:DI]前缀:REPE/REPZ CX≠0且比较的字节相等(ZF=1)时,继续比较 前缀:REPNE/REPNZ CX≠0且比较的字节不等(ZF=0)时,继续比较通过前缀实现在两个字符串中寻找第一个不等的元素或者第一个相等的元素等的元素。

微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统

微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统

4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器 间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing) 位移量是一带符号的16位16进制数。当 使用BX或BP寄存器时,称基址寻址;使用SI 或DI寄存器时,称变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 • 目的操作数和源操作数均可采用不同的寻 址方式, • 两个操作数的类型必需一致。
二、寻址方式介绍பைடு நூலகம்
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面, 作为指令一部分存放在内存的代码段中,这 种操作数称为立即数。 例: MOV AX , 34EAH MOV BL , 20H
3)、段间直接转移 JMP far PTR 目标地址 4)、段间间接转移 JMP WORD PTR[BX][SI]
2、条件转移指令
1)、单条件转移指令 ① JC ② JNC ③ JE/JZ ④ JNE/JNZ ⑤ JS ⑥ JNS ⑦ JO ⑧ JNO ⑨ JP/JPE ⑩ JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
3、目标地址传送指令
这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址

8086指令系统-3

8086指令系统-3
;字节串比较:DS:[SI]-ES:[DI] ;SI←SI±1,DI←DI±1
CMPSB
CMPSW
;字串比较:DS:[SI]-ES:[DI] ;SI←SI±2,DI←DI±2
例50:比较字符串
mov si,offset string1 mov di,offset string2 mov cx,count cld again: cmpsb ;比较两个字符 jnz unmat ;有不同字符,转移 dec cx jnz again ;进行下一个字符比较 mov al,0 ;字符串相等,设置00h jmp output ;转向output unmat: mov al,0ffh ;设置ffh output: mov result,al ;输出结果标记

NOP CS: SS: DS: ES: LOCK HLT ESC WAIT
空操作指令
NOP一个字节存储单 元,空耗一个指令执行周期 NOP常用于程序调试

在需要预留指令空间时用NOP填充 代码空间多余时也可以用NOP填充 还可以用NOP实现软件延时

事实上,NOP和XCHG AX,AX的指令代码一样, 都是 90H
段超越前缀指令
在允许段超越的存储器操作数之前,使用 段超越前缀指令,将采用指定的段寄存器 寻址操作数 CS: ;使用代码段的数据 SS: ;使用堆栈段的数据 DS: ;使用数据段的数据 ES: ;使用附加段的数据

封锁前缀指令

LOCK ;封锁总线 这是一个指令前缀,可放在任何指令前 这个前缀使得在这个指令执行时间内, 8086 处理器的封锁输出引脚有效,即把总 线封锁,使别的控制器不能控制总线;直 到该指令执行完后,总线封锁解除

串寻址方式

8086指令系统

8086指令系统

偏移地址
IP SP SI DI 有效地址EA 有效地址EA
2021/1/23
黄玉清制作
3.3 8086的操作数的寻址方式
任何内存实际地址(PA)都由两部分组成: PA=段基址+段内偏移地址(此单元与段基址的距离) 段内的偏移地址又称为有效地址(EA).
2021/1/23
黄玉清制作
3.3 8086的操作数的寻址方式
黄玉清制作
3.1概述
3.1 概述
80x86结构的基本数据类型
字节:8位 字:16位,2个字节 双字:32位,4个字节 四字:64位,8个字节(80486CPU引入) 双四字:128位,16个字节(Pentium III)
数据在内存中的字节顺序
80X86多字节数据的存放原则是低位字节在低端地址, 高位字节在高端地址。 而最低地址就是操作数的地址。
数据段
黄玉清制作
8086执行某种操作时,预先规定了采用的段和段寄 存器,即有基本的段约定,如果要改变默认的段 约定(即段超越)ห้องสมุดไป่ตู้则需要在指令中明确指出来.
例如:
MOV BX,ES:[3400H];
将附加段ES段中偏移地址为3400H和3401H两单元 的内容送BX中。
若用DATA代替偏移地址3400H :
操作数物理地址PA:
....
8BH
PA=2000H*16+1000H=21000H
07H
将 21000 H、21001 H 单元的内容送 AX。
....
代码段
执行结果: (AX) = 5B40 H 2000:1000 H 40
数据段
2000:1001 H 5B
AH AL
5B 40

第3章 8086指令系统(2)

第3章 8086指令系统(2)
3.3 80X86指令系统
8086/8088指令系统按其功能分为以下类型:数 据传送指令、地址传送指令、标志寄存器传送 指令、算术运算指令、逻辑运算指令、移位指 令、控制转移指令、串操作指令、中断指令和 处理器控制指令。
一.数据传送指令
数据传送指令用于寄存器、存储单元、或输入
输出端口之间传送数据或地址。8086/8088有14
CMP AL,100
29
CMP指令执行后对标志位的影响
操作数类型
带符号的 二进制
CF ZF SF OF
两操作数的关系
01 0 0
等于
-010
小于
- 0 0 1 目的操作数 小于 源操作数
-000
大于
-011
大于
不带符号的 二进制
01 0 0
等于
10 -
- 目的操作数 低于 源操作数
00 -
-
高于
举例: n=8 bit 带符号数(-128~127), 无符号数(0~255)
PUSH AX
PUSH DX
78H
POP AX
56H
POP DX
34H
12H
9
(4)XCHG指令 格式:XCHG OP1,OP2 操作:源、目的操作数之间交换一个字节 或字的数据。源操作数或目的操作数只能 取通用寄存器或通用寄存器与存储器 例: XCHG AX,CX
XCHG AL,BL XCHG AX,[BP+DI]
中的数相乘,结果放在累加器中
乘积为双字节长时,结果放在AX中;乘积为双 字长时,分别放在DX(乘积的高16位)和AX中。 该指令的运行结果只影响标志位CF和OF 例:MOV AL,FIRST
MUL SECOND MOV THIRD,AX (2)IMUL指令 格式:IMUL SRC 该指令为带符号数相乘指令

第三章 8086指令系统

第三章 8086指令系统

⑵寄存器间接寻址 操作数的有效地址由基址寄存器BX、BP或变址寄存器 操作数的有效地址由基址寄存器BX、BP或变址寄存器 SI、DI提供。 SI、DI提供 提供。 BX BP SI BP
EA=
例如: 例如:设DS=2000H, AX=7850H ,BX=1000H MOV AX,[BX]; , ;
3.1 8086寻址方式 寻址方式
一条指令的机器码通常包含操作码(OP)和操作 一条指令的机器码通常包含操作码(OP) 数两部分。指令的格式如下: 数两部分。指令的格式如下: 操作码OP 操作码OP CODE 操作数Operand 操作数Operand
例如,MOV AL,03H; 例如, , ; SOPD 源操作数 目的操作数 DOPD 操作码 •操作码表示指令执行什么操作(必有) 操作码表示指令执行什么操作(必有) •操作数表示参加操作的数或数的存放地址
寻找操作数存放地址的方式称为寻址方式 寻找操作数存放地址的方式称为寻址方式 8086的寻址方式分为两类: 8086的寻址方式分为两类: 的寻址方式分为两类 •数据寻址方式
√本节
•转移地址寻址方式
3.1.1 立即寻址 该寻址方式中,指令直接给出 位或16位的操作数 直接给出8 该寻址方式中,指令直接给出8位或16位的操作数 立即数)。该数紧跟在操作码之后, )。该数紧跟在操作码之后 (立即数)。该数紧跟在操作码之后,作为指令的操 作数字段存放在指令代码中 如果是16位立即数, 如果是16位立即数,那么低位字节数存放在低地址 位立即数 单元中,高位字节数存放在高地址单元中。 单元中,高位字节数存放在高地址单元中。机器码存 放形式如图
00H
操作: 操作:3000×10H × +EA= 2000H + 1000H + 0250H P 33250H 33251H 78H 56H 数据段

第三章 8086的寻址方式和指令系统[3-2]

第三章 8086的寻址方式和指令系统[3-2]

注意:在间接输入输出指令之前,需将端口号送入DX寄存器。
12:16 27
§3-3 8086的指令系统
2、输入输出指令
输入指令IN
例: IN IN AL,80H AX,80H ; AL←80H端口的内容 ; AL←80H端口的内容 ; AH←81H端口的内容 MOV DX, 1234H IN
§3-3 8086的指令系统
一、数据传送指令(14条) 存储器
通用数据传送指令(5条) MOV
PUSH
寄存器
装入有效地址
装入数据段寄存器
I/O
地址目标传送指令(3条) LEA
LDS
字节或字的传送
入栈指令
POP
XCHG XLAT IN OUT
12:16
出栈指令
交换字或字节 表转换 输入 输出
LES
装入附加段寄存器
SP-2
SP
42H
61H
进栈方向
SP-1
SP
高地址
12:16
执行前
执行后
高地址
17
AX=6142H
§3-3 8086的指令系统
(3)POP出栈指令 指令格式: POP 目的操作数 工作过程:先弹出:目的操作数 (SP+1,SP) 后修改指针: SP SP+2 目的操作数:可以是16位通用寄存器、段寄存器、存储 器中的数据字,但不能是立即数。
40338086的指令系统一数据传送指令14条存储器寄存器io通用数据传送指栈指令lds装入数据段寄存器pop出栈指令les装入附加段寄存器xchg交换字或字节标志传送指令4条xlat表转换lahf标志寄存器低字节装入ah输入输出指令2条sahfah内容装入标志寄存器低字节in输入pushf标志寄存器入栈指令out输出popf出栈并送入标志寄存器522

第3章80888086指令系统(老师用的课件哦)

第3章80888086指令系统(老师用的课件哦)

第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。

3.2 8086指令系统

3.2  8086指令系统

对标志位C、O、P、S、Z、A有影响

例3-21 不带进位加法指令 ADD CL,20H

;(CL)←(CL)+20H ;(AX)←(AX)+(SI)
ADD ADD ADD
AX,SI DATA [BX],AL DX,[BX+SI]
;((BX)+DATA)←((BX)+DATA)+(AL) ;(DX)←(DX)+((BX)+(SI))


地址指针传送指令 DD 55663344H ;设定POINT的段地址和偏移 ;(BX)=3344H,(DS)=5566H ;(BX)=3344H,(ES)=5566H
POINT 地址 LDS LES

BX,POINT BX,POINT
(1)标志读写指令

格式:LAHF/SAHF 功能:LAHF(读标志指令)用于将标志寄存器的低8位送AH, 即将标志寄存器FLAGS中的SF(符号标志)、ZF(零标志)、 AF(半加进位标志)、PF(奇偶标志)和CF(进位标志)5个标



将立即数传送至存储器中
MOV
M, im
MOV指令使用规则
1) 2) 3) 4) 5) 6) IP、CS不能作目的寄存器 不允许mem←mem 不允许segreg←segreg 立即数不允许作为目的操作数 不允许segreg←立即数 源操作数与目的操作数类型要一致
几个不能传送的解决办法:用AX作桥梁 几个不能传送的解决办法:用AX作桥梁
SRC DEST PUSH M POP r POP M
功能:PUSH指令首先将 SP (SP) 2
,然后将16位源操作数 压入堆栈;POP指令则是先从栈顶弹出16位操作数到目的操作数 中,同时 SP (SP) 2 堆栈操作是双字节操作,SRC、DEST可以是通用寄存器、段寄存 器(CS除外)或存储器

[小学教育]第三章 8086指令系统

[小学教育]第三章 8086指令系统

指令
数据
(a)
指令
内存
指令 基址寄存器 变址寄存器
变址值
EA
数据
(b)
指令
寄存器
寄存器
数据
(f) 指令
基址值
基址寄存器 变址寄存器 位移量
(c)
指令
寄存器
内存
变址值
寄存器
EA
(d) 指令
数据
基址值 (g)
寄存器 位移量
内存
+
数据
8086寻址方式
地址 (e)
内存
+ 数据
内存
+ EA 数据

§3.3 数据传送指令


[17000H] AL

[17001H] AH


原 理
[SI]

(2) 若EA = [BP] +

[DI]



则操作地址:SS: EA
第 三 章
7. 相对的基址加变址寻址
[SI]
(1) 若EA = [BX] +
+ 8位或16位偏移量
[DI]
则操作数地址:DS: EA
例 MOV AX,[BX+SI+0250H]
SI,DI - 变址寄存器
第 三 章
微 机
[SI] (1) 若EA = [BX] +
[DI]


则操作数地址:DS: EA
及 接
例 MOV AX,[BX+SI]

若 DS = 1000H, BX = 5000H, SI = 2000H
技 术

第3章 8086的指令系统—3.2.4串操作类指令

第3章 8086的指令系统—3.2.4串操作类指令

例题10: 在当前附加段中从STRING开始 例题 : 在当前附加段中从 开始 存放一个有300个字符的字符串,查找该 个字符的字符串, 存放一个有 个字符的字符串 串中是否存在字符“ ” 如果存在, 串中是否存在字符“*”,如果存在,将 第一个“*”的地址送到BX寄存器中。 第一个“ ”的地址送到 寄存器中。 寄存器中
3.2.4 串操作指令 4.存字符串指令STOSB/ 4.存字符串指令STOSB/STOSW 存字符串指令STOSB 格式: 格式:STOSB/STOSW 0400H开始的256个单元清 的程序段。 开始的256个单元清0 例如 使0400H开始的256个单元清0的程序段。 CLD ;清除方向标志 DI, 将目的地址0400H 0400H送 LEA DI,[0400H] ;将目的地址0400H送DI MOV CX,0080H CX, ;共有256个字节 共有256个字节 256 AX, AX清 XOR AX,AX ;AX清0 256个字节清 个字节清0 REP STOSW ;将256个字节清0 5.取字符串指令LODSB/ 5.取字符串指令LODSB/LODSW 取字符串指令LODSB 格式: 格式:LODSB/LODSW
重复前缀
REP 1. 判断 是否为 ,若是,结束本指令,否则 判断CX是否为 是否为0,若是,结束本指令,否则2 2. 执行其后的 串指令 3.(CX)-1------》(CX) ( ) 》 ) 4. 转1 REPZ/REPE 1.若CX为0或ZF=0,结束本指令,否则 若 为 或 ,结束本指令,否则2 其余同上 REPNZ/REPNE 1. 若CX为0或ZF=1,结束本指令,否则 为 或 ,结束本指令,否则2 其余同上
在当前附加段中从string开始存放一个有300个字符的字符串查找该串中是否存在字符如果存在将第一个的地址送到bx寄存器中Leabharlann 第3章3.2.4 串操作指令
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2.4 串操作指令
1.字符串传送指令 1.字符串传送指令 格式: 格式:MOVSB/MOVSW 2.字符串比较指令CMPSB/ 字符串比较指令CMPSB 2.字符串比较指令CMPSB/CMPSW 格式: 格式:CMPSB/CMPSW 3.字符串检索指令SCASB/ 字符串检索指令SCASB 3.字符串检索指令SCASB/SCASW 格式: 格式:SCASB/SCASW
例题10: 在当前附加段中从STRING开始 例题 : 在当前附加段中从 开始 存放一个有300个字符的字符串,查找该 个字符的字符串, 存放一个有 个字符的字符串 串中是否存在字符“ ” 如果存在, 串中是否存在字符“*”,如果存在,将 第一个“*”的地址送到B中
大家分析该题目如何完成
答案
MOV DI, OFFSET STRING(LEA DI,STRING) ; 装入目的串偏移地址 MOV AL, ‘*’ ;装入比较关键字 MOV CX,300 ;装入字符串长度 REPNE SCASB MOV BX,DX ;匹配字符的下一个字符地 址装入BX 址装入 SUB BX,1 ;BX-1得到第一个匹配字符的 得到第一个匹配字符的 地址
第3章
3.2.4 串操作指令
串操作指令就是用一条指令实现对一串字 符或数据的操作。 符或数据的操作。 重复前缀指令 REP REPE/ REPZ REPNE/ REPNZ ;无条件重复前缀指令 ;条件重复前缀指令 ;条件重复前缀指令
重复前缀
REP 1. 判断 是否为 ,若是,结束本指令,否则 判断CX是否为 是否为0,若是,结束本指令,否则2 2. 执行其后的 串指令 3.(CX)-1------》(CX) ( ) 》 ) 4. 转1 REPZ/REPE 1.若CX为0或ZF=0,结束本指令,否则 若 为 或 ,结束本指令,否则2 其余同上 REPNZ/REPNE 1. 若CX为0或ZF=1,结束本指令,否则 为 或 ,结束本指令,否则2 其余同上
3.2.4 串操作指令 4.存字符串指令STOSB/ 4.存字符串指令STOSB/STOSW 存字符串指令STOSB 格式: 格式:STOSB/STOSW 0400H开始的256个单元清 的程序段。 开始的256个单元清0 例如 使0400H开始的256个单元清0的程序段。 CLD ;清除方向标志 DI, 将目的地址0400H 0400H送 LEA DI,[0400H] ;将目的地址0400H送DI MOV CX,0080H CX, ;共有256个字节 共有256个字节 256 AX, AX清 XOR AX,AX ;AX清0 256个字节清 个字节清0 REP STOSW ;将256个字节清0 5.取字符串指令LODSB/ 5.取字符串指令LODSB/LODSW 取字符串指令LODSB 格式: 格式:LODSB/LODSW
相关文档
最新文档