版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章
指令系统
n★★
§3.1概述
了解:
•指令及指令系统;
•指令的格式;
指令中的操作数类型。
3
一、指令与指令系统
指令:
控制计算机完成某种操作的命令
指令系统:
处理器所能识别的所有指令的集合
指令的兼容性:
同一系列机的指令都是兼容的o
4
二、指令格式
指令中应包含的信息:
「执行的操作
<运算数据的来源
:运算结果的去向
5
指令格式:
'零操作数指令操作码
单操作数指令操作码操作数
双操作数指令操作码操作数,操作数
<多操作数指令三操作数及以上
7
三、指令中的操作数
r表征参加操作的数据本身一立即数
「寄存器
表征数据存放的地方、地址
存储器
★¥
*
8
操作数:
立即数操作数:
表示参加操作的数据本身,可以是8位或16位
例:MOVAX,1234H
MOVL,22H
•立即数无法作为目标操作数
立即数可以是无符号或带符号数,其数值应在
可取值范围内★*
9
操作数:
寄存器操作数:
表示参加运算的数存放在指令给出的寄存器中,
可以是16位或8位。
•例:MOVAX,BX
MOVDL,CH
10
寄存器操作数
只有AX、BX、CX、DX可用于16位,也可拆
成两个8位用
•不允许用立即数对段寄存器直接赋值
H.Cj|II/11*\
■—-/《/■1MM
MOVAX,1234H\
MOVDS,axJ</
•cs段寄存器不允许被赋值
★¥
_____/
11
存储器操作数:
表示当前参加运算的数存放在存储器的某一个
存储器操作数
若兵给出偏移地址而没给出段地址,则默认使用
DS段,通过加段跨越前缀可改变默认关系
MOVAX,[1200H]
MOVAX,ES:[1200H]
对于双操作数指令来说,不允许两操作数同为存
储器操作数
//-*-I—1-*\
movax,[11OOH][5
mov[1200H],ax★*
13
J、指令字长与机器字长
指令字长由操作码的长度、操作数地址长度、
操作数个数决定;
8088/8086CPU采用变字长指令格式;
机器字长:
计算机能够直接处理的二进制数的位数。
14
五、指令的执行速度
指令的字长影响指令的执行速度
(常用指令的执行时间见表3・4)
对不同的操作数,指令执行的时间不同:
存储器——>立即数——寄存器
>
快!
15
§3.2寻址方式
寻找操作数所在地址的方法
★¥
*
16
一、立即寻址
指令中的源操作数是立即数,即源操作数是参
加操作的数据本身
•例:MOVAX,1234Hr—\/
MOV
17
指令中直接给出操作数的
偏移地址
例:MOVAX,[1200H]
数
据
偏移地址_
段
1200H22H
AHAL1201HX1±1H
1122¥
18
直接寻址方式下,操作数的段地址默认为数据
段,但允许段重设,即由指令定义段。
例:MOVAX,ES:[1200H]
19
三、寄存器寻址
参加操作的操作数在CPU的通用寄存器中。
例:MOVAX,BX
movBL,AX
四、寄存器间接寻址
参与操作的操作数存放在内存中,其偏移地址
为指令中的寄存器的内容。「
例:MOVAX,[BX]代
码
设(BX)=1200HMOV段
BX,SLDI—►默认在数据段DS
BP----------默认在堆栈段SS
22
寄存器间接寻址
基址寻址(间址寄存器为基址寄存
寄存器器BX,BP)
间接寻址
变址寻址(间址寄存器为变址寄存
器SLDI)
23
寄存器间接寻址举例
设DS=1200H,SS=1000H,;X=0001H,;P=0010H
SI=0011H,DI=0100H
movAL,[BX]12001单元内容送AL
movAL,[BP]10010单元内容送AL
movAL,[SI]12011单元内容送AL
movAX,[DI];
°oO
功能?
24
该寻址方式的形式多样,参见P103
25
0000
设DS=1000H,BX=j000A,分别选中不同的一
维表格,再通过偏移l0014
量即可以获得所选
表格中的具体单元
26
六、基址、变址寻址
操作数的偏移地址为一个基址寄存器的内容加
上一个变址寄存器的内容,操作数的段地址由
选择的基址寄存器决定
•例:MOVAX,[BX+SI]
七、基址、变址、相对寻址
操作数的偏移地址为一个基址寄存器的内容加
上一个变址寄存器的内容,再加上一个位移量。
•操作数的段地址由选择的基址寄存器决定
例:MOVAX,[BP+SI+DATA]
该寻址方式的形式多样,参见P104
28
设要选中二维表格中+单元的第3个字节,
已知DS=1000H,则可使BX=0100H,
SI=OOOAH,DATA=2
MOVAL,[BX+SI+DATA]★★
■■K29
八、隐含寻址
指令隐含了的一个或两个操作数的地址,即操
作数在默认的地址中
例:MULL
指令的执行:ALXBLAX
30
§3.38086指令系统
从功能上包括六大类:
r数据传送
算术运算
逻辑运算和移位
串操作
程序控制
I处理器控制
31
一、数据传送
通用数据传送
•输入输出
地址传送
标志位操作
32
1.通用数据传送
r一般数据传送指令
堆栈操作指令
<交换指令
查表转换指令
I字位扩展指令
特点:
该类指令的执行对标志位不产生影响
33
一般数据传送指令
一般数据传送指令MOV
格式:MOVdest,src
操作:srcdest
例:MOVAL,L
34
一般数据传送指令
•两操作数字长必须相同;
两操作数不允许同时为存储器操作数;
两操作数不允许同时为段寄存器;
在源操作数是立即数时,目标操作数不能是段
寄存器;
IP和CS不作为目标操作数,FLAGS一般也不
作为操作数在指令中出现。
35
一般数据传送指令
判断下列指令的正确性:
MOVAL,X
MOVAX,[SI]05H
MOV[BX][BP],BX
MOVDS,1000H
MOVDX,09H
MOV[1200],[SI]
36
一般数据传送指令应用例
将(*)的ASCII码2AH送入内存51000H开始的
100个箪元中:DS=5000H
MOVAX,5000H
MOVDS,AX
MOVDI,1000H
MOVCX,64H
MOVAL,2AH
AGAIN:MOV[DI],AL
INCDI;DI+1
DECCX;CX-1
JNZAGAIN;CXWO则继续*X-
HLT2A100.asm/
37
数据段中的分布
送上2AH后数据段中相应存储单元的内容改
变如下:
DS:10002A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2A
DS:10102A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2A
DS:10202A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2A
DS:10302A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2A
DS:10402A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2A
DS:10502A2A2A2A2A2A2A2A-2A2A2A2A2A2A2A2A
DS:10602A2A2A2A000000000000000000000000
偏移地址[DI]
38
堆栈操作的原则
先进后出
以字为单位
40
堆栈操作指令
压栈指令PUSH
格式:PUSHOPRD
•出栈指令POP
格式:POPOPRD
压栈指令PUSH
•指令执行过程:
(SP)-(SP)-2
(SP)T-操作数高字节
(SP)-2-操作数低字节
42
压栈指令的操作
设AX=1234H,SP=1200H
执行PUSHAX指令后堆栈区的状态:
43
出栈指令POP
•指令执行过程:
(SP)——>操作数低字节
(SP)+1-操作数高字节
(SP)-(SP)+2
J*44
出栈指令的操作
执行POPAX
堆栈区的状态:代
PUSH码
段
45
堆栈操作指令说明
•指令的操作数必须是16位的;
操作数可以是寄存器或存储器两单元,但不能
是立即数;
•不能从栈顶弹出一个字给CS;
•PUSH和POP指令在程序中一般成对出现;
PUSH指令的操作方向是从高地址向低地址,而
POP指令的操作正好相反。
★★
★
46
堆栈操作指令例
PUSHAX
PUSHBX
POPAX
POPBX
如此,会使AX和
BX的内容互换
初始栈底★
47
48
查表指令
•格式:
XLAT
说明:用BX的内容代表表格首地址,AL内容
为表内位移量,BX+AL得到要查找元素的偏
移地址
•操作:[BX+AL]——►AL
•例:教材第教2页
49
查表指令例
6
数据段中存放有一42000H+030
310:
张ASCII码转换表,32P
设首地址为2000H,•••2,
现欲查出表中第1139
个代码的ASCII码419公
(设DS=4000H)42000H+11
•••B,
45
46
F,
50
51
字位扩展指令
将符号数的符号位扩展到高位;
指令为零操作数指令,采用隐含寻址,隐含的
操作数为及
•无符号数的扩展规则为在高位补0
52
字节到字的扩展指令
•格式:
CBW
・操作:将AL内容扩展到AX
•规则:若最高位=1,则执行后AH=FFH
若最高位=0,则执行后AH=00H
53
字到双字的扩展指令
格式:
CWD
操作:将AX内容扩展到DXAX
规则:若最高位=1,贝U执行后DX=FFFFH
若最高位=0,则执行后DX=0000H
54
字位扩展指令例
MOV44H
CBW;执行结果
MOVAX,OAFDEH
CWD
MOVAL,86H
CBW
★¥
*
55
2.输入输出指令
指令的格式及操作
指令的两种寻址方式
指令对操作数的要求
56
指令寻址方式
•直接寻址
直接给出8位端口地址,可寻址256个端口
•MlWtI
16位端口地址由DX指定,可寻址64K个端口
*4
58
I/O指令例
INAX,80H
MOVDX,2400H
INAL,DX
OUTDX,AX
OUT35H,AL
J*59
数据寄存器特有的习惯用法
AX:累加器。中间运算结果也多放于AX中;所
有I/O指令都通过AX与接口传送信息
BX:基址寄存器。在间接寻址中用于存放基地
址)
•CX:计数寄存器。用于在循环或串操作指令
中存放计数值
•DX:数据寄存器。在间接寻址的I/O指令中存
放I/O端口地址;在32位乘除法运算时,>、
放J
位数)*
3.地址传送指令
r取偏移地址指令LEA
<LDS指令
:LES指令
61
62
LEA指令
•比较下列指令:符号
地址
LEASLDATA1、
MOVSLDATA1.DATA1
MOVDX,
LEADX,
BX=1100H
63
Datasegment
DATA1DW1234H
DW1010H
DW1A0CH
DATAends
设DS=1000H
LEASLDATA1
MOVSI,[DATA1]
64
LEA指令在程序中的应用
将数据段中首地址为MEM1的50个字节的数据
传送到同一逻辑段首地址为MEM2的区域存放。
编写相应的程序段
LEA指令在程序中的应用
▼
66
LEA指令在程序中的应用
J—CI
LEADLMEM2
MOVCL,50
NEXT:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
DECCL
JNZNEXT
LEAasm★
HLT
67
取远地址指针指令
LDSreg,MEM32
LESreg,MEM32
指令中源操作数是存储器某4个连续单元的偏
移地址,目标操作数是间址寄存器。
68
LDS指令例
DS=5000H
AX=2233H5120计134H
[12H
OOH
60H
33H
22H
LESDL[1200H]
MOVAX,ES:[DI]
41700H
数
据
m
4.标志位操作指令
「LAHF
隐含操作数AH
SAHF
PUSHF
隐含操作数FLAGS
〔POPF
LAHF,SAHF易
•LAHF;将FLAGS中的5位装入AH的对应位
D7DO
AH
D15••••DO
FLAGSSFZFAFPFCF
•SAHF;执行与LAHF相反的操作
76420--------------------'SZAPC★>
______/
・,
PUSHF,POPF
针对FLAGS的堆栈操作指令
将标志寄存器压栈或从堆栈弹出
74
例:编写一个程序,在屏幕上输出一个大写字母A
DOS的2号子功能:从屏幕上输出一个字符,
该字符的ASCH码存放在DL中
所有的DOS子功能的调用器功能号都是放在
AH中的(见P170)
75
codesegment
Assumecs:code
Start:movdl941h
movah,02h
int21h
movah,4ch
int21h
Codeends
Endstart
/r*76
二、算术运算类指令
r加法运算指令
减法运算指令
乘法指令
I除法指令
算术运算指令的执行大多
对状态标志位会产生影响
77
f普通加法指令ADD
<带进位位的加法指令ADC
「加1指令INC
加法指令对操作数的要
求与MOV指令相同
*4
78
一般数据传送指令mov
注:
•两操作数字长必须相同;
两操作数不允许同时为存储器操作数;
两操作数不允许同时为段寄存器;
在源操作数是立即数时,目标操作数不能是段
寄存器;
IP和CS不作为目标操作数,FLAGS一般也不
作为操作数在指令中出现。
79
ADD指令
•格式:
ADD0PRD1,0PRD2
•操作:
0PRD1+0PRD20PRD1
ADD指令的执行对全部6个
状态标志位都产生影响★★
______/
■■■■
ADD指令例
MOVAL,78H
ADDAL,99H
指令执行后6个状态标志位的状态
★★
★
81
ADD指令例
01111000
+10011001
口00010001
标志位状态:CF=SF=
AF=ZF=
★★
PF=OF=
*
82
ADC指令
指令格式、对操作数的要求、对标志位的影响
与ADD指令完全一样
•指令的操作:
0PRD1+0PRD2+CF___»0PRD1
•ADC指令多用于多字节数相加,使用前要先将
CF清零。
★年
______/
83
ADC指令例
有两个四字节无符号数相加,这两个数分别放
在偏移地址为2000H和3000H开始的存储单元,
低位在前,高位在后,要求进行运算,得到的
和放在2000H开始的内存单元
2000H78H3000H44H2000HBCH
2001H56HI3001HEEH2001H44H
2002H34H十3002H22H2002H57H
2003H12H3003H11H2003H
84
可用如下程序实现多字节加法
CLC;清进位位CF
MOVSI,2000H;取第一个数的首地址
MOVAX,[SI];将第一个数的低16位取到AX
MOVDI,3000H;取第二数个的首地址
ADDAX,[DI];数一和数二的低16位相加
MOV[SI],AX;低16位相加结果送到
2000H,2001H单元
MOVAX,[SI+2];数一高16位送到AX中
;两位数的高16位连同进位位相加
MOV[SI+2],AX;高16位相加的结果送到A4
2002H,2003H年
★
85
INC指令
不能是段寄存器
格式:或立即数
操作:
0PRD+1OPRD
例:INC;YTEPTR[BX]
常用于在程序中修改地址指针*4
★
86
2.减法指令
C普通减法指令SU
考虑借位的减法指令S
<减1指令DEC
比较指令CMP
<求补指令NEG
减法指令对操作数的要求
与对应的加法指令相同
87
SUB指令
格式:
SUB0PRD1,0PRD2
•操作:
0PRD1-0PRD20PRD1
对标志位的影响与ADD指令同
★¥
*
88
SBB指令
指令格式、对操作数的要求、对标志位的影响
与SUB指令完全一样
•指令的操作:
0PRD1-0PRD2-CF0PRD1
SBB指令多用于多字节数相减,使用前要先
将CF清零。i4
89
DEC指令
格式:
•操作:
OPRD-1OPRD
寸操作数的要求与INC相同
指令常用于在程序中修改计数值
90
应用程序例
MOVBL,2
NEXT1:MOVCX,OFFFFH
NEXT2:DECCX
JNZNEXT2
DECBL
JNZNEXT1
HLT
NEG指令
8/16位寄存器或
存储器操作数
0-OPRDOPRD
指令的两点注意请
参见教材P121
用0减去操作数,相当于
对该操作数求补码
CMP指令
格式:
CMP0PRD1,0PRD2
•操作:
0PRD1-0PRD2
指令执行的结果不影响目标操作数!
93
CMP指令
用于比较两个数的大小,可作为条件转移指令
转移的条件
指令对操作数的要求及对标志位的影响与SUB
指令相同
★★
CMP指令
两个无符号数的比较:
CMPAX,匚二
二二3XCF=O
二二:3XCF=1
两个带符号数的比较
CMPAX,匚二
两个数的大小由OF和SF共同决定
rOF和SF状态相同AX>BX
〔OF和SF状态不同
AX<BX
95
LEABX,MAXGOON:DECCL
LEASLBUFJNZNEXT
MOVCL,20MOV[BX],AL
MOVAL,[SI]HLT
NEXT:INCSI
CMPAL,[SI]
JNCGOONCF=0转
程序功能
XCHG[SI],AL
96
程序功能
BUFXXH
XXH
找20个数中最大的数,XXH
并将其存放在MAX单
元中
MAX
97
3.乘法指令
无符号的乘法指令MUL
带符号的乘法指令IMUL
乘法指令采用隐含寻址,隐含的是存放被乘
数的累加器AL或AX及存放结果的AX,DX;
若运算结果的高位全为0或1,表示其为无效
数据,OF=CF=0
操作码后所跟的操作数不能使立即数」¥
_____/
98
★
99
数为负数,要先将操作数求补码,运算后再将结
果求补。最终还要对运算结果进行修正。
101
IMUL指令例
设:AL=FEH,CL=11H,求AL与CL的乘积。
•若为无符号数,则MULCL
结果:AX=10DEH
若将两操作数看作有符号数,则:
IMULCL
指令执行后:AX=FFDEH=-34o
102
4.除法指令
无符号除法指令DIVOPRD
有符号除法指令IDIVOPRD
「AL=|$
若OPRD是字节数,则执行AX/OPRD
.一人11=余数
「AX=W
若是双字节数,则执行
OPRDDXAX/OPRD,DX=余数
指令要求被除数是除数的双倍字长★★
103
5.BCD码调整指令
共6条,均为隐含寻址方式,隐含的操作数是
AL或AL、AH;
不能单独使用,要紧跟在相应的算术运算指令
之后;
执行结果为压缩BCD码或扩展BCD码表示的
进制数。
104
加法指令应用例
计算2658+3619二?
结果存放在SUM单元。
•设被加数和加数的
每一位都以ASCH码数
据
形式存放在内存中,段
低位在前,高位在
后。
105
加法指令应用例
LEASLSTRING1INCSI
LEADLSTRING2INCDI
LEABX,SUMINCBX
MOVCX,4DECCX
CLCJNZNEXT
NEXT:MOVAL,[SI]
ADCAL,[DI]
AAA
MOV[BX],AL
106
SuccesswithMoneyandJoy
附落人生心语
•成功是一种观念
•致富是一种义务
•快乐是一种权利
•每个人都有能力、有义
务、有权利办到成功
致富快乐
附赠人生心语
成成功不是打败别人
功成功不是超越别人
成功不是名、利、权的获得
致拥有健康的身体
丰足的物质生活
富平衡的心理状态
又才能拥有成功
快SuccesswithMoneyandJoy
战胜自己
乐贡献自己
扮演好自己的历史角色
才能超越自己
融入成功里
附赠人生心语
知人者智,自知者明,胜人者力,自
胜者强。
——老子
附赠人生心语
•成功必须靠百分之九十八的辛勤血
汗,加上百分之二的天才灵感。
•世界上注定只有百分之二十的人会成
功。
附赠人生心语
成犹太谚语中有一句名言,
功会伤人的东西有三个:苦恼、争吵、空的钱包。
其中最伤人的是——空的钱包。
致金钱本身并没有善恶,
但没有钱,
富却的确是一件不幸的事情。
又所以,我们必须学习
快SuccesswithMoneyandJoy
重视财富,
乐管理财富,
更重要的是栗学会
正确地
使用自己的财富。
附赠人生心语
重财---重视自己的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第7部分 比和比例-小学数学必 备知识手册
- 技术支持年终工作总结12篇
- 苏州大学独生子女大学生体育行为的多维度解析与策略研究
- 芳香醇选择性氧化合成芳香羰基化合物:反应机制、影响因素及应用研究
- 芪黄益肺合剂对慢性阻塞性肺疾病急性加重期的疗效及作用机制探究
- 芒萁黄酮:纯化、分离与抗氧化活性的深度探究
- 2026年理财规划师之三级理财规划师从业资格考试真题含答案详解【轻巧夺冠】
- 2026丰厚的投资金融市场行业市场供需分析及投资评估规划分析研究报告
- 2026中国工业大麻政策环境与产业链优化策略专题报告
- 2026中国工业大麻在土壤修复中的生态效益评估
- 2025中国机械工业集团有限公司审计中心项目主审岗招聘6人笔试历年典型考点题库附带答案详解
- 2026年全国安全生产月主题宣讲课件
- 2026年人教版(新教材)小学信息技术三年级全一册第二学期(第5-8单元)期末质量检测卷及答案(二套)
- 招商运营管理中心工作手册
- 2026年陕西好猫卷烟材料有限责任公司招聘(10人)笔试参考题库及答案解析
- 四川-(2025年)高考四川卷历史高考真题(含答案)
- 语文+答案百师联盟2026届高三4月22日适应性模拟考试(.22-4.23)
- 2026三年级科学下册全册知识点(教科版)
- 2026年内蒙行测真题及答案
- 冷链设备维护保养计划
- 北京市2025北京人民艺术剧院招聘6人笔试历年参考题库典型考点附带答案详解
评论
0/150
提交评论