微机原理第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章
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页)
可将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章半导体存储器(精)
高速缓冲存储器(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指令前加有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
微机原理第5版(周荷琴)第五章.pptx
例 5.4 用1K×4的SRAM芯片2114构成4K×8的存储器。 先作位扩展, 2 片 2114并接成一组 1KB存储器;再对 4 组作字扩展,用24译码器对这4组进行片选。
3. 形成片选信号的三种方法 1)线选法
用某1位高位地址做片选,低位地址与芯片地址线相连
实现片内寻址。电路简单但空间浪费大,因部分地址 线未参与译码,会地址重叠和地址不连续。 例5.5 有2块2764 EPROM芯片,用线选法对它们进行寻 址。画出译码电路示意图,并列出地址范围。 2764 容 量 8KB=23×210=213 字 节 , 共 有 13 根 地 址 线 A12A0。可在地址总线A19A13中任选2根作线选译码 信号,当然地址范围会不同。 CE 让A13、A14接芯片1、2的片选 端,A12A0接芯片1、 2的地址线A12A0 ,就实现了线选法寻址。 这样, A13=0 选中 2764(1) , A14=0 选中 2764(2) 。它们 不能同时选中。A12A0从000H变到FFFH,就能顺序 访问被选中芯片中的8K个字节。
2)字扩展
芯片位数已符合,只要增加地址范围,即字扩展增加
字数或容量。 例5.3 用16K×8芯片字扩展为64K×8存储器。 用4个芯片,A13A0、D7 D0、WE 线均并联,设计1 个24译码器,为各芯片提供片选信号 CS3 CS0 。
3)字位扩展
存储器芯片的容量和位数都需要进行扩展。
§5.4 存储器与CPU的连接
5.4.1 设计接口应考虑的问题
5.4.2 存储器接口设计
5.4.2 存储器接口设计
1. 地址译码器
存储器由多个芯片构成,CPU进行读/写操作时,
首先应选中特定的芯片,称为片选,然后从该芯 片中选择所要访问的存储单元。片选和访存的信 息,来源于CPU执行存储器读/写指令时,送到地 址总线上的地址信息,其中的高位用来生成片选 信号,低位直接连到芯片的地址线上,去实现片 内寻址。 用高位地址信息实现片选的电路称为地址译码器, 有门电路译码器、 N中取一译码器和 PLD( Programmable Logic Device,可编程逻辑器件)译码 器等几种。如果用 FPGA 设计硬件系统,还可用 FPGA芯片的一部分来实现地址译码。 74LS138是常用的8中取1译码器。
微机原理实验四串操作指令
实验四串操作指令程序实验一、实验目的1. 熟悉五种串操作指令的功能,会编写常用的串操作应用程序。
2. 会使用DEBUG 命令查看串操作运行的结果。
二、实验环境1. 硬件:PC 微机2. 软件:Masm for Windows 汇编集成开发环境三、实验讲义串指连续存放在存储器中的一些数据字节、字或者双字。
串操作允许对程序连续存放的数据块进行操作。
这是唯一一种可以从存储器到存储器的指令。
源串一般存放在数据段,偏移地址由SI 指定;目标串必须在附加段,偏移地址由DI 指定。
在每次进行串操作后,SI 和DI 两个指针会自动修改。
修改的是增量方向还是减量方向由标志位DF 决定,DF=0 为增量操作,DF=1 为减量操作。
CX 中存放的是数据块的长度,可在CX 前加重复前缀标志,对串进行连续操作。
执行串指令之前,一般先进行如下操作:源串首地址(末地址)→ SI目的串首地址(末地址)→ DI串长度→ CX建立方向标志DF1. 重复前缀标志助记符判断条件说明REP CX 0 CX=CX-1,若CX 0 则重复REPE 或REPZ CX 0 且ZF=1 CX=CX-1,若CX 0 且ZF=1 则重复REPNE 或REPNZ CX=0 且ZF=0 EX=CX-1,若CX 0 且ZF=0 则重复2. 方向标志指令方向标志由标志位DF 决定,有CLD 和STD 两种指令。
CLD 将DF 置0,地址为增量操作。
STD 将DF 置1,地址为减量操作。
3. 串传送指令格式: [REP] MOVS DESTS, SRCS[REP] MOVSB/ MOVSW / MOVSD功能:将DS:SI 中的源串数据传送到ES:DI 规定的目的串单元中。
加重复前缀REP 可实现连续存放的数据块的传送。
例1:将源串中前三个字节的数据传送到目的串。
源串在数据段(DATAS)中,存放在SRC 单元中;目的串在附加数据段(EDATAS)中,存放在DEST 单元中。
微机——微机原理指令汇总情况
微机——微机原理指令汇总情况微机原理指令是计算机中执行的最基本的操作。
它们是一条条的机器代码,用于告诉计算机要执行的操作。
微型计算机通过使用特定的指令集,可以执行各种不同的任务。
本文将对微机原理指令进行汇总和分类,以便更好地了解微机原理。
1. 数据传输指令(Data Transfer Instructions):用于将数据从一个位置传送到另一个位置。
- MOV(Move):将一个寄存器或内存的内容复制到另一个位置。
- XCHG(Exchange):交换两个操作数的值。
- PUSH(Push):将数据压入栈中。
- POP(Pop):从栈中弹出数据。
2. 运算指令(Arithmetic Instructions):用于执行一些基本的算术和逻辑运算。
- ADD(Addition):将两个操作数相加。
- SUB(Subtraction):将第一个操作数减去第二个操作数。
- MUL(Multiplication):将两个操作数相乘。
- DIV(Division):将第一个操作数除以第二个操作数。
- INC(Increment):将操作数加一- DEC(Decrement):将操作数减一3. 逻辑指令(Logical Instructions):用于执行一些逻辑运算。
- AND(And):对两个操作数进行逻辑与操作。
-OR(Or):对两个操作数进行逻辑或操作。
- XOR(Exclusive Or):对两个操作数进行异或操作。
- NOT(Not):对操作数进行逻辑非操作。
- SHR(Shift Right):对操作数进行右移操作。
- SHL(Shift Left):对操作数进行左移操作。
4. 跳转指令(Jump Instructions):用于控制程序的跳转。
- JMP(Jump):无条件跳转到指定的地址。
- JZ(Jump if Zero):如果上一个比较指令结果为零,则跳转到指定地址。
- JNZ(Jump if Not Zero):如果上一个比较指令结果不为零,则跳转到指定地址。
微机原理指令大全
微机原理指令大全微机原理是计算机科学中的重要基础知识,而指令则是微机原理中的核心内容之一。
指令是计算机中的基本操作命令,它直接影响着计算机的运行和执行效率。
本文将为大家详细介绍微机原理中常见的指令,并提供一份完整的指令大全,希望能够帮助大家更好地理解和掌握微机原理中的指令知识。
一、数据传送指令。
数据传送指令是微机原理中最基本的指令之一,它用于将数据从一个地方传送到另一个地方。
常见的数据传送指令包括MOV、LDM、STM等。
这些指令可以实现寄存器之间、寄存器和内存之间、内存和输入输出设备之间的数据传送操作,是计算机程序中不可或缺的一部分。
二、算术运算指令。
算术运算指令用于进行各种数值计算操作,包括加法、减法、乘法、除法等。
常见的算术运算指令有ADD、SUB、MUL、DIV等。
这些指令可以对寄存器和内存中的数据进行各种算术运算,是计算机程序中常用的指令之一。
三、逻辑运算指令。
逻辑运算指令用于进行各种逻辑操作,包括与、或、非、异或等。
常见的逻辑运算指令有AND、OR、NOT、XOR等。
这些指令可以对寄存器和内存中的数据进行逻辑运算,是计算机程序中实现逻辑判断和控制流程的重要指令之一。
四、转移指令。
转移指令用于改变程序的执行顺序,包括无条件转移和条件转移两种。
常见的转移指令有JMP、JZ、JNZ、JC、JNC等。
这些指令可以实现程序的跳转和循环控制,是计算机程序中实现各种复杂逻辑的重要指令之一。
五、比较指令。
比较指令用于比较两个数据的大小关系,常见的比较指令有CMP、TEST等。
这些指令可以对寄存器和内存中的数据进行比较操作,并根据比较结果设置标志位,是实现条件转移和逻辑判断的重要指令之一。
六、输入输出指令。
输入输出指令用于实现计算机与外部设备的数据交换,包括输入数据和输出数据两种操作。
常见的输入输出指令有IN、OUT等。
这些指令可以实现计算机与外部设备之间的数据传输,是计算机程序中实现输入输出功能的重要指令之一。
微机原理全部指令用法
一.机械码,又称机器码.ultraedit打开,编辑exe文件时你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码.修改程序时必须通过修改机器码来修改exe文件.二.需要熟练掌握的全部汇编知识(只有这么多)不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了cmp a,b 比较a与bmov a,b 把b的值送给aret 返回主程序nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面(解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)call 调用子程序je 或jz 若相等则跳(机器码74 或0F84)jne或jnz 若不相等则跳(机器码75或0F85)jmp 无条件跳(机器码EB)jb 若小于则跳ja 若大于则跳jg 若大于则跳jge 若大于等于则跳jl 若小于则跳jle 若小于等于则跳pop 出栈push 压栈三.常见修改(机器码)74=>75 74=>90 74=>EB75=>74 75=>90 75=>EBjnz->nop75->90(相应的机器码修改)jnz -> jmp75 -> EB(相应的机器码修改)jnz -> jz75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改)四.两种不同情况的不同修改方法1.修改为jmpje(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息xxxxxxxxxxxx 出错信息,例如:注册码不对,sorry,未注册版不能…,”Function Not Avaible in Demo” 或”Command Not Avaible” 或”Can’t save in Shareware/Demo”等(我们希望把它跳过,不让它出现)。
2008微机原理及应用讲义第五章第13讲串操作类指令
1、串传送指令
格式2:MOVSW 操作:(ES:DI)←(DS:SI)字传送 每执行一次串传送操作,SI±2,DI±2。 DF=0时+2, DF=1时-2。
1、串传送指令
如果需要重复操作, 可以加重复前缀。
加重复前缀的串传送指令,格式如下:
[REP] MOVSB [REP] MOVSW 字符或数据的个数预先放在CX寄存器中; 每执行一次操作,CX自动减1,直到CX=0串操 作自动停止。
MOVSB …… MOVSB
;没传送完继续
1、串传送指令
用重复前缀REP,实现的数据传送程序如下。 LEA SI, STAR LEA DI, NEXT MOV CX, 100 CLD REP MOVSB
2、串比较指令
格式1:CMPSB 操作:(ES:DI)-(DS:SI)字节比较 每执行一次串比较操作,SI±1,DI±1。 DF=0时+1, DF=1时-1。 比较后影响标志ZF。
2、串比较指令
格式2:CMPSW 操作:(ES:DI)-(DS:SI)字比较 每执行一次串比较操作,SI±2,DI±2。 DF=0时+2, DF=1时-2。
2、串比较指令
可以加有条件的重复前缀。
格式如下:
[REPZ/ REPNZ] MOVSB [REPZ/ REPNZ] MOVSW
3、取字符串指令
格式:LODSB AL←(DS:SI) LODSW AX←(DS:SI) 功能: 将位于DS段SI所指的存储单元的内容取到AL 或AX中。
3、取字符串指令
用LODSB时,每次取一个字节,取完后,地 址自动加1或减1; 用LODSW时,每次取一个字,取完后,地址 自动加2或减2。
2、串比较指令
微机原理第五章《指令系统》课件知识点讲解要点归纳
概念:
• 指令:要求计算机执行某种操作的命令 • 一台计算机,其所有机器指令的集合构成机器的指令系统 • CISC-Complex Instruction Set Computer,复杂指令系统 计算机 • RISC-Reduced Instruction Set Computer,精简指令系统 计算机 • RISC计算机提出的依据 • RISC计算机的主要特点:
第五章 指令系统(14)
指令 I1 I2 I3 I4 I5 I6 I7 Pi 0.45 0.30 0.15 0.05 0.03 0.01 0.01 操作码 00 01 10 1100 1101 1110 1111 长度(位) 2 2 2 4 4 4 4
这种方案的操作码的平均长度为: L=(0.45+0.30+0.15)×2+(0.05+0.03+0.01+0.01)×4=2.2(位) 这种方案虽然使操作码的平均长度稍有增长,但给操作码译码带来方便,通常 称作“扩展操作码法” 。
OP D1 D2 D3 三地址指令
OP
OP
D1
D
D2
二地址指令
单地址指令
OP
说明:
零地址指令
•三地址指令包含三个地址,其基本操作是 : (D1) OP (D2)→ D3
•二地址指令包含两个地址,其基本操作是:(D1) OP (D2)→ D1或D2
•单地址指令中只包含一个地址,可有两种情况:
(1) 本指令为双操作数指令,但约定一个操作数固定存放在累加器(AC)中,其基本 操作是: (AC) OP (D)→ AC (2) 本指令为单操作数指令,例如将某个地址D中的内容加1或减1等。
a 0 0 0 0 0 0 0 0 1 1
微型计算机原理-第5章(2)微机原理与接口技术(第三版)(王忠民)
DS、
INT
ES
数2…0据H
PSP(256 字节)
附段加
CSS:SPSIP定义了代 堆段段段堆码栈栈段的用程用序户
户程序装入情况
第5章 汇编语言程序设计
DSEG SEGMENT STRING1 DB 1,2,3,4,5
DSEG ENDS ESEG SEGMENT
STRING2 DB 5 DUP(?) ESEG ENDS SSEG SEGMENT
CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备
上机过程
第5章 汇编语言程序设计
编辑程序 编辑
汇编程序 汇编
连接程序 连接
手写程序
EDIT .ASM文件
MASM .OBJ文件
LINK .EXE文件
有语法错误 无法正常连接 有算法错误
第5章 汇编语言程序设计
用户程序的装入
完成以下操作: 确定内存可用部分 以便存放要执行的 .exe 文
INC
BX
ADD AL,[BX]
MOV SUM,AL
RET
ENDP CODE END
MAIN
ENDS START
第5章 汇编语言程序设计 第二讲结束
每一种知识都需要努力, 都需要付出,感谢支持!
知识就是力量,感谢支持!
一一一一谢谢大家!!
STACK‘STACK’ DW 10 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME ES:ESEG,SS:SSEG
START: MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX
LEA SI, STRING1
微机原理 第五章 IO接口PPT课件
• I/O保护
⑴ 寄存器I/O指令(IN,OUT)
允许在累加器和I/O端口间交换数据 • 8位立即数直接寻址端口的I/O指令 • DX间接寻址端口的I/O指令
⑵ 串数据I/O指令
允许在存储器和I/O端口间交换数据
5.2.3 80X86系列处理器的I/O编址方式
5-1111121
• I/O地址 空间
●两个相邻的8位端口可构成一个16位端口, 一般应对准于偶数地址。
●4个相邻的8位端口可构成一个32位端口 (80386以上),一般应对准于能被4整除的地址。
实 际 的 80X86 系 统 中 只 使 用 了 1K 字 节 的 I/O空间,即只用A9~A0这十根地址线对I/O 寻址,并且对这1K字节的I/O地址空间也大都 按AT系统的技术标准作了分配。
2.中断式
• 接口简单,硬件电路不多,查询程序也不复 杂。
3.DMA式 4.等待式
(4)缺点:
在MPU使用效率与响应实时性间有矛盾, 软件开销大,MPU使用效率低。
这种I/O控制方式是优是劣,不能一概而论, 要看具体应用场合。
5.3 I/O同步控制方式
5-1111129
1.查询式
(1)特点:每次I/O操作都是由I/O设备向
• MPU访问I/O端口 必须采用专用I/O指 令。
5.2.2 隔离I/O方式
20 AB 20
MPU 8 DB
8
R/W
控制
MEMR
MEMW
控
制
8
逻
8
辑
IOR
IOW
存储器 (1MB)
I/O 端口 (256个)
5-1111115
2.优点:
微机原理(指令)
(3)段间直接(远)转移 n 格式: JMP FAR PTR OPR ( 标号) 或者直接给出目的地址 n 操作: IP ← OPR的段内偏移量 CS ← OPR所在段的段基值 n 举例:JMP FAR PTR LJMP, JMP 2000:1000H (4)段间间接(远)转移 n 格式: JMP DWORD PTR mem ;或者JMP FAR PTR mem n 操作: IP ← word ptr (EA) CS ← word ptr (EA+2) (16位) 转移地址在mem所指向的2个连续字单元中(4个连续字节单元中),和 LDS和LES不同的是现在修改的是CS:IP。 例: JMP DWORD PTR [BX+DI+6],JMP FAR PTR [2000H]
2010-10-22 Page 20
(2)段内间接转移: n 格式: JMP r16/m16 (16位) n 操作: IP ← (EA);转移地址的偏移量在寄存器或内存单元 中 n 指令举例 JMP SI; IP←SI 通过寄存器间接给出指令偏移地址。 JMP BX; IP←BX JMP WORD PTR [BX];通过存储器间接给出指令的偏移地 址,而存储器寻址方式为寄存器BX间接寻址。WORD PTR可 以忽略不写 JMP WORD PTR [BP+DI+20H]; JMP [1000H];注意和JMP 1000H的区别
指令举例:AX和BX为无符号数,比较大小,将较大的数 放入AX中。 CMP AX,BX JNB NEXT ;如AX≥BX,不处理 XCHG AX,BX ; AX<BX,AX与BX交换 NEXT:……
2010-10-22
Page 26