版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章8086的指令系统
第二章
8086指令系统
第二章8086的指令系统
第三章)卵86的指令系统;1/
/x概达7/
72.1数据收送类指夕人■/
'2.2算术运算类指令\B/
2.3位操作类指令\/
12.4控制转移类】旨令\
|2.5串操作类指令\
12.6处理机控制类指令
要点与习题分析
第二章8086的指令系统
卜概£头/\//
①8086的指令系统按功能分类可以分成六组,本章
分类逐条讲解。
其在汇编语言中,指令.一届格式为/
/标号:]指令助记符日加操作菽,源操作数[:注释]
其中括弧括起的部分不是必需的,为可选项。“标号”
通三章详细介绍。/\
③后面讲解指令时,除前一章介绍的符号外,本书
用AX,BX…形式表示寄存器的内容。
④学习一条指令应掌握的内容:指令的功能操作
数的寻址方式指令对标志的影响避免非法指令…
3返回第二章
第二章8086的指令系统
2.1数据传送指令
2.1.1丽号据传送指令
MOV/XCHG/XLAT
卜\,2堆栈操备指令/\
PUSH/POP
/2.L3标志传送指令/
LAHF/SAHF/PUSHF/POPF
2.L4地址传送指令
LEA/LDS/LES
2.1.5输入输出指令I
IN/OUT
4返回第二章
第二章8086的指令
2.1.1通用数据传送指令
LMOV类指令V
•MOVreg/mem,imm;
•MOVseg/reg/mem,reg;
•MOVseg/reg,mem;
•MOVreg/mem,seg
2.交换指令XCHGI
3.换码指令XLAT
52.1节目录
第二章8086的指令系统
1.MOV类指令
格式1:MOVreg/mem,imm
MOVAX,2050H/MOVCL,58H
MOVBYTEPTR[BX],55H/MOVWORDPTR[BX],55H
MOVBYTEPTR[SI+05],55H''
M0VBYTIMOVBYTEPTR[BX],55H
MOVBYTE
MOVBYTEMOVWORDPTR[BX],55H
①MOV55H,AL②MOVDH,385③MOVBX,55HV
④MOV[BX],55H—⑤MOVDS,2000H
第二章8086的指令系统
格式2:MOVseg/reg/mem,reg
MOVDS,AX/MOVES,AX/MOVSS,AXcs不能做目的操作数
MOVAX,BX/MOVSP,AX/MOVDH,CL/MOVAL,BH
MOV[2050H],AX/MOV[2050H],BL
MOV[BX+SI+2000H],DX/MOV2005H[BP][DI],CL
MOVDS,AL/MOVCS,AX
MOVDL,AX/MOVBX,CL/MOVSI,CH/MOVBL,DI
7
第二章8086的指令系统
记住:CS不能作
目的操作数
MOVDS,[BX]/MOVES,[BP+SI+25H]
MOVAX,[2050H]AMOVAL,[2050H]
注意:MOVmem,mem形式的指令是非法指令,也就是
说,如果一条指令有两个操作数,不允许两个操作数都
是存储器数,如下列指令为非法指令:
MOV[BX],[2050H]/MOV[2050H],[BX+SI]
该项规定不仅适用于“MOV”类指令,也适用于其他各
类指令(串操作除外)。
8
第二章8086的指令系统
CS可以作源操作数
格式4:MOVreg/mem,seg
MOVAX,DS/MOVBX,ES/MOVAX,CS
MOV[SI],DS/MOV[BX+SI],C£MOV[BX]「[2050H]
“MOV”类指令小结:/
①立即数只能作源操作数,且要与目,作数匹配。
②两个操作数类型要匹配。i/
③如汇编程序无法确定操作类型,要;口类型说明符。
④CS一般不能作目的操作数(用转移口令改变)。
⑤如果指令有两个操作数,不允许两个都是存储器数。
⑥上述四类格式以外的指令必定是非法指令。
⑦所有“MOV”类指令均不影响标志。
9返回2.1.1
第二章8086的指令系统
2.交换指令XCHG___________
;将操作数格式“mem,menT排除在外!
例:XCHGAX,BX/XCHGDH,CL
XCHGCX,[2000H]/XCHG[BX+SI],AL
交换指令不影响标志。
3.换码指令XLAT_______________
指令格式:XLAT;ALTDSX16+BX+AL]
该指令的操作数是隐含的(AL),且寻址方式可
理解为寄存器相对寻址,偏移量在AL中。
该指令又称“查表指令”,通常用于编写查表程序。
换码指令不影响标志。
10
第二章8086的指令系统
查表示意图
查表步骤(求某数的平方)
①在内存中建立数据表格;
②将表格的首地址送入BX中;
25③假定要求“3”的平方,将3送
入
16
寄存器AL中;
09④执行指令XLAT;
04
表格首地址⑤执行:ALTBX+3](DS)
01执行结束:AL=9o
XXXXH00AL中的内容被“换码”!
112.1节目录
第二章8086的指令系统
2.1.2堆栈操作指令
.能够实现“后进先出(先进后出)的存储器组织
(或存储器块)称为堆栈。
引入堆栈:以三层子程序嵌套为例,逐级进入子程
序时,A、B、C三点都有断点和现场需要保护,顺序为
A-B-C;当子程序sub3执行结束,逐级返回时,
最后被保护的C点数据应
最先恢复,最先保护的A
点数据应最后恢复。为此,
通常在内存中开辟一段区
域,结合软硬件技术,使
其具有保护数据和后进先
出的功能。此为堆栈。
12
第二章8086的指令系统
8086堆栈管理:8086使用段寄存器SS和指针寄
存器SP管理堆栈,SS决定了堆栈区的首地址,SP的初始
值决定了堆栈区的末地址,堆
栈区的最大长度随之而定。数
据入栈时,SP做减量调整,SP
SS:SP
腹示的单元称为“栈顶”,即
数据入栈
堆顶向下延伸;SP永远指向刚刚
:区入栈的数据。数据出栈时,SP
做增量调整,即栈顶向上延伸
fp永远指向将票
SS:OOOOH
数据出栈
完,SP恢复初始值。
13
第二章8086的指令系统
“rl6/ml6/seg”作为源操作数,
jg\\f/
栈中的存储单元作为目的操作数,指令操作如下:
①SP-SPT,SS:[SP]-src高8位
②SP-SPT,SS:[SP]-src低8位
例LPUSIL1BXL(设DS:[BX]字单元料用力?5AAH)
SS:[SP]xxH1xxH
xxH55H
xxHSS:[SP]AAH
指令执行前指令执行后
14
第二章8086的指令系统
2.POPrl6/ml6/seg“rl6/ml6/seg”应看作目的操作
致,
堆栈中的单元看作源操作数,指令操作如下:
①dest低8位—SS:[SP],SP-SP+1/
②dest高8位-SS:[SP],SP-SP+1
例2:POPBX;设接在例1后执行。
xxH55AAH
55HBX
SS:[SP]—>AAH
指令执行前
15
第二章8086的指令系统
使用堆栈指令:
①堆栈操作是字操作指令,不要写出“PUSHAL”等。
②在“POP”指令中,“POPCS战令。
③堆栈中的数据弹出后,数扼PUSHBXF栈中消失,
PUSHDS
除非压入新数据,画图时5
④堆栈操作指令不影响标志:
④使用堆栈指令保护和恢复1POPDS注意指令的
POPBX
排列顺序,如:POPAX
162.1节目录
第二章8086的指令
2.1.3标志传送指令
1.标志寄存器传将
;AH-标志寄存器低8位,即SF/ZF/AF
;PF/CF送AH相应位,不影响标志。
;标志寄存器低8位一AH,该条指令影
;响前五个标志。\
|;标志寄存器入栈,不影响标志。
;标志寄存器一SS:[寄],SP-SP+2;
;该指令影响标志。
17
第二章8086的指令系统
2.标志杼\//
(1)CF标志
CLC;CF-0STC;CF-1CMC;CF-CF-
(2)』F标志(串操作指令使向)\/
CLD;DF-0STD;DF-1
(3)IF标志(控制可屏蔽中断能否被响应)
CLI;IF-0STI;IF-1
注释:对其他标志没有提供直接修改的指令,但是
如果必要,可以用前述的四条标志传送指令结合逻辑运
算指令进行修改。
182.1节目录
第二章8086的指令系统
2.1.4地址传送指令
1.有效地址传送指令LEA
r16-mem所指单元的偏移地址
例:设取二0400H,si=003CH
LEABP,[2050h];执行后BP=2050H
LEABP,[SI];执行后_BP=003CH
LEABX,[BX+SI];执行后BX=043CH
LEABX,[BX+SI+0F62H];执行后BX=139EH
备注:①指令中一16”常用的寄存器是BX、BP、SI、Dio
一般不使用其他寄存器。
②指令中源操作数常用的是变量名,而不是上面
例子中例举的形式,如:LEABX,W0RD_VARo所以,本
条指令常被描述为“取变量的偏移地址,,属常用指令。
19
DSxl604000H
BX0100H
SI+0200H
DSSI
04300H
»04300H
示意图:LDSSI,[BX+SI]
20
第二章8086的指令系统
3.指针传送指令LES
LESrl6,mem;rl6-mem,ES^mem+2
操作解释:基本与“LDS”指令相同,不同的是把段寄存
器/\/\/
DS换成ES。
其他问题:①“LEA”指令的作用为取偏移地址,
要
注意与“MOV”指令区别:2050H
设SF2050H,DS:[2050H](DS:
则“LEABX,[SI]”执行后,BX,3AAM
“MOVBX,[SI]”执行后,BX=
②“LDS”的rl6常用SI;“LES”中,rl6常用DI。
③地址传送指令不影响标志。
212.1节目录
第二章8086的指令系统
2.1.5输入输出指令
1.输入指令
❖INAL,i8字节输入,AL一端Di8
❖INAX,i8字输入,AL一端口18,AH一端口18+1
❖INAL,DX字节输入,AL一端口中乂]
❖INAX,DX字输入,AL一端口[。乂],AH-DDX+1]
注释:①“i8”从形式上来说是立即数,实际上是端口
址,因而指令的寻址方式为直接寻址。
②"MOV”指令中,直接寻址要加中括号,输入输出指令
不加。(MOVAL,[2000H];INAL,25H)
③第三、四两条指令为寄存器间接寻址,但对DX不加中
括号。(moval,[bx];inal,dx)
22
第二章8086的指令系统
2.输出指令
❖OUTi8,AL字为输出,端Dig-AL/
❖OUTi8,AX字输出,端Dig-AL,端Dig+l-AH
❖OUTDX,AL字节濡出,端口回]71/
❖OUTDX,AX字输出\端口加乂]一人1[DX+L-AH
注释:①输入输出指令从寻址方式来说分成两种:
直接寻址和寄存器DX间接寻址。如果要访问的端口地址
在0〜255之间,既可以用直接寻址,也可以用DX间接寻
址;如果要访问的端口地址2256,则只能用DX间接寻
址。②另外,输入输出指令中可用的数据寄存器只能是
AL和AX,其他寄存器不可使用。③不影响标志。
23
第二章8086的指令系统
例题:(对错混合)
1.INAL,205H(X)7.MOVAX,55AAH
2.INAX,2OHMOVDX,3FCH
3.INAL,25HOUT[DX],AX
4.INAH,OFFH(X)8.MOVAH,86
5.MOVDX,2050HOUT25H,AH
OUTDX,AL9.INAL,25H
6.MOVDX,2050HMOVBL,AL
INBX,DX(X)INAL,36H
(OUTDX,BX)(X)MOVBH,AL.
242.1节目录
第二章8086的指令系统
2.2算术运算指令\//
2.2.1加法承令V/
ADD/ADC/INC./
,2.2.2减法指令/\1/
'SUB/SBB/DEC/NEG/CMP\
I2.2.3乘法指令MUL/IMRB
I2.2.4除法指令_______DIV/IDIV\■
I2.2.5符号扩展指令CBW/CWDI
I2.2.6十进制调整指令
(BCD)/DAA/DAS/AAA/AAS/AAM/AAD
返回第二章
25
第二章8086的指令
2.2.1加法指令
1.ADD
;dest#dest+src
;排除操作数:mem,mem
2.ADC
指令格式同ADD;dest-dest+srcHSB
3.INC
INCreg/mem;reg/mem-reg/mem+1
26
第二章8086的指令系统
注释:\//
①加法指令对标志的影响:ADD和ADC指令对所有的6
个状态标志都有影响,INC指令不影响CF,影响其他五
个标志。学习加减法指令要会设置标志、使用标志。
②加减法运算要注意OF和CF的意义不同,用法不同。
例题:(对错混排)
ADDAL,25HADDBYTEPTR[BX],05
ADDAL,125HADDWORDPTR[BX],05
ADDAX,2500HADD[BX],2050H
ADDAX,05ADDAL,BL
ADD[BX],05ADDCH,DL
第二章8086的指令系统
前面所有指令都可以换成
ADDBH,CXADCo对于多字节加法,最低字
ADDAX,DX节(字)可以用ADD,剩下的应
ADDSI,BP使用ADC。如用xax)+(sidi)
ADDAX,DI;低16位相加
ADDBX,[BX+SI]ADCDX,SI;高16位相加+CF
ADDDX,[BX+DI]
INC25H
ADDAX,[BX+BP]INCAL"\.
ADAAX、「SI+DI]
INCCX
ADDINC[BX+SI]
[BP+DI+205H],ALINCBYTEPTR[BX+SI]
ADD[BP+SI],CXINCWOREPTR[BX+DI+25]
ADD[BX],GSI+05H]
28
第二章8086的指令系统
♦:♦加法指令标志设置
,设AL=76H\ADDAL,65H
01110110
+01100101
11011011
AL=0DBH,0F=l,SF=l,ZF=0
AF=0,PF=0,CF=0
OF=1:I只对有符号数运算有意义。看作有符号数
是+118+101,应等于+219,大于+127,因而溢出。
CF=0:只对无符号数运算有意义。118+101=219,
219<255,无进位。
29
第二章8086的指令系统
加法指令OF设置方法:
①(正+负)或(负+正)永远不会溢出,0F二0。
②正+正,结果为正(符号位为0),0F=0o
结果为负(符号位为1),0F=lo
③负+负,结果为负(符号位为1),0F=0o
结果为正(符号位为0),0F=lo
计算OFCH+0FBH
11111100
+11111011
111110111
看作有符号数运算:(-4)+(-5)=(-9)A0F=0
看作无符号数运算:252+251=503,CF=1
30返口2.2
第二章8086的指令
2.2.2减法指令
1.SUB
SUBreg/mem,imm;dest-dest-src
ireg/mem,reg/mem
;dest-dest-src
;排除操作数:mem,mem
2.SBB
指令格式同SUB;dest-dest一src一典
3.DEC
DECreg/mem;reg/mem-reg/mem-1
31
第二章8086的指令系统
减法指令用法//
①SUB、SBB、DEC三条指令的指令格式以及基本
用法与ADD、ADC、INC相同。
产SUB和SBB影响所有六个状春志:
/AF为半借位,CF为曲;\
/其余4个标志的含义向加法指令。\
③DEC不影响CF标志,影响其他五个标志。
32
第二章8086的指令系统
OF和CF标段置:\//
I①OF仅仅对有符号数运算有意义。/
(正数sub正数)或(负数sub负数)OF=0
正数sub负数,结果的符号位为0,OF=0
结果的符号位为1,OF=1
负数sub正数,结果的符号位为1,OF=0
结果的符号位为0,OF=1
/②CF设置:(借位标仅仅对无符号数运算有意
义,对有符号数运算无意义。)
够减CF=0;不够减CF5
33
第二章8086的指令系统
4.NEG求补指令
NEGreg/mem;reg/mem-0—reg/mem
①”求补运算”一般表达为“取反加一”,与“零减”
等同。例如,将8位二进制数表示为XXXXXXXXB,
O-XXXXXXXXB=(1111HUB+1)-XXXXXXXXB即
11111111X=01-X=1
X=11-X=O
即i-x=r
结论:0-X=X+1(x为二进制数)
34
第二章8086的指令系统
②NEG相当于减法指令,标志设置与减法指令相同;
(只有对零求补,CF=0,其他情况CF=1)
(设字长为8位,对-128求补时,QF=1,其它OF=0)
例1:设AL=10101010B执行NEGAL;
AL=0101O1O1B+1=O1O1O11OB
例2:设DS:[BX]二(-4)补二Uli1100
执行NEGBYTEPTR[BX]后
则DS:[BX]=OOOO0100=+4(-4的绝对值);
结论:对一个负数的补码求补,得到该负数的绝
对值。
(其实,反过来也一样,对+4执行NEG指令,将得
到-4的补码。)
35
第二章8086的指令系统
5.CMP
CMPreg/mem,imm;dest-src
CMPreg/mem,reg/mem
;排除操作数:mem,mem
;dest-src
与减法指令不同的是不保留运算结果,即不改变目
的操作数,只根据运算结果设置标志。
该指令常用来比较两数大小。执行CMPdest,src
无符号数比较:CF=Odest三src
CF二]dostsrc
有符号数比较,情况较为复杂,在条件转移指令介绍。
36
第二章8086的指令系统
2.2.3乘法指令
L无符号数乘法指令!
岫||■陋晤AX-ALXr8/m8,字节乘
MULrl6/ml6;DX,AX-AXXrl6/ml6,字乘
注释:①指令指定的是乘数,被乘数是隐含的。如乘
数类型为字节,则被乘数为AL,16位乘积用AX;如乘数
类型为字,则被乘数为AX,32位乘积用DX,AXo
②影响CF、OF标志:如果乘积的高一半为零,则
CF=0F=0,否则,CF=0F=lo对其他标志无定义。
37
第二章8086的指令系
例题:无符号数0B4H与HH相乘
MOVAL,0B4H;180D
MOVBL,HH;17D
MULBL;AX=3060D,CF=OF=1(乘积高8位不为零)
用两条指令是否可以?
MOVAL,0B4H;
MUL@YTRPT2[BX+SI]
MULHH
其他指令:MULWORDPTEIBX+SI]
MUL[BX+SI]
;当乘数为存储器操作数
38
第二章8086的指令系统
2.有符号数乘法指令
IMULr8/m8;AX-ALXr8/m8
IMULrl6/ml6;DX,AXAXXrl6/ml6
①指令用法与“MUL”指令基本相同,只是专用于有符号
数的相策。
②CF=OF=0,乘积的高,半为低二手的符号扩展(不
是有效乘积);CF=OF=1,则乘积的高一半为乘积的一
部分。对其他状态标志无定义。
③相同的二进制数,看作无符号数相乘与看作有符号数
相乘,结果是不同的。如OB4H与11H相乘,使用“MUI?
指令,结果为OBF4H(无符号数3060);如使用IMUL指令,
则结果为0FAF4H,将其看作补码,真值为-1292。
39返回2.2
第二章8086的指令系统
L2.2.4除法揖令/X//
1.无符号数底法才聆DIV\J/
TVr8/m8;■-AX+r8/m8的商,AH―余数
IVrl6/ml6;1-DXAX+rl6/ml6的商,DX―余数
①指令指定的是除数,被除数是隐含的;除数为字节,
则称为“字节除”,被除数使用AX;除数为字,称为
“殳除”,被除数使用我AX。\
②操作数的格式与乘法指令相同。
③指令对状态标志无定义。
40
S1=S2S3=l与高8位被除
数对应的商
2.有符号数ES1>S2S3>1
IDIVr8/m8:ALS3
IDIVrl6/ml6:A
①专用于有符号娄
8位除数高8位低8位
②除法指令的溢HS2S1
除数为零
字节除时,被除数的高8位之除数(商>8位)
字除时,被除数的高16位之除数(商>16位)
有符号数情况类似。当产生除法溢出,CPU自动产
生“0号”中断,运行相应中断服务程序。程序设计时,
应避免产生除法溢出。
41返回2.2
第二章8086的指令系统
2.2.5符封展指令\//
1.字节扩展为字®WX/
将的若号位扩展到
CBW;ALAH/
2.字扩展为双字CWD/\/
将的符号位扩展到
CWD;AXDX\
注释:①注意符号扩展涉及的对象是AL和AH以及AX
和DX,与其他寄存器无关。
②用来为有符号数除法准备被除数(16位被除数和32
位被除数)。
③为无符号数除法准备被除数.......
42
第二章8086的指令系统
符号扩展说明
例如,ALVBL,由于CPU使用AX作被除数,故必须
将AL中的被除数扩展到AX中。如果做有符号数除法,应
使用符号扩展指令CBW;如果做无符?数除法,/应使AH为
0(xorah,ah或andah,0/movah,0等)。
做AX+BX,应使用同样的方法处理被除数,即将符
号扩展到DX,或使DX中为0。
/除法指令举例:/\
divbl/divbyteptr[bx_
idivex/idivwordptr[bp+si_
div2050h(X)div[bx](X)
43返回2.2
第二章8086的指令系统
2.2.6十进制(BCD码运算)调整指令
①压缩的BCD码:一个字节存放两位BCD码,如“0110
1001”(69H),如看成压缩的BCD码,即为十进制数
69o一个字节的压缩BCD码可表示的数:00〜99。
②非压缩的BCD码:一个字节存放一位BCD码,该字节
低4位为合法的BCD码,高4位未定义。如“01101001”,
看成压缩的BCD码,是69;看成非压缩的BCD码,是9。
另外:※高4位通常用0表示。(00001001)
派0〜9的ASCII码也可看成非压缩的BCD码。
00110000,00110001...............00111001
44
第二章8086的指令系统
补充:调整原理做BCD码运算9+9
做BCD码运算9+6、00001001
00001001■+^ML001001
+00000110I非法BCD00010010
00001111-0000110
+/0000110o\)i1B00
/oooi0101
9+6应该等于15,即应为;正确结果应等于18,即
00010101,现得到一个非i00011000,现等于00010010,
诰咆强;/安物%6,i试做加6调整,得正确结果。
加6后,倚到了市确结巢。:
45
第二章8086的指令系统
BCD码加核运算,当\//
.结果大于9叫或AF或CF等于14
声要做加6调“。/
原因:用二进制数运算规律进行十进制数运算。一
位十进制数逢十进一,四位二进制数逢十六进一,力口6
是为了1)强迫进位;2)补充进位多带走的6。
BCD码减法运算:够减时不需要调整;AF或CF为
1时(有借位),需要做减6调整,抵消多借的6。
46
第二章8086的指令系统
1.压缩BC四调整指令、//
①加法调整DAA\/
DAA;判断AL中的结果(低4位和高4位)是否需
要调整,若需要,做加6调整;若不需要,做下一条指
令。
注释:
♦:♦如果做BCD码加法运算,ADD、ADC指令后
应紧跟DAA指令,以保证结果正确。
。调整对象只能是AL寄存器(BCD码运算只能
使用以AL寄存器为目的操作数的8位数运算
指令)。
对OF标志无定义,设置其他标志。
47
第二章8086的指令系统
②减法调整DAS
DAS:判断AL中的结果(低4位和高4位)是否需
要调整,若需要,做减6调整;若不需要,做下一条指
令。
注释:.\/\■/
。如果做BCD码减法运算,SUB、SBB指令后
应紧跟DAA指令,以保证结果正确。
。调整对象只能是AL寄存器(BCD码运算只能
使用以AL寄存器为目的操作数的8位数运算
指令)。
。对OF标志无定义,设置其他标志。
(关于BCD码符号问题省略)
48
第二章8086的指令系统
2.非压缩BCD码调整指令
⑴加法调整AAA
AAA;操作如下:
①(AL低4位s9)且AF=O,不需要调整,将AL高4
位清零,置CF=AF=O,结束指令。
②如(OAHwAL低4位)或AF=L贝ljAL+6(调整),
AH+1(将进位记到高位),将AL高4位清0,置
CF=AF=1,结束指令。
设AH=06,AL=08,BL=09执行下列指令
ADDAL,BL;AH=06H,AL=11H,AF=1,CF=O
AAA;AH=07H,AL=07H,AF=1,CF=1
49
第二章8086的指令系统
⑵减法调整AAS
AAS;操作如下:
①(AL低4位w9)且AF=O/不需要调整,将AL高4
位清零,置CF=AF=O,结束指令。
②如果AF=L则AL-6,AH-1,AL高4位清0,
gAF=CF=lo/\
设AX=0608HBL=09H执行下列指令
SUBAL,BL;AH=06,AL=OFFH,AF=1,CF=1
AAS;AH=05,AL=09;AF=1,CF=1
A0608H-09H-68—9=59。
只有AF=1,AL在A〜F间
50
第二章8086的指令系统
⑶乘法调塞设AL=07H,BL=09H执行指令:
AAM;3MULBL;AH=O,AL=3FH(63)
;
注释:①只能4AAMAH=06H,AL=03H
;AX=0603H:63的非压缩BCD码
②相乘的两彳
③相乘后先得到二进制数乘积(最大9x9=81),在
寄点器AL中(低4位);/\
④调整:将AL中的数小OAH,商放入AH,余数保
存在AL中,在AX寄存器即得到结果的非压缩BCD码。
⑤本指令根据AL内容设置SF\ZF\PF,其余无定义。
例题:
51
第二章8086的指令系统
(4)除法调\//
AAD;AX一将AX中的非压BCD码变成二进制数,即
;AL<-AHX10+AL,AH—0
注w其他调整指令先运算介词整;除法调整是先
调整/后运算。\\/
MOVAX,0608H;68的非压缩BCD码,被除数
MOVBL,09H;除数,非压缩BCD码9
AAD;AH=0,AL=10X6+8=68=44H
;AX=0044H:变成二进制数的被除数
DIVBL;AL=07(商);AH=05(余数)
52返回2.2
第二章8086的指令系统
2.3位操作指令
^^3.1逻辑运算指令、
/AND/OR/X(^/N(WTEST
2.3.2移位指令
SHL/SHR/SAL/SAR
■2.3.3循环移位指令
ROL/ROR/RCL/RCR
53返回第二章
第二章8086的指令系统
23」…逻辑运算指金
1.与运算指令AND
ANDreg/mem,imm
ANDreg/mem,reg/mem排除操作数”mem,mem”
注释:①操作数格式同加减法指令;
②设置CF=OF=0,影响SF、ZF、PF,对
AF无定义。
2.或运算指令OR
JR.K注JBLJR.释JVLJ:BLJKJK.JR指.JKKJR.K令JKJVLdJ格VL;JBLKJ式K.—、标志设置同AND指令。・
3.异或运算指令XOR
■■■■■■■■■■■■MMWaHMMaMaBaflBMBMBMaMM'MMkmWWBMMMMBMBaaBMBMBMBMBMMMaaM
注释:指令格式、标志设置同AND指令。
54
第二章8086的指令系统
4.测试指令TEST
注释:指令格式及运算均与AND指令相同,'但是不
保留运算结果,即不影响目的操作数,只根据运算结果
设置标志。\/\1
5.非运算指令NOT/■\
NOTreg/mem
注释:不影响任何标志。
下面举例说明逻辑运算指令的应用O
55
第二章8086的指令系统
①屏蔽若干位0—C常用指令入//
ANDAL,01H;屏蔽AL的D7〜DL保留DO
A'DAL,0FH;\^蔽AL高4叫保留低4位
②使套干位置1(常由指令)/\/
ORBL,0F0H;使BL高4位置L低4位不变
③清除CF、OF或设置标志
■»-W»W*W»W*W»W»-a>»-W»-M»W*-W»-W»-W»W»W»W»-M»W»-W»-W»-W»w»w»w»w*w»w*w»w»w»w»w*w»w»w»w*
ANDAL,AL(ANDAL,OFFH;ORBL,BL;........)
;类似指令没有改变目的操作数,但使CF=OF=0,也
可能纯粹以设置其他标志(ZF)为目的。
56
第二章8086的指令
④求反NOPAL/NOTWORDPTR[BX+DI]
⑤对指定位求反
XORAL,OFH;AL高4位不变,低4位求反
XORCL,55H;CL偶数位求反,奇数位不变
3清除寄存器及CF(常话指令)\
XORAX.AX/XORBX,BX
XORBYTEPTR[BX],BYTEPTR[BX]X
57
第二章8086的指令系统
⑦不改变操作数,测试操作数或操作数的指定位
TESTAL,OFFH;由ZF标志判断AL是否为零
」也可以用CMP指令。/
TESTAL,01;由ZF标志判断AL的DO是否为零,
;ZF=1,则AL.D0=0
;ZF=O,则AL.DO=1
ANDAL,01;也可完成上述功能,但是改变了目
;的操作数
58返回2.3
第二章8086的指令系统
共四条指令,分成逻辑左移、算术左移、逻辑右移
和算术右移,其中两条左移指令对应同一条机器指令,
所以,从机器指令的角度来说,移位指令只有三条。
SHL/SALCF•MSB>LSBP0
符号位不变
SAR
59
第二章8086的指令系统
1.左移指令(逻辑左移、算术左移:一条指令)
2.右移指令(逻辑右移SHR;算术右移SAR)
-—JKJK.X-JKJKJKiJrjarjaraKr
;位数,最高位不变,最低位进CF。
60
第二章8086的指令系统
,注粽//
①标志设量V\//
AF:对AF无定义;
CF:按移入的值最为0或为1;\/
根据移位后的结果设置SF、ZF、PF;'
OF:当移动一位时,移位后如果符号位发生变化,
则OF=1,符号位不发生变化,则OF=0,移位次数大于一
时,OF不定。
②操作数左移一位,相当于乘2(对有符号数同理,
只要OF=0,结果就对)。
61
第二章8086的指令系统
③操作数逻辑右移(SHR)二位,相当于无符号
数除以5;藻祚教真采云花(SAR)一位,相当才有符
号数除以2。\/
指令举例
SHLAX,1/
SARBYTEPTR[BP+SI],1
SHRBH,1
SARAL,3
MOVCL,3
SARAL,CL
62返回2.3
第二章8086的指令系统
小循环(不带进位)左移(ROL)和右移(ROR)
JH.JK.JX..".•,•.«■.JR.J>CJBg
大循环(带进位)左移(RCL)和右移(RCK)
ROL
ROR
RCL
RCR
63
第二章8086的指令系
1.小循环移位指令ROL、ROR
ROLreg/mem,1/CL;左移
RORreg/mem,1/CL;右移
2.大循环移位指令RCL、RCR
RCLreg/mem,1/CL;左移
RCRreg/mem,1/CL;右移
例L将DX,AX中的32位数左移一位。
SHLAX,1DXAX
n
RCLDX,1U
移位指令和循环移位指令结合,可实现32位数乘2除2。
64返回2.3
第二章8086的指令系统
2.4控制转移类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京地下室防水施工方案
- 保税港区雕花格栅施工方案
- 河南省郑州市中原区2023-2024学年七年级上学期期末考试语文试题 (解析版)
- 中南林业科技大学《园林规划设计》2022-2023学年第一学期期末试卷
- 中南林业科技大学《信托法》2022-2023学年期末试卷
- 基础心理学知识要点总结
- 回话的技术-端木自在
- 基础部工作计划(共18篇)
- 淮安市委手机党校平台简介及部分后台管理操作功能说明
- 户主变更申请书5篇
- 司法涉案目的评估指南
- 高一分文理科语文第一课
- 光伏电站消纳利用率计算导则
- 焓熵图(膨胀线)
- 青春期多囊卵巢综合征诊治共识.ppt
- 前后鼻音生字表
- 人教版八年级上册英语单词表默写版(直接打印)
- 五年级数学质量分析经验交流发言稿(共3页)
- 工程的材料及成型技术基础概念鞠鲁粤编
- (精选)国培结业典礼领导讲话稿范文(3篇)
- 江西省科技创新平台建设(PPT课件)
评论
0/150
提交评论