第3章 8086指令系统(2)

合集下载

第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 体系结构与80x86CPU1.8086CPU 由哪两部份构成?它们的主要功能是什么?答:8086CPU 由两部份组成:指令执行部件<EU,Execution Unit>和总线接口部件<BIU,Bus Interface Unit>。

指令执行部件〔EU 主要由算术逻辑运算单元<ALU>、标志寄存器F R、通用寄存器组和E U 控制器等4个部件组成,其主要功能是执行指令。

总线接口部件<BIU>主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或者I/O 端口读取操作数参加E U 运算或者存放运算结果等。

2.8086CPU 预取指令队列有什么好处? 8086CPU 内部的并行操作体现在哪里?答: 8086CPU 的预取指令队列由6个字节组成,按照8086CPU 的设计要求, 指令执行部件〔EU 在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。

从速度上看,该指令队列是在C PU 内部,EU 从指令队列中获得指令的速度会远远超过直接从内存中读取指令。

8086CPU 内部的并行操作体现在指令执行的同时,待执行的指令也同时从内存中读取,并送到指令队列。

5.简述8086 系统中物理地址的形成过程。

8086 系统中的物理地址最多有多少个?逻辑地址呢?答: 8086 系统中的物理地址是由20 根地址总线形成的。

8086 系统采用分段并附以地址偏移量办法形成20 位的物理地址。

采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部份构成,都是16 位二进制数。

通过一个20 位的地址加法器将这两个地址相加形成物理地址。

具体做法是16 位的段基址左移4位<相当于在段基址最低位后添4个"0">,然后与偏移地址相加获得物理地址。

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
这个问题的第三种方法:

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

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

§3-3 8086的指令系统
3、循环控制指令(Iteration Control)
通常的循环控制
MOV CX, N ; N为循环次数 BEGIN: …. …. …. DEC CX JNZ BEGIN 用LOOP BEGIN替换
循环体
有了循环控制指令,上面程序简化为: MOV CX, N BEGIN: ……
单字节指令,总是被安排在中断服务程序的出口处。
任何中断服务程序不管是外部中断引起的,还是内部中断引起的 , 最后都要
用IRET返回。
举例:
主程序: CODE START: SEGMENT ASSUME CS:CODE, DS:CODE …… STI . . . ENDS END START 中断子程序: …… STI . . . CLI … STI IRET
微型计算机原理与接口技术
第 8讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done
( 1 )无符号数比较测试指令中,指令助记符中的“ A”是英文 Above的缩写, 表示“高于”之意,“B”是英文Below的缩写,表示“低于”之意;
(2)带符号数比较测试指令中,指令助记符中的“G”(Great than)表示大于, “L”(Less than)表示小于。
12:16
17
§3-3 8086的指令系统
24
CODE
12:16
§3-3 8086的指令系统
6类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令

微机原理与接口技术 (第三版)电子工业出版社 第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 装入一个新的物理地址

微机原理第3章2

微机原理第3章2

(2)使CX的b11, b7, b3 位清零。
(3)测试DX的b0 、 b8 位是否同是1.
(4 )以下可使寄存器AX和CF同时清零的指令 是
A. SUB AX, AX B. XCHG AX, AX
C. PUSH AX
D. XOR AX, AX
21
例3—28 统计负数的个数
从4000 H开始的单元中存放有32个有符号数, 统计负数的个数,存人 BUFFER单元中。
格式:
NOT OPRD
操作:
操作数按位取反再送回原操作数
注:
指令中的操作数不能是立即数,只能是 MEM/REG
指令的执行对标志位无影响
例:NOT BYTE PTR[BX] 16
(4)“异或”运算指令
格式:
XOR OPRD1,OPRD2
操作:
两操作数相“异或”,结果送目标地址
AL
00011010
CF
0
CF
0
CF
0
29
(3) 算术右移指令SAR
格式: SAR OPRD,I SAR OPRD,CL
有符号数 的右移
CF
30
算术右移 符号位保持不变
31
非循环移位指令的应用
左移可实现乘法运算 右移可实现除法运算
32
例3-30 16位无符号数 乘以10
8086指令系统(2)
1
三、逻辑运算和移位类
逻辑运算
移位操作
非循环移位 循环移位
2
逻辑运算和移位指令
3
指令类型
逻辑运算
与,或,非,异或
移位操作
非循环移位,循环移位
4
1、逻辑运算指令
逻辑运算指令对操作数的要求大多与ADD指令相同 。“非”运算指令要求操作数不能是立即数;(“非” 指令同INC,其他指令搭配规则同ADD)

微机原理第3章指令

微机原理第3章指令

第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。

为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。

第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。

个别指只有操作码没有操作数。

由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。

8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。

指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。

段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。

生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。

确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。

立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。

这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。

段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。

003_微机原理-指令系统_2

003_微机原理-指令系统_2

MOV DS, AX
不影响标志位
3.3 指令系统—换码指令
指令书写格式: XLAT
指令执行的操作:
(AL)←((DS:BX+AL)) 查表操作,将BX指定的缓冲区中、AL指定的位移处的一个字节数 据取出赋给AL
指令说明
操作数隐含使用基地址寄存器BX与AL寄存器 换码指令执行前,在主存建立一个字节量表格,内含要转换的目 的码字,表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后,指令将AL寄存器的内容转换为目标码字,因为 偏移量AL为8位,表格长度≤256字节 不影响标志位
数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
3.3 指令系统-通用数据传送指令
指令书写格式: MOV dst, src
指令执行的操作:(dst)←(src) 指令说明
操作数类型:立即操作数,寄存器操作数,存储器操作数 立即操作数不能作为目的操作数DST 错误:MOV 30H, AL 两个操作数也不能同时为存储器操作数 错误: MOV [DI+100H], [SI+200H]
dst为目的操作数,操作数类型可为寄存器操 作数或存储器操作数 cnt为移位次数,可为立即数1,或由寄存器 CL指定 SHL、SHR和SAL指令影响标志位CF和OF, cnt=1时,SHL与SAL移位后的最高位和CF不 同,则OF=1;SHR,OF=移位前最高位 SAR指令影响标志位CF、OF、PF、SF、ZF, AF不确定;
; 测试AL中数据的奇、偶
3.3 指令系统-移位指令
逻辑左移指令: SHL dst, cnt 算术左移指令: SAL dst, cnt
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

执行RCR AL,1后,AL=1101 1010,CF=0
例1:将DX.AX中32位数值左移一位 SAL/SHL AX,1 RCL DX,1
DX
CF
AX
0
例2:测试BL寄存器中D5的状态,若为0,则转ZERO
MOV CL,3
ROL BL,CL JNC ZERO ; CF=0,转移到 ZERO
3.6 串操作指令 串操作指令是8086指令系统中比较独特的一类指 令,采用比较特殊的数据串寻址方式,在操作主存连 续区域的数据时,特别方便。 特点:
3.7.1 控制转移指令的寻址方式
8088/8086的寻址方式分为两类: 关于寻找数据的寻址方式 关于寻找转移地址的寻址方式 转移可以分成两类:段内转移和段间转移
例如: 若CF=1,CL=02H, AL=11011101 则执行指令:SHL AL,CL后, AL=01110100 , CF=1 则执行指令:SAL AL,CL后, AL=01110100 , CF=1 则执行指令:SHR AL,CL后, AL=00110111 , CF=0 则执行指令:SAR AL,CL后, AL=11110111 , CF=0
重复前缀共有5种:REP/REPZ/REPE/REPNZ/REPNE
重复前缀不能单独使用,只能加在串操作指令之前,用来 控制跟在其后的基本字符串操作指令,使之重复执行。
1) REP 无条件重复
执行的操作: ①若(CX)=0,则退出REP,否则往下执行; ②(CX)←(CX)-1; ③执行后跟的串操作指令; ④重复①~③。 REP前缀可以理解为:当数据串没有结束(CX≠0),则 继续传送。
若采用重复前缀,程序段如下: MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,100 REP MOVS AREA2,AREA1
2.串比较指令 CMPS
指令格式: CMPS dst,src 或 MCPSB/MCPSW 指令功能: ① DS:[SI] -ES:[DI] ② 修改地址指针:DI←DI ± 1,SI←SI ± 1 或 DI←DI ±2,SI←SI± 2 该指令把DS段中由SI所指的字节串或字串与ES段中的由DI 所指的字节串或字串比较 (进行相减),但不送回结果,只影响 OF、SP、ZF、AF、PF和CF,并在比较之后,自动修改地址 指针。
3.5 移位指令和循环移位指令 3.5.1 移位指令 移位指令:算术左、右移指令SAL、SAR 逻辑左、右移指SHL、SHR。 格式 SHL src,CL1/1 SAL src,CL/1 SAR src,CL/1 SHR src, CL/1
其功能是用来实现对寄存器或存储单元的 8位或16位数据移动一位或多位。 移位指令的第一个操作数是指定的被移 位的操作数,可以是寄存器或存储单元;后 一个操作数表示移位位数: 若该操作数为1,表示移动一位 若该操作数为CL,CL寄存器值表示移位 位数 (移位位数大于1只能用CL表示)
5. 存字符串指令 STOS
指令格式:STOS dst 或 STOSB/STOSW 指令功能: ① ES:[DI] ← AL /AX ② 修改地址指针:DI←DI ± 1 或 DI←D到ES段由DI所指的内存单元, 并且自动修改地址指针(DI)←(DI)+1(或2)。STOSB/STOSW可以 与REP前缀配用,实现在串内存单元中填入某一相同的数。
1.算术左移指令SAL /逻辑左移指令SHL
指令格式:SAL/ SHL dst,CL/1 指令功能:SAL和SHL的操作相同,将目的操作数顺序向左 移位,最低位补0,最高位进入CF 操作数:8位或16位,寄存器或存储器
CF
dst 0 SAL
CF
dst
0 SHL
例如:SAL SI,1
SHL BYTE PRT [BX],CL
1)串操作指令的操作数是主存中连续存放的数据串 (String)——即在连续的主存区域中,字节或字的序列 2)串操作指令的操作对象是以字(W)为单位的字串, 或是以字节(B)为单位的字节串。
3)源操作数用寄存器SI寻址,默认在数据段DS中,但允 许段超越:DS:[SI] 目的操作数用寄存器DI寻址,默认在附加段ES中,不允 许段超越:ES:[DI]
注意:在使用该指令前将搜索的关键字存于AL/AX 中,若找到搜索字,ZF=1。
例:在ES段偏移地址为1000H的存储区中,有一个长度为 50的字符串,查找是否存在‘空格’符。 程序段如下: MOV DI,1000H MOV AL,20H ;取空格ASCII码 MOV CX,32H ;比较字节个数送CX CLD ;设置增址比较 REPNE SCASB ;搜索 JZ FOUND ;ZF=1,发现空格 ... ;不含空格,则继续执行 FOUND: ... 注意:找到后对应的字符单元为DI-1
例:数据区的初始化(清零或置同一数)
例:编程使ES段中从0400H开始的256个单元清0。 程序段如下: LEA DI,ES:[0400H] MOV CX,0080H CLD XOR AX,AX REP STOSW
;DI指向存储目的首址 ;计数值为128个字 ;增址存储
;0重复存入256个字节中
3.7 控制转移指令
4)串操作指令执行时,由方向标志决定数据串处理方向,当 DF=0时(执行CLD指令后),表示正向处理(地址指针增1或 2);当DF = 1时(执行指令STD后),表示反向处理(地址 指针减1或2)。 5)串长度必须放在CX寄存器中
6)可在串操作指令前加重复前缀,每重复执行一次,CX 内容会自动减1。 需注意的是,执行带有重复前缀的指令时,对CX的检 测是在执行指令前进行的。
8086的指令执行顺序由代码寄存器CS和指令指针IP的内容 确定。
控制转移类指令通过改变IP(和CS)值, 实现程序执行顺序的改变
8086的控制转移类指令可分为四小类,即无条件转移 与调用返回、条件转移、循环控制和中断类指令。除中断 类指令外,其它类指令均不影响标志位。
控制转移类指令用于实现分支、循环、过程等程序结 构,是仅次于传送指令的最常用指令
3. 算术右移指令SAR 格式:SAR dst, 1/CL 功能; dst右移1/CL位;最高位不变,最低位进入CF opr CF SAR
算术左移一位相当于有符号数乘以2 算术右移一位相当于有符号数除以2
-64≤x≤+63 -128≤x≤+127
标志位:移位指令按照移入的位设置进位标志CF,根据移位后 的结果影响SF、ZF、PF、OF 由于移位后可能使符号位发生变化,可通过测试OF 位来判断。 当移位次数为1时:OF=1 ——移位前后符号位有变化 OF=0 ——移位前后符号位无变化
或 DI←DI ±2,SI←SI± 2
*用 MOVS 指令可实现存储器单元间的数据传送; *前面加REP指令可实现一批存储器单元间的数据传送。
例3-7 : 将数据段中从AREA1开始存放的100个字节数据传送 到附加段以AREA2为首地址的区域。 采用用字符串传送指令实现。程序段如下: MOV SI,OFFSET AREA1 LEA SI,OFFSET AREA1 MOV DI,OFFSET AREA2 LEA DI,OFFSET AREA2 MOV CX,100 offset是汇编操作符, AGAIN:MOVS AREA2,AREA1 求出变量的偏移地址 DEC CX 转移指令,ZF ≠ 0转 JNZ AGAIN
CF
opr
ROL
CF
opr
RCL opr RCR CF
CF
opr ROR
循环移位指令的操作数形式与移位指令相同,按指令功能 只影响CF和OF,同样只有当cnt=1时,OF才有意义。不影 响SF、ZF、PF、AF标志 特点:不会丢失源操作数的有效数位 例:设AL=1011 0100B,CF=1执行下列语句: 执行ROL AL,1 后,AL=0110 1001,CF=1 执行ROR AL,1后,AL=0101 1010,CF=0 执行RCL AL,1后,AL=0110 1001,CF=1
4.取字符串指令 LODS
指令格式: LODS src 或 LODSB/LODSW
指令功能: ① AL /AX ←DS:[SI]
② 修改地址指针:SI←SI ± 1或 SI←SI± 2 该指令用来把DS段中由SI所指的存储单元的内容取到AL(或 Ax)中,因此,LODSB/LODSW指令不能加前缀,否则,AL或 AX中的内容会被后一次取入的字符所覆盖。 LODS指令不影响状态标志位。
2) REPE/REPZ 相等/结果为0 (ZF=1)时重复
指令功能:若CX≠0,且ZF=1,重复执行,CX←CX-1, 若CX=0,或 ZF=0,执行下一条指令。
一般用于比较指令和搜索指令,表示只有当两数相等方可 继续比较;若遇到两数不相等时,则可提前结束串操作。即当 数据串没有结束(CX≠0),并且串相等(ZF=1),则继续比 较.
3.5.2 循环移位指令
循环移位指令有四条类似移位指令,但要将从一端移 出的位返回到另一端形成循环。分为: ROL dst, 1/CL ;不带进位循环左移 ROR dst, 1/CL ;不带进位循环右移 RCL dst, 1/CL ;带进位循环左移 RCR dst, 1/CL ;带进位循环右移
串比较指令前可采用重复前缀 REPE/REPZ ,其意义为 当CX=0或ZF=1(两元素相同),重复执行结束。 串比较指令前还可采用重复前缀 REPNE/REPNZ ,其意义为 当CX=0或ZF=0 (两元素不相同),重复执行结束。
例3-8: 上例用MOVS指令传送后,源数据串与目的字节串, 是否相同。若不一样,将找出的不一样的元素存入AL中, 并将偏移地址并记入BX,若相同,在BX中置数FFFFH。 程序段如下: CLD ;设置增址比较 MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,64H REPE CMPSB ;增址重复比较 JNZ ERROR ;出现不相同元素转移 MOV BX,0FFFFH ;两数据串相同 JMP STOP ERROR : DEC SI MOV BX,SI MOV AL,[SI] STOP:HLT---
相关文档
最新文档