版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章80486微处理器指令系统
㈠教学目标
介绍80486的寻址方式及指令系统。
㈡学习要求
通过本章的学习,要求熟悉各种寻址方式的使用
场合以及常用指令的使用方法。
㈢讲授内容
第三章80486微处理器指令系统
第一节80486微处理器寻址方式
第二节80486微处理器指令系统
E
指令
指令是规定计算机进行某种操作的二进制代码形式的命令。
指令中应包含三方面的信息:
执行什么操作
操作数的位置
结果存放的位置
指令的一般格式
操作码操作数地址1,操作数地址2
寻找操作数所在地址的方法即为寻址方式(AddressingMode)o
第一节80486微处理器的寻址方式
80X86的寻址方式可分为两类:操作数的寻址方式和
转移地址的寻址方式。
一、操作数寻址方式
由于操作数作为指令的操作对象,可以存储在存储器
中(称为存储器操作数)、存储在寄存器中(称为寄存器
操作数)或直接包含在指令中(称为立即数),因此,与
之对应有多种寻址方式。80X86可粗略地划分为3类10种寻
址方式,其中,访问存储器操作数有8种寻址方式。
(1)立即数寻址
操作数作为立即数直接存在指令中。
例:MOVAX,1234H
MOVBL,78H
MOVECX,12345678H
(2)寄存器寻址
操作数存放在CPU某个8位、16位或32位寄存器中。
例:MOVEAX,EDX
ADDCL,2
MOVDX,AX
该寻址方式指令码短,且无需从存储器取操作数,
故执行速度快。
(3)直接寻址
存储器
在这种方式下,指令中
的操作数部分直接给出了操h
操作
码
代
作数的有效地址EA。H码
00锻
例:MOVAX,DS:[1000H]OH
AX
;将DS段中1000H和1001H
八八20000H
单元的内容送到AX中。
21000H34H
注意:指令中的DS不能省略。
(4)寄存器间接寻址
操作数所在存储单元的EA由规定的寄存器给出。
MOVSI,1000H
MOVAX,[SI]
EA可以由SI,DI,BP或BX提供。(其中BX、BP为基址寄
存器,SI、DI为变址寄存器)
若以SI,DI,BX间接寻址,则默认操作数在DS段中。若
以BP间接寻址,则默认操作数在SS段中。
如果操作数不在上述规定的默认段,而在其他的段中,
则必须在相应的操作数前加上段超越前缀。例如:
MOVAX,ES:[SI]
MOVAX,DS:[BP]
(5)寄存器相对寻址方式
MOVEAX,[BX+10H]
MOVEAX,10H[BX]
(6)基址变址寻址方式
MOVDX,[BX+SI]
MOVDX,[BP+DI]
(7)相对基址变址寻址方式
MOVDX,[BX+SI+15H]
32位寻址时,除ESP外的32位通用寄存器均可作间接寻址
寄存器。除EBP默认段寄存器为SS外,其余6个通用寄存器均
默认段寄存器为DS。
以下寻址方式只适合于32位寻址。
(8)比例变址寻址方式
MOVDX,[变址寄存器*比例因子+位移量]
比例因子可以是1、2、4、8中的任一个数。
(9)基址比例变址寻址方式
MOVDX,[基址寄存器+变址寄存器*比例因子]
(10)相对基址比例变址寻址方式
MOVDX,[基址寄存器+变址寄存器*比例因子+位移量]
例:判断下列指令是否正确,若正确说出源操作数的寻址方式。
MOVEAX,1234H;立即数寻址
MOVBX,DX;寄存器寻址
MOVEAX,[SI];寄存器间接寻址
MOVAX,[CX];xCX不能用作间接寻址
MOVDL,[BX];寄存器间接寻址
MOVCX,[BP+SI];基址变址,默认SS段
MOVDI,[BX+BP];x不能两个寄存器都为基址
MOVBH,[SI+12345H];x相对量太大
MOVCH,ES:[12H];直接寻址
MOVAX,[34H];X必须说明段前缀
MOVDH,[EAX*3];X比例因子只能是1、2、4、M
二、转移地址寻址方式
在指令系统中,有一组指令为程序转移指令。程序转
移指令的寻址方式涉及如何确定转移的目标地址。目标地
址可以在段内,也可以在段外。
I位移量I-1寄存器
11P寄存器I-----------1
存储单元
(a)段内直接(b)段内间接
存储器中的两个相继字
(c)段间直接(d)段间间接
⑴段内直接寻址
转移的目标地址是当前IP寄存器的内容和一个8位或16
位相对量之和。指令的汇编语言格式表示为:
JMPSHORTOUTSET
JMPNEARPTRPROG
cT命令提示符-tdhu.nX
=FileEditUiewRunBreakpointsDataOptionsUindowHelp
rz=[]=CPUP?ntiunPro---ng
cs:000aB88717Eax0000c=0
cs:00038ED8nouds,axbx0000Z=0
c.00058E1E0000ROUds.[00001ex0000s=0
cs:0009EBI?jnp0022dx00000=0
cs:000B90nopsi0000p=0
cs:000c66BB00000100nouebx,00010000di0000a=0
cs:0012678B040Bmouax,lebx*ecx]bp0000i=l
cs:00168C1E0200nou[0002],dssp0000d=0
cs:001AB8CDABmouax>ABCDds17??
cs:001DBB6705noubx,0567es17??
cs:00202BC3subax,bxss1787
cs:0022B44Cnouah,4ccs1788
cs:0024CD21int21_____________________Jip0000
cs:002616pushss
cs:0027833E9C2700cmpwordptr[279C1,0000
ds:0000CD20FB9F009AF0FE=>JfU=lss:00025678
ds:0008IDF0320B40140F07后2那瞬•ss:0000X234
ds:001095115601810778116帆・x<ss:FFFE0000
ds:0018010101000204FFFF@@@8lyyss:FFFC0000
ds:0020FFFFFFFFFFFFFFFFyyyyyyyyss:FFFA0000
Fl-HelpF2-BkptF3-ModF4-HereF5-ZoonF6-NextF?-TraceF8-StepF9-RunF10-Menu
⑵段内间接寻址
目标地址存放在寄存器或存储单元中。寄存器或存储单
元的内容可以用数据寻址方式中除立即数以外的任何一种寻
址方式取得,所得到的内容将用来取代IP寄存器的值。指令
的汇编格式可以表示为:
JMPAX
JMPTORDPTR[BX+10H]
IDHUQING!
crCOB*andProipt-回
)
=FileEditUieuRurBreakpointsDataOptionsUindowHeIprM.叫1
n=(]=CPUP?ntiumPro=—s
cs:0000kB8D10BmouaxBBDl_______j|ax■伽c=W
zW
cs:H003OEDBmouds,axbx伽Hz=H
cs:00B5BECHmoue*,axexssM
cs:0007B80000mouax,8晒dx0000o=0
FFE0jmpaxsiH伽p=0
cs:00eCFF6710jmpdi伽Ha=M
cs:B08FR44cmovah,4chp0000i=l
cs:HRltCD21int21sp伽Hd=0
cs:00t3B574HAaddax,加?4dsHBC1
cs:B01683F906cmpcx,e/6Ies0BC1
cs:001974M5je0020IssHBD1
cs:001B83F901cmpcx^001csHBD3
cs:001E751BjneM030IipH伽
cs:H02HFF7618pushwordptrlhp*18]
cs:0023E895glcall01UB]
JJ繇想热溺撅然镣海翎宏激小缴既您解溜摭狼源联足㈱然阴幽撅限㈱
ds:0000CD20PB9F加9AF0FE=JfU=lss6E?2
ds:0008IDFB320B88080F0?-2盘6,ss:0000>6F4D
ds:HH10DB05560140H4BE05ss:FFFE0伽
ds:的IB010101000204FFFFG0Q©♦,/ss:FFFCHB88
ds:H020FFFFFFFFFFFFFFFFyyyyyyyyss:FFFA舶95
£
|F1-HelpF2-BkptF3-ModF4-HereF5-ZOORF6-NextF?-TraceF8-StepF9-Run
⑶段间直接寻址
段间转移,指令中直接提供目标地址的段基址和偏移
地址,所以,只要用指令中指定的偏移地址取代IP寄存器的
内容,用指令中指定的段基址取代CS寄存器的内容就完成
了从一个段到另一个段的转移操作。指令格式为:
JMPFARPTRNEXT
"CouandProipt-IDHU
FileEditUie」RunBreakpointsDataOptionsUindow
]=CPUP?ntiunPro==
aX册0c=lf
rcs:0000kB8CB0BFIOUax,瞅BAu
IX的0z=lf
cs:00038ED8novds,axDu
cX朋0s=Q
cs:00058E1E0000novds」Q硼】Iu
J册0n
uXo=u
cs:硼9EA00NCF0Bjnp0BCF:朋朋
明0
s«p=Q
cs:000E66BB00000100nou加网肛朋的1u
—
的0
I1a=
cs:0014678B040Bnovaxjebx+ecx]Id
的0
Ip!=
cs:00188C1E020Bnou【册02],dsD0!
sp的Js
cs:N!CB8CMBnouax.ABCD1BQ
J册
us
cs:001FBB6705novbx,056?IBB
cs:N222BC3subax,bxICsBB
Ss
cs:0024B44Cnovah,4cICBCC
cs:0B26CD21int211sBC0
朋
cs:00283E9Cpushfds:11—p
cs:002A2?daa
cs:N2B007403add【siMLdhJ
(4)段间间接寻址
用存储器中两个相继字的内容来取代IP和CS寄存器中的
原始内容,以达到段间转移的目的。存储单元的地址是由指
令指定除立即数方式和寄存器方式以外的任何一种数据寻址
方式取得。指令格式为:
JMPDWORDPTR[BX]
式窗令提示符-IDHDQIK
三EditQigwRun[reakpointsDataOptionsWindowHei]
Ft1=CPUP?ntiimPro-
c=0
cs:0000bB88D1?novax,178Dax0000z
cs:00038ED8novds,axbx0000s=0
cs:0005BB0000noubx,0000ex0000o=0
cs:0008FF2Fjnpfar[bxlIdx0000p=-00
cs:000AB44CDOUah,M1si0000-0
a=
cs:000cCD21int21di0000i=1
cs:000E3486xoraL86|bp0000d=0
cs:00103486xoraL86Isp0000
cs:001234?CxoraL7C1ds177D
cs:00143450xoraL501es17?D
cs:001651pushexss178D
cs:001752pushdx1cs178E
cs:001853pushbx|ip0000
cs:001954pushsp1
cs:001A55push
懒雌K懒疝蒯l时仙前
ds:0000CD20FB9FM9AF0FE=JfU=lss:00020000
ds:0008IDF0320B46140F07后2伸瞩•ss:0000卜0000
ds:00109B115601870?7E11网聊ss:FFFE0000
ds:0018010101000204FFFF@00B♦/ss:FFFC0000
ds:0020FFFFFFFFFFFFFFFFyyyyyyyyss:FFFfi0000
i-HelpF2-BkptF3-ModF4-HereF5-ZoonF6-NextF7-TraceF8-StepF9-RunF10-Menu
•程序框架,486
DATASEGMENT十
;此处定义变量
DATAENDS------
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX;设置数据段
MOVES,AX;设置附加段
;此处添加自己的代码
PRO_END:
MOVAH,4CH;设置功能号
INT21H;返回DOS
CODEENDS
ENDSTART
•变量定义
,486
DATASEGMENTMOVBX,Y1
MOVCX,DS:[01H]
VAR_XDB0;字节型
MOVDX,ES:[03H]
Y1DW12H;字型
ZDDOABH;双字型PRO_END:
MOVAH,4CH
WDB?;?不初始化INT21H
ARYDB0,1,5DUP(2);DUP重复定义CODEENDS
ENDSTART
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
■」=CPUPentiumPro=aXoooo
cs:0000kB8c40B_____mov_____ax,0BC4^_________▲bXoooozo
cs:00038ED8movds,ax-
屐UcXoooos-o
cs:00058EC0moves,<3X、、、
xv»dXooooo=o
cs:00078B1E0100movbx,[ooor、<、«、ioooo
»>s-p=o
cs:000B8B0E0100movex,■0001;<«d1ooooa-o
cs:000F268B160300movdx,€ss:[0003]簇ooo-
溶bpoi1
cs:0014B44Cmovah,4C俄ooo=
湖spodo
cs:0016CD21int21常
*dsoBB4
cs:0018F8clc您
>»esoBB4
(二簇
cs:001926390Fempes::bx],X>>>ssoBc4
cs:001C7575jne0093辎csoBc5
cs:001EC7069C270000movworeJptr[279C]ipooo0
cs:00248BD9movbx,(二XD
.\\%V.%V»,.*A\V.%Vb%*A%V.%CV.%DV.%Vt%2V.\V.0%V.%%^F%VB.%V.%V9.%VF.%'WV%0V^SVob%%^%Vt%V.%V.%1A%M.%^S\VliSV.%\%SV.%Vb%V.%Vli%V.\VU%%\%V.%
lDF0320B769AF0FE=VjUE
ds:0008e3o556011c08OF07-三
ds:0010o1o1o10o0204A605|-+V©L4a+SS:0002ABOO
ds:001804FFFF©©©ss:0000k1200
第二节80486微处理器指令系统
80X86的指令系统向上兼容,都是在8086指令的基础上发展形
成的。与80286相比,增加了32位操作和访问存储器的32位寻址方
式。
80486可以工作在实模式、保护模式和虚拟8086模式,为了支
持系统工作模式,指令系统中设计了系统管理指令、保护模式控制
指令以及高级语言支持指令等等。
80486的基本指令按功能可分为7类:数据传送指令、算术运算
指令、逻辑运算指令、字符串操作指令、控制转移指令、处理器控
制指令和按条件设置字节指令。下面分别给予介绍。
一、数据传送指令
1)通用数据传送指令:
完成数据的传送工作,不影响任何标志。
基本传送指令MOV
格式:MOV0P1,OP2
/,
目的操作数源操作数
功能:0P1-0P2
可完成:
寄存器一寄存器寄存器一存储器寄存器
立即数
段寄存器一寄存器段寄存器-存储器存储器
注意:目的操作数不能是CS!
符号扩展传送指令MOVSX
格式:MOVSX0P1,0P2;0P1为16/32位寄存器
0P2为8/16位寄存器或存储器
例如:MOVDH,-16;DH=F0H
MOVSXBX,DH;BX=FFF0H
零扩展传送指令MOVZX
格式:MOVZX0P1,OP2;0P1为16位或32位寄存器
0P2为8位或16位寄存器或存储器
例如:MOVDL,OFOH
MOVZXBX,DL;BX=00F0H
除法运算时,常用MOVSX和MOVZX这两条指令扩展被除数位数。
交换指令XCHG
格式:XCHG0P1,OP2
功能:0P1-——-OP2
可完成:
寄存器<——>寄存器寄存器——>存储器
例:XCHGAX,BX;AX——BX
地址传送指令LEA
格式:LEAREG,OP2
功能:将0P2的有效地址EA送往寄存器。
例:LEABX,VAR、
»等价
MOVBX,OFFSETVARJ
MOVBX,SEGVAR;将(^2的段基址送往寄存器
.486
DATASEGMENT
VAR_XDB
Y1DW12H
ZDDOABH
WDB?
ARYDB0,1,DUP(2)
DATAENDS
LEASI,Y1;SI=0001H
LEADI,Z;DI=0003H
LEABX,ARY;BX=0008H
MOVAL,[SI];AL=12H
MOVCX,[BX+1];CX=0201H
=CPUPentiumPro
c-O
cs:0000B8C40Bmovax,0BC4ax0BC4
z=O
cs:00038ED8movds,axbx0000
s=O
cs:00058EC0moves,axex0000
o-O
cs:0007kBE0100movsi,0001dx0000
p-O
cs:000ABF0300movdi,0003si0000O
a-
cs:000DBB0800movbx,0008di00001
i=
cs:00108A04moval,[si]bp0000dO
-
cs:00128B4F01movex,[bx+01]sp0000
cs:0015BAC40Bmovdx,0BC4ds0BC4
cs:0018B44Cmovah,4Ces0BC4
cs:001ACD21int21ss0BC4
cs:001C7575jne0093cs0BC5
cs:001EC7069C270000movwordptr[279C],叩OUUZ
ds:0000001200AB00000000I%
ds:00080001020202020200
dS:0010B8C4OB8ED88ECOBE]YA=|=A3ss:0002AB00
ds:00180100BF0300BB0800◎[,曲ss:0000kl200
尔尔尔尔尔尔尔尔溶溶尔溶溶尔溶尔溶尔尔尔溶溶溶溶尔尔尔小必〉也游:都...既...好...和.蚣既既蚣爆尔:
海布•;;;・;•;•;・;・;•;•;•;・;・;・;・;•”;•;•;;;•;隅;隅•;•;・;•;・;•;•;•;・;•;•;・;;隅;•;•;・;•;•;•;;;•4衿常冶冶衿衿冶;;;;”;.;;..;;..;.;.;.;一;;冶——;
.486
DATASEGMENT
VAR_XDB0
Y1DW12H
ZDDOABH
wDB9
ARYDB0,1,DUP(2)
DATAENDS
LEASI,Y1;SI=0001H
LEADI,Z;DI=0003H
LEABX,ARY;BX=0008H
MOVAL,[SI];AL=12H
MOVCX,[BX+1];CX=0201H
MOVDX,SEGY1;DX=0BC4H
查表转换指令XLAT
格式:XLAT;将[8乂+人口-----AL
查表:表首偏移地址+索引值x每条记录所占字节数
AL1
使用XLAT指令的条件:•在数据段中建一张表
•表首地址送BX
•待转换数放入AL中
例:用查表方法,计算十进制数。〜9的平方。
SQR_TABDB0,1,4,9,16,25,36,49,64,81
MOVBX,OFFSETSQR.TAB;表首地址-BX
MOVAL,4;取待转换数
XLAT;转换结果-AL
2)堆栈指令
压栈/弹栈指令PUSH/POP
格式:PUSH0P1;OP1可是16位或32位的寄存器、存储器
POP0P1操作数或立即数
全部通用寄存器内容压栈和弹栈指令
格式:PUSHA将所有16位寄存器压栈,顺序为:
AX、CX、DX、BX、SP、BP、SI、DIo
格式:POPA将堆栈中的数据弹给16位寄存器,顺序
与压栈指令相反。
格式:PUSHAD将所有32位寄存器压栈,顺序为:
EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDIo
格式:POPAD将堆栈中的数据弹给32位寄存器,顺序
与压栈指令相反。
如:AX=0011H,SP=0080H
PUSHAX
执行后有:
AX=0011H,SP=007EH
2007EH
20080H
SP=007EH,
POPBX
执行后有:
2007EH
20080H
SP=007EH,
POPBX
执行后有:
BX=0011H,SP=0080H
SP20080H
3)1/0指令IN/OUT
输入格式:INAL,PORT;(PORT)-AL
INAX,PORT
INEAX,PORT
输出格式:OUTPORT,AL/AX/EAX;AL/AX/EAX-(PORT)
•直接寻址的I/0指令
INAL,9FH
OUTSOH,AL
•DX间址的I/O指令
MOVDX,310H
INAL,DX
二、算术运算类指令
1)基本四则运算
加/减法指令ADD/SUB
ADD
0P1,OP2;0P1<——0P1+0P2
SUB
例:ADDAL,BL»&AL=17H,BL=09H,CF=1,则指令执行后
AL=20HBL=09HCF=0SF=0ZF=0
带进/借位加/减法指令ADC/SBB
ADC
,0P1,OP2;0P1<——0P1±0P2±CF
SBB
例:ADCDL,BL»&DL=17H,BL=09H,CF=1,则指令执行后
DL=21HBL=09HCF=0SF=0ZF=0
OPK0P2不能同时为存储器操作数,0P1不能是立即数。
该类指令要影响所有状态标志。
加1/减1指令INC/DEC
格式:INCOPl;0P1-0P1±1
DEC
该类指令不影响CF标志
例:INCCX
执行前:CX=1234H,CF=1;执行后:CX=1235HCF=1
求补指令NEG
格式:NEG0P1;OPl<-0-OPl
交换加法指令XADD
格式:XADDOPl,0P2;0P2—OPl
OPl—OPl+0P2
例:MOVBL,12H程序执行后:
MOVBH,34HBH=46H
XADDBH,BLBL=34H
比较指令CMP
格式:CMP0P1,OP2;0P1-0P2
该指令不保存结果,只影响标志。
比较并交换指令CMPXCHG
格式:CMPXCHG0P1,OP2
功能:0P1-AL(AX/EAX)
若ZF=1,0P1—OP2
若ZF=0,AL(AX/EAX)—0P1
无符号数乘法指令MUL
格式:MUL0P1
妇T果
功能:AL(AX/EAX)xOPl---->AX(DX:AX/EDX:EAX)
如:MULSI;AXxSI---->DX:AX
例:试编制出实现Z=128x8的程序段。
MOVAL,128
MOVBL,8
MULBL
MOVZ,AX
该程序段执行后:Z=0400H
MOVAL,128
MUL
R命令提示符________________________________________________________________________________________________________
MicrosoftWindowsXP[version5
(c)copyright1985-2001MicrosoftCorp.
c:\Documentsandsettings\huqing>CD\
C:\>CDTASM\BIN
C:\TASM\BIN>TASM32HUQING
TurboAssemblerVersion5.0Copyright(c)1988,1996
Assemblingfile:HUQING.ASM
*Warning*HUQING.ASM(15)Argumentneedstypeoverride
**Error**HUQING.ASM(15)illegalimmediate
Errormessages:1
warningmessages:1
Passes:1
带符号数乘法指令IMUL(有三种形式):
•IMUL0P1
经生AX(DX:AX/EDX:EAX)
功能:AL(AX/EAX)xOPl
•IMUL0P1,0P2;OPK0P2可为16位或32位的寄
存器或存储器操作数。
0P2可以是立即数
功能:0P1xOP20P1;注意:当结果超过16位或32
位时,高位自然丢失,此时,
CF=1,OF=1o
•IMUL0P1,0P2,OP3
妇T果
功能:0P2XQP3—»0P1;注意:OPK0P2同上;
OP3必须是立即数。
例:MOVAL,-2
MOVBL,2
IMULBL;AX=FFFCH
MOVCX,6
MOVBX,8
IMULex,BX;ex=0030H
MOVDX,3
IMULBX,DX,3;BX=0009H
MOVDX,OFFFDH
IMULBX,DX,3;BX=FFF7H
除法指令DIV/IDIV
格式:DIV0P1IDIV0P1
商AL(AX;EAX)
功能:AX(DX:AX,EDX:EAX)+OP1A
余数AH(DX;EDX)
若除数为0或商过大(对应累加器中放不下)时,产生0号中断。
符号位扩展指令
格式:CBW;AL-AXCM;AX->DX:AX
CME;AX-EAXCDQ;EAX-EDX:EAX
例:字型变量A除以B,商存入BUF单元,设A,B均为带符号数。
MOVAX,A;取被除数
CW;扩充为32位
IDIVB
MOVBUF,AX;送商
2)十进制调整指令
・组合BCD码
计算机内部使用的是二进制,而人们在现实生活中大多使用十
进制,为了方便用户,人们用二进制编码来表示十进制。
组合BCD码就是用4位二进制来表示1位十进制数。
例:将十进制数123转换成相应的组合BCD码
123d——000100100011b123H
•分离BCD码
分离BCD码就是用8位二进制来表示1位十进制数。
例:将十进制数123转换成相应的分离BCD码
123d——000000010000001000000011b
010203H
①对加/减法进行调整的原理
例:69H92H49H
十29H十85H十78H
92H117HC1H
十06H十60H十66H
98H177H127H
②调整的依据(以组合BCD码为例)
•CF=AF=0且AL中高、低半字节数字码均合法,不修正。
•AF=1或AL低半字节出现非法码(A〜F)时,对AL加/减06H进行修正。
•CF=1或AL的高半字节出现非法码(A~F)时,对AL加/减60H进行修正。
•AF=CF=1,或AF=1且AL的高半字节出现非法码(A〜F)时,或者CF=1
且AL的低半字节出现非法码,力口/减66H进行修正。
③指令格式及功能
DAA、DAS组合BCD码的加、减十进制调整指令,该指令仅对
AL的内容进行调整,结果仍存于AL中。
AAA、AAS分离BCD码的加、减十进制调整指令,将AL中的内容
调整后送AH、ALO
AAM对两个分离BCD码的的乘积进行调整(仅对AL的内容),
结果存入AH、AL中(仅对无符号数有效)。
AAD对AX中的被除数(分离BCD形式)进行调整,
然后再执行DIV指令,所得结果为分离BCD码。
例:MOVAL,08H
ADDAL,09H;AL=11HCF=0AF=1
DAA
结果:AL=17H
例:Z=4*8,要求Z中存放的是分离BCD码。
ZDW0
I
I
I
MOVAL,04H;乘数和被乘数必须都是分离BCD码
MOVBL,08H
MULBL
AAM;将AX中的运算结果调整成分离BCD码
MOVZ,AX;Z=0302H
三、逻辑运算指令和移位指令
1)逻辑运算指令
逻辑与、或、异或、测试指令(AND、OR、XOR、TEST)
格式:AND'A
OR0P1,0P2;0P1yV>op2-►0P1
XOR©
TEST0P1,OP2;0P1AOP2
OPKOP2均可为寄存器、存储器操作数,0P2也可是立即数。
该类指令固定使CF为0,并根据运算结果影响其他状态标志。
逻辑非指令NOT
格式:NOT0P1;0P1<-0Pl
例:说明以下指令的功能。
ANDAL,OFEH;AL寄存器的DO位清零
ORAL,01H;AL寄存器的DO位置1
XORAL,SOH;AL寄存器的D7位求反
MOVAL,35H
ANDAL,OFH;AL=05H
MOVCL,09H
ORCL,OFOH;CL=F9H
MOVBL,78H
XORBL,OFOH;BL=88H
2)移位指令
算术左移SAL
①左移指令格式:0P1,OP2
逻辑左移SHL
功能:
OP1可为8位、16位或32位的寄存器、存储器操作数。
0P2为移位次数,可用立即数或CL表示。
②右移指令格式:算术右移SAR
0P1,0P2
逻辑右移SHR
功能:
SARAL,1
SHRAL,1
486
CODESEGMENT
ASSUMECS:CODE
START:MOVAL,OFFH;AL=1111HUB
SALAL,4;算术左移AL=11110000B
MOVAL,80H;AL=10000000B
SARAL,4;算术右移AL=11111000B
MOVAL,OFFH;AL=1111HUB
SHLAL,4;逻辑左移AL=11110000B
MOVAL,SOH;AL=10000000B
SHRAL,4;逻辑右移AL=00001000B
④循环左移指令ROL/RCL
格式:ROL/RCL0P1,0P2
功能:——CF1—D7-----------------DO-
RCLROL
⑤循环右移指令ROR/RCR
格式:ROR/RCR0P1,0P2
RORRCR
0P1可为8位、16位或32位的寄存器、存储器操作数。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南省三亚市中沙群岛的岛礁及其海域2022年公务员考试《行政职业能力测验》临考冲刺试题含解析
- 社区垃圾分类宣传活动方案
- 人教版2024年中考地理模拟试卷及答案5(含两套题)
- 社会保险学智慧树知到期末考试答案章节答案2024年贵州财经大学
- 摄影与摄像智慧树知到期末考试答案章节答案2024年青岛工学院
- 非理性繁荣读后感 3篇
- PNU-100766-d8-PNU-100766-d8-生命科学试剂-MCE
- Nε-Carboxymethyl-L-lysine-CML-生命科学试剂-MCE
- Menthol-d2-生命科学试剂-MCE
- FZ∕T 54114-2019 有色锦纶6牵伸丝
- 1.1悄悄变化的我课件(19张PPT)
- 优质护理服务
- 急性肾盂肾炎教学查房33张幻灯片
- 加强涉外法律服务实施方案
- 2021-2022学年山东省聊城市高二下学期期末物理试题(含答案)
- (高清正版)JJF(浙)1090—2014薄片千分尺校准规范
- DB36T 943.8-2021 中小型水利水电工程单元工程施工质量验收评定规程 第8部分:电气设备安装工程
- 浙江大华技术股份有限公司
- 建设工程设计合同示范文本 GF—2015—0210
- 2020上外版高中英语必修一~三单词表
- GB∕T32020-2015夹层玻璃用聚乙烯醇缩丁醛中间膜.pdf
评论
0/150
提交评论