第3章汇编指令系统(3)

合集下载

专题四 MCS-51指令系统-第三章 单片机的指令系统

专题四 MCS-51指令系统-第三章 单片机的指令系统

8、指令字节数和机器周期数
第三章 单片机的指令系统
是必须掌握的内容。 Ø 一台计算机所有指令的集合, 称为该计算机的指令系统。 Ø 各种计算机都有专用的指令系统。
Ø 本章主要介绍单片机的寻址方式及指令系统,
学时分配:2学时 1—53+97+98+99 2学时 54—96 100
第三章 单片机的指令系统 • 3.1 MCS-51 指令系统概述

按指令字长分类
按指令执行时间分类
3.2 寻址方式
• 寻址方式:7种
– – – – – – – – – 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 变址间接寻址 相对寻址 位寻址 寻址方式与寻址空间 MCS-51单片机的两个突出特点
寄存器寻址——操作数存放在寄存器中
寄存器为 MOV A,R0 MOV R0,#01001111B R0~R7,A,DPTR,C SETB RS0 MOV R3,#56H
目的寻址为直接寻址
2) 20H ~2FH 可位寻址区的寻址方式
字节寻址方式: 直接寻址 direct
寄存器间接寻址@R0,@R1
位寻址: bit 直接寻址
例: MOV 26H,C ; 位寻址 (26H)1位
MOV 26H,A ;字节寻址(26H)8位
3) 30H ~7FH 数据缓冲区的寻址方式
字节寻址方式: 直接寻址 direct
MOV A,#23H
PUSH ACC
;
A寄存器寻址
POP
0E0H
;直接寻址
4、可做片内RAM的指针有:
R0,R1, 四个组共有8个 预先设置RS1、RS0,以选定组。 SETB RS0 CLR RS1; 1组

第三章 汇编语言程序设计

第三章  汇编语言程序设计

第3章 汇编语言程序设计 章
3.2 汇编语言源程序的格式
பைடு நூலகம்
名字: 名字:变量和标号
变量名 段名 过程名:指示性语句中的名字.内存单元的名 变量名/段名 过程名:指示性语句中的名字. 段名/过程名
定义. BUF DB ? 字,由DB/DW/DD定义. 由 定义 变量的三种属性: 变量的三种属性: 段值 SEG 偏移量 OFFSET 类型 BYTE/WORD/DWORD 标号:指令性语句中的名字.指令存放单元的符号地址. 标号:指令性语句中的名字.指令存放单元的符号地址. LOOPER: MOV AL,DATA[SI] 标号的三种属性: 标号的三种属性: 段值 SEG 偏移量 OFFSET 类型 NEAR/FAR 对于汇编程序来说,变量和标号都是存储单元的符号地址. 注:对于汇编程序来说,变量和标号都是存储单元的符号地址. 只是标号对应的存储单元中存放的是指令, 只是标号对应的存储单元中存放的是指令,而变量所对应的 存储单元存放的是数据. 存储单元存放的是数据.
令和数据. 令和数据. 汇编语言(Assenbly Lauguage):用助记符来编写 汇编语言( Lauguage): 指令,地址和数据也可用符号表示. 指令,地址和数据也可用符号表示.用汇编语言 编写的程序必须翻译成机器语言目标程序( 编写的程序必须翻译成机器语言目标程序(或目 标代码)才能执行,这种翻译过程称为汇编 汇编. 标代码)才能执行,这种翻译过程称为汇编. 高级语言:不针对某个具体的计算机,通用性强. :不针对某个具体的计算机,通用性强. 但高级语言编写的源程序同样必须"翻译" 但高级语言编写的源程序同样必须"翻译"成机 器语言,计算机才能执行, 器语言,计算机才能执行,所用的系统软件称为 编译程序或解释程序. 编译程序或解释程序.

在DSP应用中,虽然可以使用CC++高级语言编程,降低了

在DSP应用中,虽然可以使用CC++高级语言编程,降低了

第3章汇编语言指令系统在DSP应用中,虽然可以使用C/C++高级语言编程,降低了对编程者的要求,但在一些实时性要求高的场合仍然需要采用汇编编程,以充分利用DSP丰富的硬件资源,发挥它的实时运算能力。

用汇编语言编程,要求编程者对DSP的低层有充分的了解,包括硬件结构、存储器空间模型和I/O口的组织等。

同时又要求编程者对指令系统有深刻的了解。

第3章汇编语言指令系统目录:3.1 C54x 汇编语言指令集介绍3.2 寻址方式3.3 C54x 系列DSP的指令系统参考:TMS320C54x DSP Reference Set Volume 2:Mnemonic Instruction Set.pdf, spru172c, 2001, TI官网3.1 C54x汇编语言指令集介绍C54x汇编语言源程序指令包括:➢汇编语言指令Assembly Language Instructions ➢汇编伪指令Assembler Directives➢宏指令Macro Directives本章介绍C54x DSP的汇编语言指令系统。

与其它CPU的指令集相同,汇编语言指令又称为硬指令,它们在汇编和连接后形成可执行的机器码,供DSP进行运算和其它操作。

TMS320C54x assembly language source programs consist of source statements that can contain assembler directives, assembly language instructions, macro directives, and comments.3.1.1 指令系统中的符号、缩写及操作符➢指令系统中采用的符号和缩写如下列表中所示序号符号含义1A累加器A2ALU算术逻辑运算单元3AR泛指通用辅助寄存器4ARx指定某一辅助寄存器AR0~AR75ARP ST0中的3位辅助寄存器指针6ASM ST1中的5位累加器移位方式位-16~15 7B累加器B8BRAF ST1中的块重复操作标志位9BRC块重复操作计数器10BITC或bit_code用于测试指令,指定数据存储器单元中的哪一位被测试,取指范围:0~15BIT Xmem, BITC3.1 C54x汇编语言指令集介绍3.1.1 指令系统中的符号、缩写及操作符(续)序号符号含义11C16ST1中的双16位/双精度算术运算方式位12C ST0中的进位位13CC2位条件码(0≤CC≤3)14CMPT ST1中的ARP修正方式位15CPL ST1中的直接寻址编辑标志位16cond表示一种条件的操作数,用于条件执行指令17[d],[D]延时选项18DAB D地址总线19DAR DAB地址寄存器20dmad16位立即数数据存储器地址(0~65535)序号符号含义21Dmem数据存储器操作数22DPST0中的数据存储器页指针(0≤DP≤511)23Dst目的累加器(A和B)24dst_与dst相反的目的累加器25EAB E地址总线26EAR EAB地址寄存器27extpmad23位立即数程序存储器地址28FRCT ST1中的小数方式位29hi(A)累加器的高阶位(AH或BH)30HM ST1中的保持方式位3.1.1 指令系统中的符号、缩写及操作符(续)序号符号含义31IFR中断标志寄存器32INTM ST1中的中断屏蔽位33K少于9位的短立即数34k33位立即数(0≤k3≤7)35k55位立即数(-16≤k5≤15)36k99位立即数(0≤k9≤511)37lk16位长立即数38Lmem利用长字寻址的32位单数据存储器操作数39mmr,MMR存储器映像寄存器40MMRx,MMRy存储器映像寄存器,AR0~AR7或SP3.1.1 指令系统中的符号、缩写及操作符(续)第3章汇编语言指令系统序号符号含义41n XC 指令后面的字数,取1或242N 指定状态寄存器,N=0为ST0,N=1为ST143OVA ST0中的累加器A 溢出标志44OVB ST0中的累加器B 溢出标志45OVdst 指定目的累加器(A 或B)的溢出标志46OVdst_另一个目的累加器(A 或B)的溢出标志47OVsrc 指定源累加器(A 或B)的溢出标志48OVM ST1中的溢出方式位49PA 16位立即数端口地址(0≤PA ≤65535)50PAR 程序存储器地址寄存器3.1.1 指令系统中的符号、缩写及操作符(续)XC n, cond [, cond [, cond]RSBX N, SBIT第3章汇编语言指令系统序号符号含义51PC程序计数器52pmad16位立即数程序存储器地址(0≤pmad≤65535)53pmem程序存储器操作数54PMST处理器工作方式状态寄存器55prog程序存储器操作数56[R]舍入选项57rnd舍入Round58RC重复计数器59RTN快速返回寄存器60REA块重复结束地址寄存器3.1.1 指令系统中的符号、缩写及操作符(续)第3章汇编语言指令系统序号符号含义61RSA 块重复起始地址寄存器62SBIT 用于指定状态寄存器位的4位地址(0~15)63SHFT 4位移位值(0~15)64SHIFT 5位移位值(-16~15)65Sind 间接寻址的单数据存储器操作数66Smem 16位单数据存储器操作数67SP 堆栈指针寄存器68src 源累加器(A 或B)69ST0,ST1状态寄存器0,状态寄存器170SXM ST1中的符号扩展方式位3.1.1 指令系统中的符号、缩写及操作符(续)RSBX N, SBIT序号符号含义71T暂存器72TC ST0中的测试/控制标志73TOS堆栈顶部74TRN状态转移寄存器(比较选择存储CSST单元内) 75TS由T寄存器的5~0位所规定的移位数(-16~31) 76uns无符号数77XF ST1中的外部标志状态位78XPC程序计数器扩展寄存器79Xmem16位双数据存储器操作数, 用于双数据操作数指令和单数据操作指令80Ymem16位双数据存储器操作数,用于双数据操作数指令3.1.1 指令系统中的符号、缩写及操作符(续)CMPS指令3.1.1 指令系统中的符号、缩写及操作符➢指令系统中的运算符号及优先级如下列表中所示序号符号运算功能求值顺序1+ -~ !取正、取负、按位求补、逻辑非从右至左2* / %乘法、除法、求模从左至右3+ -加法、减法从左至右4^指数从左到右5<< >>左移、右移从左至右6< ≤小于、小于等于从左至右7> ≥大于、大于等于从左至右8≠!=不等于从左至右序号符号运算功能求值顺序8=等于从左至右9&按位与运算(AND )从左至右10∧按位异或运算(exclusive OR )从左至右11|按位或运算(OR )从左至右3.1.1 指令系统中的符号、缩写及操作符➢指令系统中的运算符号及优先级如下列表中所示本节以LD 装载指令为例,说明指令的格式和其它一些有用信息。

第三章 MCS-51指令系统

第三章 MCS-51指令系统
第三章 MCS-51指令系统
3-1 指令格式 3-2 寻址方式 3-3 数据传送指令 3-4 算术运算指令
3-5 逻辑运算指令
3-6 位操作指令
3-7 控制转移指令
3-8 调用和返回指令
1
第三章 MCS-51指令系统
3-1 指令格式
一、 汇编语言指令格式 [标号:] 操作码 [操作数1],[操作数2][;注释] 例: LOOP: MOV A,#40H ;40H -> A
3-2 指令寻址方式
寻找操作数的方法叫寻址方式。
一、立即寻址方式 指令中给出实际操作数据(立即数), 一般用于为寄存器或存储器赋常数初值。
例:
8位立即数: MOV A,#40H ;A40H 16位立即数: MOV DPTR,#2100H ;DPTR2100H
9
第三章 MCS-51指令系统 二、直接寻址方式
24
第三章 MCS-51指令系统
(四)堆栈操作指令 入栈指令:PUSH n ;SPSP+1,(SP)(n) 出栈指令:POP n ;(n)(SP),SPSP-1 例:设 A=02,B=56H,执行下列指令后,SP= 30H , ? A= ? ,B= ? 30H 30H
SBR: MOV SP,#30H ;设栈底 PUSH A PUSH B MOV A,#0 B, #01
Y1,Y2,…,Yn
5
第三章 MCS-51指令系统
3-1 指令格式
二、 伪指令
汇编时不产生机器码,仅供汇编识别控制。
5.定义空间伪指令:DS 表达式 例3-6 ORG DS DB 0F00H 10H 20H,40H
汇编后,从0F00H开始,保留16个字节的内存单元, 然后从0F10H开始,按照下一条DB伪指令给内存单元赋值, 得(0F10H)=20H,(0F11H)=40H。

第三章MCS51系列单片机指令系统及汇编语言程序设计

第三章MCS51系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)

第3章MCS-51指令系统

第3章MCS-51指令系统

第3章 MCS-51指令系统 4. 伪指令 在汇编语言源程序中,除了包含可以转化为特定计算机系 统的机器语言指令所对应的汇编语言指令外,还可能包含一些 伪指令,如“ORG 2000H”、“END”等。“伪”者,假也,尽 尽 管它不是计算机系统对应的指令,汇编时也不产生机器码,但 管它不是计算机系统对应的指令,汇编时也不产生机器码, 汇编语言程序中的伪指令并非可有可无。伪指令的作用是指导 汇编语言程序中的伪指令并非可有可无。 源程序的汇编过程, 源程序的汇编过程,例如“ORG 2000H”伪指令,指示汇编程序 将该伪指令后的汇编语言指令对应的机器码从2000H单元开始存 放。
第3章 MCS-51指令系统
· 52/54子系列内部RAM后128字节(即地址编码为80~FFH) 各单元之间不能直接传送。原因是高128字节内部RAM只能使 用寄存器间接寻址方式,而一条指令中,最多只允许一个操作 数使用寄存器间接寻址方式。 数据传送指令一般不会影响程序状态字寄存器PSW中的标 志位,但当数据传送到累加器A时,PSW中的奇偶标志位P会改 变,原因是奇偶标志位P总是体现累加器A中“1”的个数的奇偶 性。
第3章 MCS-51指令系统 1. 内部 内部RAM与特殊功能寄存器之间的数据传送 与特殊功能寄存器之间的数据传送 表3-1 内部RAM与特殊功能寄存器之间的数据传送指令
指令名称 指令格式 MOV A,Rn 以累加器A作为 目的操作数 MOV A,direct MOV A,@Ri MOV A,#data 机器码 11101rrr 11100101 direct 1110011i 01110100 data 功能 A←Rn A←(direct) A←(Ri) A←data 指令周期 1 1 1 1
MOV 90H,0F0H ; 将特殊功能寄存器0F0H单元(即寄存器B) 内容传送到特殊功能寄存器90H ; 单元(即P1口锁存器)中

第3章 PIC单片机指令系统

第3章 PIC单片机指令系统

第3章 指令系统3.1 3.2 3.3 3.4 汇编语言 寻址方式 PIC18F452指令系统 程序设计举例3.1汇编语言• 指令:是 指令:是CPU CPU根据人的意图来执行某种操作的命令。

根据人的意图来执行某种操作的命令。

• 程序设计语言:是实现人机交换信息的基本工具,分为机 器语言、汇编语言和高级语言。

• 机器语言:用二进制编码表示每条指令 机器语言:用二进制编码表示每条指令,是计算机能 ,是计算机能直接 直接 识别和执行的语言。

识别和执行 的语言。

• 汇编语言:是用助记符、符号和数字 汇编语言:是用助记符、符号和数字等来表示指令的程序 等来表示指令的程序 设计语言。

它与机器语言指令是一一对应的。

设计语言。

它与机器语言指令是一一对应的。

? 汇编语言编写的程序能否直接被计算机执行? • 高级语言:面向问题和计算过程的语言,可通用于各种不 同的计算机。

用户编程时不必了解所用计算机的指令系统。

Why study assembly language?• Many critical programs are written in assembly language • To better understand the functions and architecture of a computer system • To better understand the working of high level languages • To design efficient programs • A tool for writing system programs • Embedded systems development– Mixed languages programming3• PIC18F452 PIC18F452汇编语言指令格式 汇编语言指令格式 标记段: 标记段 :操作码 [目的 目的操作数 操作数][, ][,源 源操作数 操作数][ ][; ;注释 注释] ]MOVLW BTFSS BCF GOTO 0x7F WREG, 7 WREG, 0 Stop ;load test data ;clear bit 0Stop:• 其中操作码 其中操作码是必不可少的。

DSP(知识点+思考题)

DSP(知识点+思考题)

DSP复习要点第一章绪论1、数的定标:Qn表示。

例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示2、‟C54x小数的表示方法:采用2的补码小数;.word 32768 *707/10003、定点算术运算:乘法:解决冗余符号位的办法是在程序中设定状态寄存器STl中的FRCT位为1,让相乘的结果自动左移1位。

第二章CPU结构和存储器设置一、思考题:1、C54x DSP的总线结构有哪些特点?答:TMS320C54x的结构是围绕8组16bit总线建立的。

(1)、一组程序总线(PB):传送从程序存储器的指令代码和立即数。

(2)、三组数据总线(CB,DB和EB):连接各种元器件,(3)、四组地址总线(PAB,CAB,DAB和EAB)传送执行指令所需要的地址。

2、C54x DSP的CPU包括哪些单元?答:'C54X 芯片的CPU包括:(1)、40bit的算术逻辑单元(2)、累加器A和B(3)、桶形移位寄存器(4)、乘法器/加法器单元(5)、比较选择和存储单元(6)、指数编码器(7)、CPU状态和控制寄存器(8)、寻址单元。

1)、累加器A和B分为三部分:保护位、高位字、地位字。

保护位保存多余高位,防止溢出。

2)、桶形移位寄存器:将输入数据进行0~31bits的左移(正值)和0~15bits的右移(负值)3)、乘法器/加法器单元:能够在一个周期内完成一次17*17bit的乘法和一次40位的加法4)、比较选择和存储单元:用维比特算法设计的进行加法/比较/选择运算。

5)、CPU状态和控制寄存器:状态寄存器ST0和ST1,由置位指令SSBX和复位指令RSBX控制、处理器模式状态寄存器PMST2-3、简述’C54x DSP的ST1,ST0,PMST的主要功能。

答:’C54x DSP的ST1,ST0,PMST的主要功能是用于设置和查看CPU的工作状态。

•ST0主要反映处理器的寻址要求和计算机的运行状态。

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

[3-46]查找字符串
mov di,offset string mov al,20h mov cx,count cld repnz scasb ;搜索 jz found ;为0(ZF=1),发现空格 ... ;不含空格,则继续执行 found: ...
[3-47]查找字符串
MOV MOV MOV CLD SI,1000H DI,2000H CX,100 ;源地址为1000H ;目的地址为2000H ;字符串长100个字节 ;方向标志清0,使指针 按增量方向修改 ;将源地址开始的100个 字节传送到目的地址
[例3-37] 32位数移位
;将DX.AX中32位数值左移一位 shl ax,1 rcl dx,1 ;把AL最低位送BL最低位,保持AL不变 ror bl,1 ror al,1 rcl bl,1 rol al,1
[例3-38] BCD码合并
;AH.AL分别存放着非压缩BCD码的两位 ;将它们合并成为一个压缩BCD码存AL and ax,0f0fh ;保证高4位为0 mov cl,4 rol ah,cl ;也可以用shl ah,cl add al,ah ;也可以用or al,ah
ቤተ መጻሕፍቲ ባይዱ
[例 3-40] 字串传送
mov si,offset source mov di,offset destination mov cx,50 ;cx←传送次数 cld ;置DF=0,地址增加 again: movsw ;传送一个字 dec cx ;传送次数减1 jnz again ;判断传送次数cx是否为0 ;不为0,则到again位置执行指令 ;否则,结束
5.串扫描SCAS(scan string)
将AL/AX减去目的操作数,以便设置标志,进 而比较AL/AX与操作数之间的关系
SCASB ;字节串扫描:AL-ES:[DI] ;DI←DI±1 SCASW ;字串扫描:AX-ES:[DI] ;DI←DI±2
[例题3-44]查找字符串
mov di,offset string mov al,20h mov cx,count cld again: scasb ;搜索 jz found ;为0(ZF=1),发现空格 dec cx ;不是空格 jnz again ;搜索下一个字符 ... ;不含空格,则继续执行 found: ...
2.串存储STOS(store string)
把AL或AX数据传送至目的地址
STOSB ;字节串存储:ES:[DI]←AL ;DI←DI±1
STOSW ;字串存储:ES:[DI]←AX ;DI←DI±2
[例3-41]串存储
mov ax,0 mov di,0 mov cx,8000h ;cx←传送次数(32×1024) cld ;DF=0,地址增加 again: stosw ;传送一个字 dec cx ;传送次数减1 jnz again ;传送次数cx是否为0
1.串传送MOVS(move string)
把字节或字操作数从主存的源地址传送至目的 地址 • MOVSB • ;字节串传送:ES:[DI]←DS:[SI] • ;SI←SI±1,DI←DI±1
• •
• •
MOVSW ;字串传送:ES:[DI]←DS:[SI] ;SI←SI±2,DI←DI±2
offset是汇编操作符, 求出变量的偏移地址
重复比较的解释
指令repz cmpsb结束重复执行的情况 ① ZF=0,即出现不相等的字符 ② CX=0,即比较完所有字符: 这种情况下,如果ZF=0,说明有字符不等; 而ZF=1表示所有字符比较后都相等,也就 是两个字符串相同 所以,重复比较结束后,jnz unmat指令的条 件成立ZF=0,字符串不相等
串寻址方式
源操作数用寄存器SI寻址,默认在数据段DS中, 但允许段超越 目的操作数用寄存器DI寻址,默认在附加段ES中, 不允许段超越:ES:[DI] 每执行一次串操作指令,SI和DI将自动修改: ±1(对于字节串)或±2(对于字串) 执行指令CLD后,DF = 0,地址指针增1或2 执行指令STD后,DF = 1,地址指针减1或2
3.串读取LODS(load string)
把指定主存单元的数据传送给AL或AX LODSB ;字节串读取:AL←DS:[SI] ;SI←SI±1
LODSW ;字串读取:AX←DS:[SI] ;SI←SI±2
[例题3-42]串读取-1
si,offset block di,offset dplus bx,offset dminus ax,ds es,ax ;数据都在一个段中,所以设置es=ds mov cx,count ;cx←字节数 cld mov mov mov mov mov
WAIT
NOP (no operation)
不执行任何操作,但占用一个字节存储单元, 空耗一个指令执行周期 NOP常用于程序调试 • 在需要预留指令空间时用NOP填充 • 代码空间多余时也可以用NOP填充 • 还可以用NOP实现软件延时
封锁前缀指令
LOCK (lock bus) ;封锁总线 这是一个指令前缀,可放在任何指令前 这个前缀使得这条指令在执行过程中,8086 处理器的封锁输出引脚有效,LOCK=0,即把总 线封锁,使别的控制器不能控制总线;直到该 指令执行完后,总线封锁解除
[例题3-42]串读取-2
go_on: lodsb ;从block取出一个数据 test al,80h ;检测符号位,判断是正是负 jnz minus ;符号位为1,是负数,转向minus stosb ;符号位为0,是正数,存入dplus jmp again ;程序转移到again处继续执行 jnz go_on ;完成正负数据分离
REP MOVSB
3.3.5 处理器控制指令
1.标志设定指令 标志位操作指令直接对CF、DF、IF标志进行 复位或置位 对标志位进行设置的指令 • CLC STC CMC • CLD STD • CLI STI
进位标志操作指令
用于任意设置进位标志
CLC ;复位进位标志:CF←0 STC ;置位进位标志:CF←1
3.3.4串操作类指令
串操作指令是8086指令系统中比较独特的一类 指令,采用比较特殊的数据串寻址方式,常用 于操作主存连续区域的数据 主要熟悉: MOVS STOS LODS
CMPS SCAS REP 一般了解: REPZ/REPE REPNZ/REPNE
串数据类型
串操作指令的操作数是主存中连续存放的数据 串(String)——即在连续的主存区域中,字 节或字的序列 串操作指令的操作对象是以字(W)为单位的 字串,或是以字节(B)为单位的字节串
1.REP重复前缀指令
REP ;每执行一次串指令,CX减1 ;直到CX=0,重复执行结束 REP前缀可以理解为:当数据串没有结束 (CX≠0),则继续传送
重复串传送
mov mov mov cld rep si,offset source di,offset destination cx,100 ;cx←传送次数 movsb movsb ;传送一个字节 dec cx ;传送次数减1 jnz again ;判断传送次数cx是否为0 ;不为0(ZF=0),则转移again位置执行 ;否则,结束

• •
CMPSB ;字节串比较:DS:[SI]-ES:[DI] ;SI←SI±1,DI←DI±1
• • •
CMPSW ;字串比较:DS:[SI]-ES:[DI] ;SI←SI±2,DI←DI±2
[例题3-43]比较字符串
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 ;输出结果标记
交权指令ESC:CPU调用协处理器工作.
等待指令 WAIT ;进入等待状态 若测试到TEST=0,则CPU 处于暂停状态;若测 试到TEST=1,则CPU脱离暂停状态,继续往下执 行. 8086利用WAIT指令和测试引脚实现与8087同 步运行
3.REPNZ重复前缀指令
REPNZ ;每执行一次串指令,CX减1 ;并判断ZF是否为1, ;只要CX=0或ZF=1,重复执行结束
REPNZ/REPNE前缀可以理解为:当数据串没 有结束(CX≠0),并且串不相等(ZF=0), 则继续比较
[例题3-45]比较字符串
mov si,offset string1 mov di,offset string2 mov cx,count cld repz cmpsb ;重复比较两个字符 jnz unmat ;字符串不等,转移 mov al,0 ;字符串相等,设置00h jmp output ;转向output unmat: mov al,0ffh ;设置ffh output: mov result,al ;输出结果标记
[例题3-42]串读取-3
minus: xchg bx,di stosb ;把负数存入dminus xchg bx,di dec cx ;字节数减1 jnz go_on ;完成正负数据分离
again:
4.串比较CMPS(compare string)
将主存中的源操作数减去目的操作数,以便设 置标志位,进而比较两操作数之间的关系
CMC ;求反进位标志:CF←CF
方向标志操作指令
串操作指令中,需要使用
CLD STD ;复位方向标志:DF←0 ;置位方向标志:DF←1
中断标志操作指令
在编写中断服务程序时,需要控制可屏蔽中断 的允许和禁止
相关文档
最新文档