nullnull 第一章8086/8088系统* 工作模式
* 引脚信号null第一章8086/8088系统最小模式和最大模式的概念
为了尽可能适应各种各样的使用场合,在
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
8086/8088CPU芯片时,使它们可以在两种模式下工作,即最小模式和最大模式。null第一章8086/8088系统 最小模式
在系统中只有8086或者8088一个处理微器。系统中的所有的总线控制信号都直接由8086或8088产生。因此,系统中的总线控制电路被减到最少。
null第一章8086/8088系统 最大模式是相对最小模式而言的
最大模式用于中等规模的或大型的8086/8088系统中。在最大模式系统中,总是包含有两个或多个处理微器,其中一个主处理器就是8086或者8088,其他的处理器称为协处理器,它们是协助主处理器工作的。null第一章8086/8088系统 8086/8088到底工作在最大模式还是最小模式,这完全有硬件决定。
null第一章8086/8088系统8086/8088的引腿信号特点
* 8086/8088的数据线和地址是复用的
* 除了第28腿和第34腿以外,8086和
8088的控制线引腿定义是一样的。
null第一章8086/8088系统 第21腿(RESET)是输入复位信号的。在8086/8088系统中,CPU被启动后,处理器的标志寄存器,指令指针寄存器IP,段寄存器DS,SS,ES和指令队都被清除,但是代码段寄存器CS被设置为FFFFH。null第一章8086/8088系统 因为IP=0000,CS=FFFFH。所以,8086/8088将从地址FFFF0H开始执行指令。通常,在安排内存区域时,将高地址区作为只读存储区,且在FFFF0H单元开始的几个单元中放一条无条件转移指令,转到一个特定的程序中。这个程序往往实现系统初始化,引导监控程序或者引导操作系统等功能,这样的程序叫引导和装配程序。null第一章8086/8088系统 第22引腿用于从内存或I/O接口往CPU输入“准备好”(READY)信号
第23腿(TEST)是在多处理器系统中使用的。
null第一章8086/8088系统 A19/S6~A16/S3:该高4位地址线和状态线复用。在总线周期的前一部分时间,A19/S6~A16/S3腿用来输出高4位地址,在总线周期的其余部分时间,则用来输出状态信息。
null第二章 指令系统直接寻址:所需的操作数通过指令直接提供的偏移地址来得到。
MOV AX,[2000H]
偏移地址:2000H
段地址:(隐含DS)
(DS)=3000H
2000H
+ 30000H
物理地址:32000H
结果:(AH)=3050H OP AX 50 00 3032000H数
据
段 代码
段 null 寄存器间接寻址
操作数在存储器中的地址在(SI,DI,BP, BX)中。
(1)若以SI,DI,BX间接寻址,操作数在现行数据段中 例:MOV AX,[SI ] 1000H 20000H SI + DS 物理地址:21000H 21 43 21000HAX 21 43 F—F 0—0 null第二章 指令系统(2)若以寄存器BP间接寻址,则操作数在堆栈段中。 例:MOV AX,[BP] 3000H 20000H BP + SS 物理地址:23000H 23000HAX 21 4321 43 null第二章 指令系统(3)若指令中规定是段超越的,也可以寻访其他段。
MOV AX,ES:[BX] null第二章 指令系统直接变址寻址 寄存器相对寻址
由指定的寄存器内容,加上指令中给定的8位或16位偏移量(当然有一个段寄存器作基本地址)作为操作数地址。 例 null第二章 指令系统例:MOV AX,count[SI] 例:MOV AX,[BP] 2000H 30000H SI Count 35000H count (AX)=4525H +DS 45 2545 25 3000H AX 0030OP null第二章 指令系统变址地址也可以使段跨越前缀。
MOV DL,ES:STRING[SI]
正常情况下,SI,DI,BX作变址,与DS联用。
若用BP变址,与DS联用。 null第二章 指令系统 基址变址寻址
操作数的偏移地址是一个基址寄存器(BX,BP)和一个变址寄存器的内容之和。(SI,DI) 基址寄存器=BX;段寄存器是DS
隐含
基址寄存器=BP;段寄存器是SS 例 null第二章 指令系统 该寻址方式同样可以段超越使用
MOV AX,ES:[BX][SI]0158H 10A5H BX + DS 221FDH DI 21000H AX 214521 45 MOV AX,[BX][DI]
DS =2100H;BX =0158H; DI=10A5H null第二章 指令系统 操作数偏移地址由一个基址寄存器、一个变址寄存器的内容和8位或16位位移量之和构成。 例:MOV AX,MASK[BX][SI] 1000H 2000H SI BX 33250H 33 44 3344 AX 30000H (MASK) DS 0250H 该地址也可以段超越。 null第二章 指令系统 寻找一个操作数,只能在某一个段的64KB范围中寻找。已什么寄存器间址、变址等,则操作数就在什么段域中,8086/8088有约定,只要不在指令中超越这个约定,就按平常状态来寻找操作数。 null第二章 指令系统null第二章 指令系统(1)操作码(OP)的机器语言
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示(3)指令的执行时间 (2)寻址方式的机器语言表示 null第二章 指令系统 8086/8088指令是多字节指令,一条指令可由1~7个字节构成,操作码通常是第一字节表示。
OP d w
0 7 0 字节操作 0 源操作数
W= d= (双操作数指令)
1 字操作 1 目的操作数
说明:Ret的用途。 null第二章 指令系统 若采用立即寻址:操作码:
OP s w
0 7 sw = 01 指令有16位立即数,而且作字操作
11 指令有8位立即数 00 字节操作
null第二章 指令系统机器指令的第二个字节用于表明寻址方式
Mod Reg R/m
2 65 32 0 Reg表示寄存器方式,双操作数指令规定必须有一个操作数在寄存器中,该寄存器由reg决定。Mod与r/m结合在一起确定另一操作数的寻址方式。 null第二章 指令系统若无段超越,则使用隐含段寄存器,若指定段前缀,则在机器指令之前的一个字节来表示。
001 SEG 110
7 0 标志 例 null第二章 指令系统 ADD CL,BH 000 000 1 0 02H
d: reg为目的操作数 11 001 111 CFH
mod ret r/w 与w=0
寄存器寻址 CL BH CF02高 低 OPW:字节null第二章 指令系统 ADD DISP [BX][DI],DX
000000 0 1 w:字运算
OP d:reg为源操作数 10 010 001 01000101 00100011
mod ret r/m DISP
相对基址变址寻址 DX
null第二章 指令系统 指令执行时间
f=5MHz T= 1/5MHz=0.2µs
ADD AX,BX 寄存器——寄存器方式
T=3*0.2=0.6(µs)
ADD AX, DISP[BX][DI]
存储器——寄存器方式
T=(9+EA)*0.2
=(9+12)*0.2=4.2(µs) null第二章 指令系统 指令系统可以分为6组数据传送指令 逻辑运算控制转移处理机控制串操作算术指令null第二章 指令系统 1、通用数据传送指令:
MOV; PUSH; POP; XCHG 3、地址传送指令:
LEA ; LDS; LES 4、寄存器传送指令:
LAHF; SAHF; PUSHF ; POPF
(标志入AH) (AH入标志) (标志入栈) (标志出栈 ) 2、累加器专用传递指令:
IN, OUT, XLAT
这组指令只限于累加器AX,AL。 null第二章 指令系统 MOV传送指令:
MOV OPRD1,OPRD2
目的 源
CPU内部寄存器之间数据传送(除CS,IP外)
MOV AL,BL
MOV AX,BX
MOV DS,BX null第二章 指令系统立即数传送至CPU内部的通用寄存器(段寄存器除外)
AX,BX,CX,DX,BP,SP,SI,DI
MOV CL,4
MOV AX,03FFH
MOV SI,057BH null第二章 指令系统CPU内部寄存器(除CS,IP)
与存储器(所有寻址方式)之间
的数据传送
MOV AX,[SI]
MOV AL,VFFER
MOV AX,PP[BX][SI] null第二章 指令系统MOV指令不能实现存储单元之
间的数据传递,但可通过CPU内
部寄存器为桥梁来实现
MOV AL,ARER1
MOV ARER2,AL null第二章 指令系统二个段寄存器之间不允许直接传递信息 null第二章 指令系统 PUSH 进栈指令
堆栈是以“先进后出”方式工作的一个存储区,它在堆栈段中。其段地址在SS中。只有一个出口,偏移地址在SP之中,SP在任何时候都指向栈顶。 null第二章 指令系统 PUSH AX
SP SP - 2
(SP+1) AH
(SP) AL 堆栈的存取以字为单位,
可以使用除立即数以外的
其他寻址方式来保存程序区
或寄存器的内容。 低 高 高 低 AH AL 后 前 SP SPnull第二章 指令系统 POP 出栈指令
将压入堆栈的数据弹出。 例:POP AX
AL (SP)
AH (SP+1)
SP SP+2 AL 07 AH 21 (AX)=2107 2107后 前 SP 两条指令均不影响标位。这两条指令主要用于数据保护。 POP SP null第二章 指令系统 XCHG:交换指令 XCHG OPR1,OPR2
把一个字节或字的源操作数与目的操作数相
交换,交换可在通用寄存器之间,通用寄存
器与存储器之间。但段寄存器除外。 XCHG AL,CL
XCHG BX,DATA[SI]
XCHG BX,[BP+SI] null第二章 指令系统IN 输入指令: CPU I/O DB CB AB 输入指令允许把
一个字节或一个
字由输入端口传
送至AL或AX。由
于8086可供64K
的I/O端口空间,
所以可有65536个I/O端口,前256个端口(0~FFH)可以在指令中指定;端口号超过256个,则将端口地址放在OX,再用输入指
令输入数据。 例 null第二章 指令系统 IN AX,28H
IN AL,29H
端口号大于256:
MOV DX,3FCH
IN Ax,DX
输入数据是字还是字节,取决于外设DB宽度。 null第二章 指令系统 OUT: 输出指令 输出指令允许把AL或AX中的一个字节或一个字内容传送至输出端口
OUT 14H,AL
端口号大于256:
MOV DX,0714H
OUT DX,AX null第二章 指令系统 XLAT:换码指令 用于将一种代码转换为另一种代码。用指令之前,先将表的首地址放入BX中,在AL中置好偏移量(即所需换码字节在表中的相对位置),然后XLAT指令将(BX)内容加上AL中的内容形成的偏移地址的单元内容取到AL中。
格式:XLAT 或 XLAT
执行操作:AL (BX+AL) 例 null第二章 指令系统
MOV BX,OFFSET TAB
MOV AL,1
XLAT ‘B‘ …… ‘C‘ ‘A‘ BXTAB’A‘ALBX+ALnull第二章 指令系统 LEA: 有效地址送寄存器 格式: LEA OPRD1,OPRD2
将源操作数OPRD2的偏移地址送到目的操作数OPRD1。
源操作数必须是存储器,目的操作数是一个16为通用寄存器。 例 null第二章 指令系统 LEA BX,BUFR
将变量BUFR的偏移地址给BX
BX 23E0BUFRnull第二章 指令系统
LEA BX,[BX+SI] 若 BX = 0400H,
SI = 003CH
偏移地址
=0400+003C
=043CH BX 043Cnull第二章 指令系统 LDS: 地址指针送寄存器和DS指令 格式:LFD OPRD1,OPRD2
指令将源操作数OPRD2所指定存储区的4个相继字节送到指令指定的寄存器及DS寄存器中。该指令常指定SI。 例 null第二章 指令系统 LDS SI,[BX]
执行前:BX=10H; DS=C000H;
(C0010H)=0180H (C0012H)=2000H
执行前后: (SI)=0180,(DS)=2000H c0011H c0010H 80 00 20 01 c0012H c0013H S ID IBXDS+C0010Hnull第二章 指令系统 LES : 地址指令送寄存器和ES指令
格式 LES OPRD1,OPRD2
将源操作数OPRD2指定存储器4个相继字节送到指令指定的寄存器及ES中。该指令常指定寄存器DI。 例 null第二章 指令系统 LES DI,[BX]
执行前: DS=B000H,BX=080AH,
(0B080A)=080AH (0B080CH)=4000H
执行后:DI =080AH,ES= 4000H 0B080AH DIOA 00 40 ES08 0B080BH 0B080CH 0B080DH 上述三种寻址包括所有寻方式。 null第二章 指令系统 LAHF : PSW送AH指令
格式:LAHF
执行:AH PSW低字节
(进位)(奇偶)(半进位)(零)(符号)
CF PF AF IF SF null第二章 指令系统 SAHF:AH送PSW
执行:PSW低字节 AH null第二章 指令系统 PUSHF:标志进栈
格式:PUSHF
执行:SP SP-2
PSW (SP+1,SP) 低 高 PSWH SP PSWL null第二章 指令系统 POPF:标志出栈 执行:PSW (SP+1,SP)
SP SP+2 低 高 PSWH PSWL SPnull第二章 指令系统2、减法指令:SUB SBB DEC
NEG CMP 1、加法指令:ADD ADC INC 4.除法指令: DIV IDIV
CBW CWD 3、乘法指令: MUL IMUL 5、十进制调整指令null第二章 指令系统 格式:ADD OPRD1,OPRD2
OPRD1 OPRD1+OPRD2
目的操作数OPRD1可以是AX,任一通用寄存器,存储器。源操作数OPRD2可以是AX任一通用寄存器,存储器,立即数。
ADD AL,30H
ADD AX,SI
ADD BETA[SI],AX
ADD DI,CX
这些指令将对标志产生不同的影响。 null第二章 指令系统 ADC带进位加法
格式:ADC OPRD1,OPRD2
执行:OPRD1 OPRD2+OPRD1+CF
该指令多用多字节运算 null第二章 指令系统低 高 56 THORD 87 21 43 54 86 10 32 AA ID 75 32 SECOND FIRST 两个四字节数加,分别放在FLRST和SECOND起始之单元,存放时低字节在地址处。
MOV AX,FIRST; (AX)=8756H
ADD AX,DECOND; (AX)=8756+8654
MOV THIRD,AX; =1DAAH CF=1
MOV AX,FIRST+2 (AX)=4321H
ADC AX,SECOND+2
(AX)=4321+3210+CF
MOV THIRD+2 =7532H null第二章 指令系统 INC:加1 指令
格式:INC OPRD
该指令的操作数OPRD可以是通过寄存器,也可以是存储器单元。
执行:OPRD OPRD+1
INC AX; AX=AX+1null第二章 指令系统
注意
执行加法指令时,CF位是根据最高有效位是否有进位而设置。有进位CF=1,无进位CF=0。
OF根据符号及其变化情况而设置。若两个操作数符号相同,结果的符号与之相反,则溢出OF=1null第二章 指令系统 SUB:减法指令
格式:SUB OPRD1,OPRD2
操作:OPRD1=OPRD1-OPRD2
目的操作数OPRD1可以是AX,通用寄存器,存储器单元,
源操作数OPRD2可以是立即数,通用寄存器,存储器单元。 null第二章 指令系统 例
SUB CX,BX; CX=CX-BX
SUB [BX],CL; [BX]=[BX]-CLnull第二章 指令系统 SBB OPRD1,OPRD2
格式:SBB OPRD1,OPRD2
操作:OPRD1=OPRD1-OPRD2-CF
用于多字节数相减。 null第二章 指令系统 DEC:减指令
格式:DEC OPRD
执行:OPRD OPRD-1
DEC CX; CX=CX-1 null第二章 指令系统 NEG:取补指令
格式:NEG OPRD
对操作数OPRD取补
执行:OPRD OPRD+1
例:NEG ALnull第二章 指令系统 CMP:比较指令
格式:CMP PRD1,OPRD2
完成两个操作数相减
(OPRD1-OPRD2)
结果反映在标志位上并不回送结果。目的操作数可以是寄存器,或内存;源操作数可以是立即数,寄存器或内存。该指令主要用于比较两者之间的关系。 null第二章 指令系统 CMP AX,BX
若AX与BX同符号:(AX-BX)
则AX-BX不会溢出,用SF判其符号就可判断两数大小。即
SF=0,AX>BX,SF=1,AX
BX
负-正:负 SF=1 , AXBX
AXBX
若无溢出(OF=0) SF=1;AXBX null第二章 指令系统相异符号相减有两种可能
A- B 无溢出:SF=1:AB
正-负
有溢出:SF=1:A>B null第二章 指令系统 MUL:无符号数乘法
格式:MUL OPRD
执行:字节操作 AX AL*(OPRD)
字操作 DX,AX AX*(OPRD)
OPRD可以是寄存器或内存单元
例
MOV AL,FIRST FIRST
MUL SECOND SELIND
MOV THIRD,AX THIRD null第二章 指令系统 IMUL:带符号数乘法
同MUL上,但是带符号数
MUL:255*255=65025
(1111,1111b)*(1111,1111b)
IMUL:(-1)*(-1)=1
例:AL= 0B4H BL =11H
AL = 0B4H =-76D
IMUL BL -1292D
BL = 11H = 17D
AL = 180D
MUL BL 3060D
BL = 17D
null第二章 指令系统 DIV:无符号数除法
格式:DIV OPRD
执行:字节操作:
AL [ AX /(OPRD)] 的商
OPRD为8位
AH [ AX /(OPRD)]的余数
字操作:
AX (DX,AX)/(OPRD)的商
DX (DX,AX)/(OPRD)的余数
商、余数均为无符号数;OPRD为寄存器
或内存单元。 null第二章 指令系统
IDIV:带符号除法
同上,商、余数等为有符号数。 null第二章 指令系统 CBW
扩展存储器AL中的字节符号,
把它送至AH中
AL < 80H,则扩展后AH 0
AL > 80H,则扩展后AH 0FFH
目的:在两个字节操作数相除时,产生一个字的被除数。 null第二章 指令系统 CWD:将AX的符号扩展到DX中
AX < 8000H,则 DX 0
AX > =8000H,则 DX FFFFH
目的:在两个字操作数相除时,产生一个字节的被除数。 null第二章 指令系统例:有一内存BUFFER,前两个字节是16位带符号被除数,三、四字节是16位带符号除数,再下两个字节放商,再下两个字节放余数。BUFFER 被除数 除数 余数 商 null第二章 指令系统 LEA BX,BUIFFER; BUFFER的偏址 BX
MOV AX,[BX]; 被除数 AX
CWD ; 扩展为(DX,AX)
IDIV 2[BX]; (AX) 商
(DX) 余数
MOV 4[BX], AX
MOV 6[BX],DX null第二章 指令系统 BCD码的概念
压缩的BCD码:四位一个数,连续排列。
非压缩的BCD码:ASCII码的数字码,低四位为BCD码,高四位为0011无意义。
(一)压缩的BCD码十进制调整
DAA, DAS
(二)非压缩的BCD码调整
AAA, AAS, AAM, AAD null第二章 指令系统 DAA 加法十进制调整指令
作用:紧跟加法指令之后,校正作用
若(AL&0FH)>9,或AF=1,则AL AL+6,
AF 1;
若(AL&F0H)>9,或CF=1,则AL L+6,AF 1。
①原来16进制是满16进位,
②十进制为满10进位,
③所以到进行用16进制进行
10进制调整时为+6 * * *
9 + * * *
null第二章 指令系统例:ADD AL,BL 97
+96
193 1001 0111
+1001 0110
0010 1101 D
110 110 6
1001 0011
1CF=1 null第二章 指令系统 DAS 减法的十进制
执行:AL AL中的差调整到压缩的BCD格式
(低四位) 若(AL&OFH)>9,
或AF=1,则AL AL-6
(高四位) 若(AL&F0H)>90H,
或CF=1,则AL AL-60H null第二章 指令系统 AAA:加法的ASCII调整
(AL) AL调整
(AH) (AH)+调整进位值
执行
1)若AL低四位在0~9之间,AF=0 执行(3)2)若AL低四位在0~FH之间,AF=1,
则AL 寄存器加6,AH寄存器加1,AF加1。
3)清除AL高四位
4)AF位的结果送CF位。 null第二章 指令系统
AAS:减法的ASCII调整
AL 把AL中的差调整到非压缩的BCD格式
AH AH - 调整产生的借位值 null第二章 指令系统 AAM:乘法的ASCII调整
校正作用:AH AL被OA除的商
AL AL被OA除的除数
MUL AL,BL
AAM
(AL)=07H,(BL)=09H
执行MUL:(AL)=3FH=63
执行AAM:(AH)=06H,(AL)=03H
前面都是对运算结果进行十进制调整。 6 AH
10 63
60
3 ALnull第二章 指令系统 AAD:除法的ASCII调整:
AX存放二位非压缩BCD数,即AH为十位数,AL为个位数。
AL 10*(AH)+(AL)
AH 0
作用:
相除之前将AX中的被除数用AAD调整为二进制数。并存放于AL中。
null第二章 指令系统逻辑运算指令
AND,OR,NOT,XOR,TEST
这几条指令:①NOT不允许使用立即数,其余
指令的OPRD2为立即数
②至少有一个操作数存放在Reg中,
另一个则可为任意寻址方式。
移位指令
SHL,SAL,SHR,SAR,ROL,ROR,RCL,RCR null第二章 指令系统 AND:与
AND OPTD1,OPRD2
执行:OPRD1 OPRD1^ OPRD2 null第二章 指令系统 OR:或
OR OPRD1,OPRD2
执行:OPRD1 OPRD1 v OPRD2 null第二章 指令系统 NOT:非
NOT OPRD
执行:OPRD OPRD null第二章 指令系统 XOR:异或指令
XOR OPRD1,OPRD2
执行:OPRD1 OPRD1 OPRD2 null第二章 指令系统 TEST:测试指令
TEST OPRD1,OPRD2
执行:OPRD1 ^ OPRD2
操作数相与,不保留结果,只影响标志位。null第二章 指令系统 SHL:逻辑左移指令
格式:SHL OPRD,m
OPRD为除立即数外的任何寻址方式,移位次数由m定,m为1或CL。m为1时只移一位,大于1时,移位次数应置于CL中。 例 null第二章 指令系统
SHL AX,1
或 SHL AX,CL CF 7 0 0 null第二章 指令系统 SAL:算术左移指令
同SHL。在移位次数为1时,移位后,bit7与CF不同,则表明溢出,故OF=1,否则OF=0。该指令用于有符号乘法。 CF 7 0 null第二章 指令系统 SHR:逻辑右移
格式:SHR OPRD,m 7 0 CF0 null第二章 指令系统 SAR:算术右移 7 0 CF该指令用于有符号除法 null第二章 指令系统 ROL:循环左移指令
格式:ROL OPRD,m CF 7 0CF 15 08位16位null第二章 指令系统 ROR:循环右移指令 7 0 CFnull第二章 指令系统RCL:带进位循环左移指令 CF 7 0null第二章 指令系统 RCR:带进位循环右移指令 7 0 CFnull第二章 指令系统 串处理指令
MOVS;CMPS;SCAS;LODS;STOS
与上述指令配合使用的前缀有:
REP;REPE/REPZ;REPNE/REPNZ
1、与REP配合使用的MOVS,STOS,
LODS指令
2、与REPE/REPZ和REPNE/REPNZ联合
工作的CMPS和SCAS指令 null REP:重复串操作到(CX)=0为止
执行步骤: CX=0
? CX=CX-1执行串处理指令MOVS,STOS,
LODS退出REP Y Nnull第二章 指令系统 MOVS 串传送指令
格式
MOVS OPRD1,OPRD2 应标示字或字节
可以简化为
MOVSB (字节传送)
MOVSW (字传送)
标准格式
MOVS ES:BYTE PTR[DI],DS:[SI]。 null第二章 指令系统MOVS执行操作步骤: (DI) (SI) DF=0
?(SI)=(SI)-1/2
(DI)=(DI)-1/2(SI)=(SI)+1/2
(DI)=(DI)+1/2 Y N DF决定了串传送
的方向,可有以
下二条指令确定
CLD:使DF=0
STD:使DF=1 null第二章 指令系统 例
MOV SI,OFFSET SOURSE
MOV DI,OFFSET DEST
MOV CX,100
CLR
REP MOVSB
在此处源串在数据段中(也允许段
超越),但目的串必须在附加段中。 null第二章 指令系统 STOS 存串指令
格式:STOS OPRD (目的)
STOSB (字节)
STOSW (字)
执行:
(DI) AL, DI DI±1
(DI) AX, DI DI±2
将AL或AX的内容存入(DI)指定的
附加段单元中。 null第二章 指令系统 例
MOV DI,0500H
MOV AL,20H
MOV CX,5
CLD
REP STOSB 执行情况null第二章 指令系统CX=0 CX -1 CX(DI) AL DI +1 DIDF=0N Y 退出 YN DI -1 DInull第二章 指令系统 LODS 取串指令:
格式:LODS OPRD
LODSB(字节)
LODSW(字)
执行:
字节 AL (SI), SI SI±1
字 AX (SI), SI SI ±2
将SI指定的数据段单元内容(允许段超越)送入AL,AX。一般不将该指令与REP联用。 null第二章 指令系统 REPE/REPZ 当相等/为零时重复串操作
CX/ZF
=0 CX = CX -1重复串指令
N Y 退出 null第二章 指令系统 与REP相比,实际上REPE和REPZ相同,只是除满足CX=0结束外,还增加了一个ZF=0退出的条件。
null第二章 指令系统
REPNE/REPNZ 当不相等/不为零时重
复串操作。退出条件与上面相反。
即CX=0,ZF=1退出 null第二章 指令系统 CMPS 串比较指令
格式: CMPS OPRD1,OPRD2
CMPSB(字节)
CMPSW(字)
执行:(SI) — (DI)
字节 SI=SI±1,DI=DI±1
字 SI=SI±2,DI=DI±2
SI 指向的数据段单元内容与 DI 指
向的附加段相减,但不保留结果,只影响
条件码。 null第二章 指令系统 SCAS 串扫描指令
格式:SCAS OPRD
SCASB
SCASW
执行: AL - (DI) DI DI±1
AX - (DI) DI DI±2
指令把AL(AX)的内容与(DI)指向的附 加段单元内容相减,但不保留结果,只影响条件码。 null第二章 指令系统ITSIAITSSBSTING1 STRING2 例:
MOV SI,OFFSET STING1 MOV DI,OFFSET STING2
MOV CX, 7 H
CLD
REPZ CMPSB
JNZ UNMAT
MOV AL,0
JMP OUTPUT
UNMAT:MOV AL,0FFH
OUTPUT :…...null第二章 指令系统 控制转移指令 5、中断 4、子程序指令 3、循环指令 2、条件转移 1、无条件转移指令 null第二章 指令系统 无条件转移指令
作用:转移到指令的地址去执行从该地址开始的指令。分段内和段间转移两种。前者只须改变IP,而后者不仅要改变IP,还要改变CS。 3)段内直接转移 1)段内直接短转移 2)段内直接近转移 5)段间间接转移 4)段间直接转移 null第二章 指令系统 段内直接短转移
格式: JMP SHORT OPRD
执行:(IP) (IP)+8位偏移量
其中OPRD在汇编格式中可以直接使用符号地址,但机器执行时是IP+8位偏移量来做的。由于可以前后跳转,所以允许在-128~127字节范围内转移。 null第二章 指令系统例: JMP SHORT HELL
.
.
.
HELL:MOV AL,3 代码段 JMP MOV E8 08 B0 08 0100H 0101H 010AH 010BH 0102H null第二章 指令系统 段内直接近转移
格式:JMP NEAR PTR OPR
执行:IP IP+16位偏移量
OPR为地址符号null第二章 指令系统 段内直接转移
格式:JMP WORD PTR OPRD
执行: IP (EA)
有效地址EA由OPRD的寻址方式确定,可以是除立即数以外的任何寻址方式。
JMP BX
执行: IP BX null第二章 指令系统 段间直接转移
格式:TMP FAR PTR OPRD
执行:IP OPRD的段内偏移地址
CS OPRD所在的段地址。
汇编格式中OPRD可使用地址符号。 JMP FAR PTR NEXT
.
.
.
NEXT :INC CXnull第二章 指令系统 段间间接转移
格式:JMP DWORD PTR OPRD
执行: IP (EA)
CS (EA+2)
(EA)由OPRD的寻址方式决定,可以是除立即数及寄存器方式以外的所有寻址方式。
例:JMP DWORD PTR ALPHA[SP][DI] null第二章 指令系统1)根据单个条件标志的设置情况转
移 4) 测试CX的值为0则转移指令 3)用于有符号数的条件转移指令:2)用于无符号数的条件转移。 null第二章 指令系统 根据单个条件标志的设置情况转移
l JZ(或JE) OPRD
OPRD结果为0(或相等)则转移
测试:ZF=1
l JC/JNC OPRD:
根据CF转移,JC是当CF=1转移,
JNC是当CF=0转移。 null第二章 指令系统 l JE/JZ或JNE/JNZ OPRD:
(相等转移/等于0转移)
一条指令的两种助记符。
JE/JZ是当ZF=1时转移。
JNE/JNZ当ZF=0时转移。
l JS/JNS OPRD:
JS是当SF=1,为负则转移,
JNS是当SF=0转移。
null第二章 指令系统 l JO/JNO OPRD:
JO是当OF=1,溢出则转移。
JNO是当OF=0,不溢出则转移。
l JP/JPE或JNP/JPO OPRD:
JP/JPE (偶转移)当PF=1时转移
JNP/JPO(奇转移)当PF=0时转移
其中OPRD是汇编指令中的地址符号。
例: CMP CX,DX
JE LAB2 ;CX=DX转至LAB2
JNC NEXT
LAB2: MOV AX,0 null用于无符号数的条件转移: lJA/JNBE OPRD:
是当CF=0,ZF=0时转移。 用无符号数a,b比较时, a>b时则转移。
l JAE/JNB OPRD:
当CF=0或ZF=1时转移 。无符号数a,b 比较,
a≥b则转移
l JBE/JNA OPRD:
当CF=1或ZF=1时转移。无符号数a,b比较,
a≤b则转移
l JB/JNAE OPERD:
当CF=1,ZF=0时转移,a《 b则转移 null第二章 指令系统 用于有符号数的条件转移指令:
l JG/JNLE:
当SF与OF同号, 且ZF=0时转移
有符号数a,b比较:a>b则转移
SF=0 A>B
(OF=0)
SF=1 AB null第二章 指令系统 l JGE/JNL OPRD:
当SF与OF同号,且ZF=1时转移
a≥b 转移
l JL/JNGE OPRD:
SF与OF异号,且ZF=0时转移
a
本文档为【8086CPU设计微机最小系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。