微机原理第5章5.2.4串操作类指令.

合集下载

微机原理 指令大全

微机原理 指令大全

MOV(MOVe)传送指令P86PUSH入栈指令P86POP出栈指令P87XCHG(eXCHanG)交换指令P88XLAT(TRANSLATE)换码指令P89LEA (Load Effective Address)有效地址送寄存器指令P89 LDS(Load DS with pointer)指针送寄存器和DS指令P90 LES(Load ES with pointer)指针送寄存器和ES指令P90 LAHF(Load AH with Flags)标志位送AH指令P91SAHF(Store AH into Flgs) AH送标志寄存器指令P91 PUSHF(PUSH the Flags)标志进栈指令P91POPF(POP the Flags)标志出栈指令P91ADD加法指令P92ADC带进位加法指令P92INC加1指令P92SUB(SUBtract)不带借位的减法指令P93SBB(SuVtrach with borrow)带借位的减法指令P93DEC(DECrement)减1指领P93NEG(NEGate)求补指令P93CMP(CoMPare)比较指令P93MUL(unsinged MULtiple)无符号数乘法指令P93IMUL(sIgned MUL tiple)有符号数乘法指令P93DIV(unsigned DIVide)无符号数除法指令P94IDIV(sIgned DIVide)有符号数除法指令P94CBW(Count Byte to Word)字节转换为字指令P94CWD(Count Word to Doble word)字转换为双字指令P94 DAA压缩的BCD码加法十进制调整指令P95DAS压缩的BCD码减法十进制调整指令P95AAA非压缩的BCD码加法十进制调整指令P95AAS非压缩的BCD码加法十进制调整指令P95 AAM,AAD AND逻辑与指令P96OR逻辑或指令P96XOR逻辑异或指令P96NOT逻辑非指令P96TEST测试指令P96SHL(SHift logical Letf)逻辑左移指令P97SHR(SHift logical Right)逻辑右移指令P97SALSARROL(Rotate Left )循环左移指令P98ROR(Rotate Right)循环右移指令P98RCL(Rotate Left through Carry)带进位循环左移P98 RCR(Rotate Right through Carry)带进位循环左移P98 MOVS(MOVe String)串传送指令P100STOS(STOre into String)存入串指令P102LODS(LOad from string)从串取指令P102REP(REPeat)重复操作前缀P99CLD(CLear Direction flag)清除方向标志指令107STD(SeT Direction flag)设置方向标志指令107CMPS(CoMPare String)串比较指令100SCAS(SCAn String)串扫描指令101REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀99REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀99IN(INput)输入指令88OUT(OUTput)输出指令88JMP(JuMP)无条件转移指令103JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ条件转移指令103LOOP循环指令105LOOPZ/LOOPE为零/相等时循环指令105LOOPNZ/LOOPNE不为零/不相等时循环指令105CALL子程序调用指令106RET(RETun)子程序返回指令106CLC(CLear Carry)进位位置0指令107CMC(CoMplement Carry)进位位求反指令107SRC(SeT Carry)进位位置1指令NOP(No OPeretion)无操作指令 107HLT(HaLT)停机指令107OFFSET返回偏移地址 141SEG返回段地址141 TYPE SIZE LENGTH 142EQU(=)等值语句128PURGE解除语句128DUP操作数字段用复制操作符127SEGMENT,ENDS段定义指令129ASSUME段地址分配指令130ORG起始偏移地址设置指令132$地址计数器的当前值PROC,ENDP过程定义语句131NAME,TITLE,END程序开始结束语句131,132MACRO,ENDM宏定义指令147STRUC,ENDS 133PUBLIC,EXTRN 136EVEN 138MOD 139IF, END IF 138EQ, NE,LT,GT,LE,GE 140THIS SHORT HIGH LOW 144INT 20H INT 21H 153Welcome 欢迎您的下载,资料仅供参考!。

微机原理 第5章5.2.4串操作类指令

微机原理 第5章5.2.4串操作类指令

第5章
2、REPZ重复前缀指令
REPZ
;每执行一次串指令,CX减1 每执行一次串指令,CX减 并判断ZF是否为0 ZF是否为 ;并判断ZF是否为0, 只要CX CX= ZF= 重复执行结束 ;只要CX=0或ZF=0,重复执行结束
【例5.42】比较S1、S2两个数据串是否相同,不同则 】 比较 、 两个数据串是否相同, 两个数据串是否相同 例5.42:比较字符串 : 跳到NOMATCH执行。 执行。 跳到 执行 S1 DB 0,1,1,0,0 S2 DB 0,1,1,1,0 …… CLD LEA SI,S1 ;源串偏移地址赋值给 源串偏移地址赋值给SI 源串偏移地址赋值给 LEA DI,ES:S2 ;目的串偏移地址赋值给 目的串偏移地址赋值给SI 目的串偏移地址赋值给 MOV CX,5 ;源串和目的串的数据个数 源串和目的串的数据个数 AGAIN: CMPSB ;源串与目的串相减,标志位 源串与目的串相减, 源串与目的串相减 JNE NOMATCH ;有任一不同,跳到NOMATCH 有任一不同,跳到 有任一不同 DEC CX ;数据串没比较完,继续比较 数据串没比较完, JNZ AGAIN 数据串没比较完 NOMATCH:
第5章
四、串比较CMPS
将主存中的源操作数减去目的操作数, 将主存中的源操作数减去目的操作数,以便设 置标志(影响AF,ZF,PF,SF,OF,CF) , 进而比 置标志 ( 影响 ) 较两操作数之间的关系 CMPSB ;字节串比较:DS:[SI]-ES:[DI] 字节串比较:DS:[SI]- SI←SI± DI←DI± ;SI←SI±1,DI←DI±1 CMPSW ;字串比较:DS:[SI]-ES:[DI] 字串比较:DS:[SI]- SI←SI± DI←DI± ;SI←SI±2,DI←DI±2

微机原理指令表和解释

微机原理指令表和解释
取串指令
LODSB;(字节传送)AL DS:[SI] SI [SI+-1]
LODSW;(字传送)AL DS:[SI] SI [SI+-2]
存串指令
STOSB;(字节传送)ES:[DI] AL DI [DI+-1]
STOSW;(字传送)ES:[DI] AX DI [DI+-2]
串比较指令
CMPSB;(字节传送)DS:[SI]- ES:[DI] SI [SI+-1] DI [DI+-1]
空操作指令nop做空操作用于延时暂停指令hlt程序暂停执行等待指令waitcpu引脚为高电平时执行封锁指令lock总线封锁cpu独占总线指令交权指令esc
1.传送类指令
MOV DEST,SRC;DEST(除CS)SRC
2.交换指令
XCHG DEST,SRC;DEST(寄存器)SRC
3.堆栈操作指令
PUCH SRC;SP SP-2将16位源操作数压入堆栈
AAA;加法运算十进制调整
AAS;减法运算十进制调整
10.逻辑指令
AND DEST,SRC;DEST DEST&&SRC
OR DEST,SRC;DEST DEST||SRC
NOT DEST;NOT!NOT
XOR DEST,SRC;DESTDEST异或SRC
测试指令
TEST DEST,SRC;将DEST&&SRC结果不送回DEST
REPNZ;每执行依次串指令CX(CX)-1 CX=0或ZF=1重复执行结束
14.无条件转移类指令
JMP DEST;无条件转移到DEST所指定的地址
15.循环指令
LOOP DEST;CXCX)-1直至CX=0结束循环

微机原理指令汇总

微机原理指令汇总

我现将指令系统中各种助记符得英文全名写出来,各种助记符得记忆就会变得很简单o(∩_∩)o、、、在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有得I/O指令都使用这一寄存器与外界设备传送数据、BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)与串处理指令中用作隐含得计数器、DH&DL=DX(data):数据寄存器,常用于数据传递。

她们得特点就是,这4个16位得寄存器可以分为高8位: AH, BH, CH, DH、以及低八位:AL,BL,CL,DL。

这2组8位寄存器可以分别寻址,并单独使用。

另一组就是指针寄存器与变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前得堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS得一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目得变址寄存器,可用来存放相对于ES 段之目得变址指针。

指令指针IP(Instruction Pointer)标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)段寄存器(Segment Register)为了运用所有得内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。

串操作类指令(ppt 41页)

串操作类指令(ppt 41页)

可将CLD改为STD吗?如何改用STOSB? 可不用给DI赋值吗?
第2章
串读取LODS(load string)
把指定主存单元的数据传送给AL或AX
LODSB LODSW
演示 ;字节串读取:AL←DS:[SI] ;SI←SI±1
;字串读取:AX←DS:[SI] ;SI←SI±2
例2.54:串读取-1
REP 前 缀 可 以 理 解 为 : 当 数 据 串 没有结束(CX≠0),则继续传送
例2.52和例2.53中,程序段的最后 3条指令,可以分别替换为:
REP MOVSB 和 REP STOSW
第2章
REPZ重复前缀指令
REPZ
;每执行一次串指令,CX减1 ;并判断ZF是否为0, ;只要CX=0或ZF=0,重复执行结束
串操作指令的操作对象是以字 (W)为单位的字串,或是以字节 (B)为单位的字节串
第2章
串寻址方式
源操作数用寄存器SI寻址,默认在数据段 DS中,但允许段超越:DS:[SI]
目的操作数用寄存器DI寻址,默认在附加段 ES中,不允许段超越:ES:[DI]
每执行一次串操作指令,SI和DI将自动修改:
事实上,NOP和XCHG AX,AX的指令 代码一样,都是 90H
第2章
段超越前缀指令
在允许段超越的存储器操作数之 前,使用段超越前缀指令,将采 用指定的段寄存器寻址操作数
CS: ;使用代码段的数据
SS: ;使用堆栈段的数据
DS: ;使用数据段的数据
ES: ;使用附加段的数据
第2章
封锁前缀指令
±1(对于字节串)或±2(对于字串)
执行指令CLD指令后,DF = 0,地址指针 增1或2

微机原理第5章半导体存储器(精)

微机原理第5章半导体存储器(精)
2
高速缓冲存储器(Cache)。这个存储器 所用芯片都是高速的,其存取速度可与微处 理器相匹配,容量由几十K~几百K字节,通常 用来存储当前使用最多的程序或数据。
内存储器,速度要求较快(低于Cache),有一 定容量(受地址总线位数限制),一般都在几十 兆字节以上。
3
外存,速度较慢,但要求容量大,如软盘, 硬盘,光盘等。其容量可达几百兆至几十个 GB,又称“海量存储器”,通常用来作后备存 储器,存储各种程序和数据,可长期保存,易于 修改,要配置专用设备。
M / IO

1
前1K
A11

1
后1K
23
前 1K A =0 11 0000000000000000 ~ 0000001111111111B 即 0000~03FFH
后 1K A =1 11 0000100000000000 ~0000101111111111B 即 0800~0BFFH
可见,地址不连续!
选用存储器时,存取速度最好选与CPU 时序相匹配的芯片。另外在满足存储器总 容量前提下,尽可能选用集成度高,存储容量 大的芯片。
14
5.2 读写存储器RAM
5.2.1 静态RAM(SRAM) SRAM的基本存储电路由6个MOS管
组成,为双稳态触发器,其内部结构请自 己看书。
⒈ 2114存储芯片,为1K*4位
27
图中数据总线驱动器采用74LS245,其逻
辑框图与功能表三态如下:

A

•B
使能 方向控制
G
DIR
操作


&


0
0
BA
0
1
AB

专升本微机原理_清华版_第五章(二)

专升本微机原理_清华版_第五章(二)

移位指令的特点: 指令码 目标,计数值 ; 目标只能是寄存器、存储器,计数值只能是1或CL中 的值; 影响标志位的情况: 移位指令:除AF=任意值外,其余的根据结果而定 循环移位指令:只影响OF和CF(与逻辑运算指令刚好 相反)
P128 将AL中的值乘以10 的例子: SAL AL,1 ; AL=AL*2 MOV BL,AL ;将2X存于BL中 MOV CL,2 ;移位次数存入CL SAL AL,CL ;在乘以2的基础上再移两位相 当于乘以8 ADD AL,BL ;加上2X则=乘以10 例如,原AL=00000011B (3) 移一位得 00000110B (6), 00000110B 再移两位得 00011000B (24) 00011000B + 00000110B = 00011110B (30) 结果 3*10=30
OR 目标,源 (常用于将二进制数的某些位置1)
OR AL,30H; OR AX,00F0H OR BYTE PTR[BP],0FH OR BL, 0FH xxxxxxxx (BL)
OR
00001111 0F xxxx1111 结果(BL)
XOR 目标,源 (用于将二进制数的某些位求反,将要求反的某些 位与1异或。或对于某寄存器清0)
串扫描(影响标志位)
执行的操作: ①如(CX)=0或ZF=1(某次比较的结果两个操作数相等) 则退出REP,否则往下执行。 ② CX CX-1 例: ③ 执行其后SCAS串指令 MOV DI, OFFSET String ④ 重复①-③
MOV CX, xx MOV AL, ‗h‘ REPNZ SCASB JNZ Not_Found Found:
3.串比较(影响标志位) CMPSB CMPSW 比较地址为DS:SI、ES:DI的两 个字节/字

串操作类指令

串操作类指令
在SCAS指令前加有REPE/REPZ前缀,则表示:当串未结尾(CX≠0) 且串元素=关键值(ZF=1)时继续搜索。 --用来搜索与给定关键值不同的内容。
在SCAS指令前加有REPNE/REPNZ前缀,则表示:当串未结尾 (CX≠0)且串元素≠关键值(ZF=0)时继续搜索,直到CX=0或ZF= 1才执行下一条指令。 --可以用来在一个串中查出某一指定元素。
指令格式:SCAS OPRD SCASB ;搜索字节串 SCASW ;搜索字串 SCASD ;搜索双字串 SCASQ ;搜索4字串
功能:将累加器(AL或AX或EAX或RAX )中的内容与ES:DI(EDI 、 RDI )指定的目标串元素(字节或字或双字或4字)进行比较(减法操 作),用标志位反映比较的结果,而不改变累加器和目标串的内容,达 到字符串搜索的目的,同时自动修改指针DI。
若CMPS指令前加上前缀REPE/REPZ,则表示:当串未结尾(CX≠0) 且串相等(ZF=1)时继续比较;
如果CMPS用REPNE/REPNZ作前缀,则表示:当串未结尾 (CX≠0)且串不相等(ZF=0)时继续比较。
2009年6月2日星期二
7
例:比较两个字符串是否有相同的元素,它们的首地址和目标地址分别 为SRC和DST,字符串的长度为N个字节。
GO_ON:
MOVSD
DEC
CX
JNZ
GO_ON
若采用重复前缀,则上述程序简化为:
LEA SI,SOURCE
LEA DI,DEST
MOV ECX,50
;设置循环操作次数
CLD
;设置方向标志DF=0
REP MOVSD
2009年6月2日星期二
6
(2)串比较指令 CMPS/CMPSB/CMPSW/CMPSD/CMPSQ
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档