微机原理及应用 1查表指令例数据段中存放有一张 ASCII码转换表,
设首地址为 2000H,
现欲查出表中第 11
个代码的 ASCII码
( 设 DS=4000H)
30
31
32
...
39
41
42
...
45
46...
42000H+0
42000H+11
‘0’
‘1’
‘2’
‘9’
‘A’
‘B’
‘E’
‘F’
如下指令实现:
MOV BX,2000H
MOV AL,0BH
XALT
执行后得到 AL值??
微机原理及应用 2查表指令例可用如下指令实现:
MOV BX,2000H ;( BX) ← 表首地址
MOV AL,0BH ;( AL) ← 序号
XALT ; 查表转换执行后得到:( AL) =42H
微机原理及应用 3
8086指令系统传送类指令数据操作类指令串操作指令控制类指令本章要求微机原理及应用 4
数据操作类指令此类指令主要包括以下三种:
一,算术运算类指令二,逻辑运算指令三,移位指令四,小结返 回微机原理及应用 5
算术运算类指令
8086/8088指令系统中,具有完备的加、减、
乘、除算术运算指令,可处理不带符号或带符号的 8/16位二进制整数,以及不带符号的装配型 /拆开型十进制整数。
一,加法指令二,减法指令三,乘法指令四,除法指令五,BCD码运算指令返 回算术运算指令的执行大多对状态标志位会产生影响微机原理及应用 6
加 法 指 令
加法指令有以下三条:
一,不带进位位的加法指令 ADD
二,带进位位的加法指令 ADC
三,增量指令 INC
指令说明 …
返回微机原理及应用 7
不带进位位的加法指令
指令格式,ADD DST,SRC ; (DST) (DST)+(SRC)
指令功能,用来执行 2个字或 2个字节的相加操作,结果放在原来存放的目的操作数的地方。
例如:
ADD AL,50H ; AL和 50H相加,结果放在 AL中
ADD AX,[BX+2000H] ; BX+2000H和 BX+2001H所指;的两单元的内容和 AX的内容;相加,结果放在 AX中。
返 回示例注意,ADD指令的执行对全部 6个状态标志位都产生影响微机原理及应用 8
带进位位的加法指令
指令格式:
ADC DST,SRC ;(DST) (DST)+(SRC)+CF
指令功能:
指令格式、对操作数的要求、对标志位的影响与 ADD指令完全一样,指令执行时,将进位标志
CF的值加在和中。
ADC指令多用于多字节数相加,使用前要先将 CF
清零。
示例 返回微机原理及应用 9
ADC和 ADD指令示例例:有两个四字节的无符号数相加,这两个数分别放在
2000H和 3000H开始的存储单元中,低位在前,高位在后,和放在 2000H开始的存储单元中:
MOV SI,2000H;
MOV AX,[SI];
MOV DI,3000H;
ADD AX,[DI];
MOV [SI],AX;
MOV AX,[SI+2];
ADC AX,[DI+2];
MOV [SI+2],AX;
微机原理及应用 10
ADD指令例例题,MOV AL,78H
ADD AL,99H
指令执行后 6个状态标志位的状态标志位状态,CF= SF= AF=
ZF= PF= OF=
01111000
+ 10011001
000100011
返回微机原理及应用 11
增 量 指 令
指令格式,INC OPR ; (OPR) (OPR)+1
指令功能,只有一个操作数,操作数内容加 1。
这条指令一般用在循环程序中修改地址指针和循环次数,但该指令不影响进位标志 CF的状态。
例如:
INC AL ; 将 AL中的内容加1
INC CX; 将 CX中的内容加1
返回不能是段寄存器或立即数微机原理及应用 12
加 法 指 令说 明
在 ADD,ADC,INC指令中,除 INC指令不影响 CF标志位外,它们都影响状态标志位( AF,OF,PF,SF,ZF,CF),其中主要是
OF,SF,ZF,CF四种标志位。
ADD,ADC,INC这三条加法指令都可以完成字或字节运算。
返回微机原理及应用 13
减 法 指 令
减法指令主要有以下五条:
一,不带借位的减法指令 SUB
二,带借位的减法指令 SBB
三,减量指令 DEC
四,取补指令 NEG
五,比较指令 CMP
指令说明 …
返回微机原理及应用 14
不带借位的减法指令
指令格式,SUB DST,SRC ; (DST) (DST)-(SRC)
指令功能,完成 2个字或 2个字节的相减操作。
例如:
SUB BX,CX ;将 BX中的内容减去 CX中的内;容,结果在 BX中
SUB [BP+2],CL ;将 SS段的 BP+2所指的单元;中的值减去 CL中的值,结;果放在 BP+2所指的单元中返回?对标志位的影响与 ADD指令同微机原理及应用 15
带借位的减法指令
指令格式:
SBB DST,SRC; (DST) (DST)-(SRC)-CF
指令功能:
形式和功能同 SUB,指令执行减法运算时,还要减去 CF的值。
例如:
SBB AX,2030H ; 将 AX的内容减去立即数;2030H,并减去进位位 CF;的值返回微机原理及应用 16
减 量 指 令
指令格式:
DEC OPR ; (OPR) (OPR-1)
指令功能:
只有一个操作数,执行时,将操作数的值减 1,
再将结果送回操作数。指令对操作数的要求与
INC相同,常用于在程序中修改计数值例如:
DEC AX ;将 AX的内容减 1,再送回 AX中
DEC BL ;将 BL的内容减 1,再将结果送回 BL中微机原理及应用 17
取 补 指 令
指令格式,*
NEG OPR ; (OPR) 0-(OPR)
或 (OPR) 0FFFFH-(OPR)+1
指令功能,对指令中给定的操作数取补,再将结果送回操作数。
例如:
NEG AL ; 将 AL中的数取补,送回 AL
NEG CX ; 将 CX中的内容取补,送回 CX
返回微机原理及应用 18
取 补 指 令 说 明
当操作数的值为 -128(80H)或 -
32768(8000H),求补后结果没有变化。
NEG指令影响标志位,AF,OF,PF,SF,ZF,CF,
此指令执行时,总是使 CF=1,只有操作数为 0时,CF=0,因为是 0减操作数之故。
返回微机原理及应用 19
比 较 指 令
指令格式:
CMP OPR1,OPR2 ; (OPR1)-(OPR2)
指令功能,比较指令 CMP也是执行两个数相减操作,但不送回相减的结果,只是影响标志位。
可作为条件转移指令转移的条件。指令对操作数的要求及对标志位的影响同 SUB指令。
例如:
CMP AX,2000H ; 将 AX的内容和 2000H相比较,结果影响标志位。
返回
表微机原理及应用 20
比 较 指 令
表 CMP指令执行后标志位的状态目的的操作数与源操作数的关系 CF ZF SF OF
带符号位的操作数无符号位的操作数目的操作数 源操作数等于小于小于大于大于目的操作数 源操作数等于低于高于
0 1 0 0
— 0 1 0
— 0 0 1
— 0 0 0
— 0 1 1
0 1 0 0
1 0 — —
0 0 — —
微机原理及应用 21
CMP指令
两个无符号数的比较:
CMP AX,BX
若 AX > BX CF=0
若 AX < BX CF=1
两个带符号数的比较
CMP AX,BX
两个数的大小由 OF和 SF共同决定
OF和 SF状态相同 AX > BX
OF和 SF状态不同 AX < BX
微机原理及应用 22
减 法 指 令 说 明
五条减法指令中,除 DEC指令不影响 CF标志位外,它们都影响状态标志位。
五条减法指令都可以完成字或字节运算。
返回微机原理及应用 23
乘 法 指 令
乘法指令采用隐含寻址,隐含的是存放被乘数的累加器 AL或 AX及存放结果的 AX,DX;将 DX寄存器看成是 AX
寄存器的扩展,当得到 16位乘积时,结果放在 AX中;
当得到 32位乘积时,结果放在 DX和 AX两个寄存器中,
DX为乘积的高 16位,AX为乘积的低 16位。
若运算结果的高位全为 0或 1,表示其为无效数据,
OF=CF=0
一,无符号的乘法指令 MUL
二,有符号的乘法指令 IMUL
返回微机原理及应用 24
无符号的乘法指令
指令格式:
MUL SRC ; 字节操作,(AX) (AL)*(SRC)
字操作,(DX,AX) (AX)*(SRC)
例如:
MUL BL ; AX AL*BL
MUL CX ; DX+AX AX*CX
注意,SRC不能是立即数微机原理及应用 25无符号数乘法指令例
MUL BYTE PTR[BX]

BX XXHAL × XXH
AX
返回微机原理及应用 26有符号的乘法指令
指令格式:
IMUL SRC ; 字节操作,(AX) (AL)*(SRC)
字操作,(DX,AX) (AX)*(SRC)
指令说明:
有符号乘法指令 IMUL,它在形式上与 MUL类似,
只是要求两个乘数必须均为有符号数。并且,两个乘法指令影响标志位 CF和 OF,其余四个标志位无意义。
微机原理及应用 27
IMUL指令例设,AL=FEH,CL=11H,求 AL与 CL的乘积 。
若为无符号数,则
MUL CL
结果,AX=10DEH
若将两操作数看作有符号数,则:
IMUL CL
指令执行后,AX=FFDEH=-34。
IMUL指令将 OPRD视为带符号数,运算时若操作数为负数,要先将操作数求补码,运算后再将结果求补 。
返回微机原理及应用 28
除法指令
执行除法指令时,规定除数必须为被除数的一半字长。
除法指令相关指令主要有以下四条:
一,无符号的除法指令 DIV
二,有符号的除法指令 IDIV
三,字节转换指令 CBW
四,字转换指令 CWD
返回小结微机原理及应用 29
除法指令无符号除法指令 DIV OPRD
有符号除法指令 IDIV OPRD
若 OPRD是字节数,则执行 AX/OPRD
若 OPRD是双字节数,则执行 DXAX/OPRD
注意,指令是隐含寻址方式,要求被除数是除数的双倍字长
AL=商
AH=余数
AX=商
DX=余数返回微机原理及应用 30
无符号的除法指令
指令格式:
DIV SRC ;
指令功能,实现两个操作数除法运算。
字节操作时,16位被除数在 AX中,8位除数为源操作数,
8位商在 AL中,8位余数在 AH中。表示为:
(AL) (AX)/(SRC)的商; (AH) (AX)/(SRC)的余数字操作时,32位被除数在 DX,AX中,其中 DX存高 16位,
AX中存低 16位,16位除数为源操作数,16位商在 AX中,16
位余数在 DX中,表示为:
(AX) (DX,AX)/(SRC)的商 ; (AX) (DX,AX)/(SRC)
的余数返回微机原理及应用 31
有符号的除法指令
指令格式:
IDIV SRC;
指令功能:
功能同无符号除法运算指令。但操作数必须是带符号数。商和余数也为带符号数,且和被除数符号相同。
微机原理及应用 32乘法和除法小结指 令 乘 数 被 乘 数 积
MUL CL CL (byte) AL AX
MUL BX BX (word) AX DX AX
乘法操作小结指 令 除 数 被 除 数 商 余 数
DIV CL CL (byte) AX AL AH
DIV BX BX (word) DX AX AX DX
除法操作小结返回微机原理及应用 33字节转换指令
指令格式:
CBW
指令功能:
将 AL寄存器中的符号位扩展到 AH中,即当 AL<80H时,
执行 CBW指令后,AH=00H;当 AL>=80H时,执行 CBW指令后,AH=FFH。
指令说明:
当两字节相除时,先执行 CBW指令,产生一个双倍长度的被除数。该指令不影响标志位。
返回微机原理及应用 34
字转换指令
指令格式:
CWD
指令功能:
将 AX寄存器中的符号位扩展到 DX中,即当 AX<8000H时,
执行 CWD指令后,DX=00H; 当 AX>=8000H时,执行 CWD指令后,DX=FFFFH。
指令说明:
当两字相除时,先执行 CWD指令,产生一个双倍长度的被除数。该指令不影响标志位。
返回微机原理及应用 35指令小结二微机原理及应用 36逻辑运算类指令
逻辑运算指令主要由以下几部分组成:
一,逻辑与指令 AND
二,逻辑或指令 OR
三,逻辑异或指令 XOR
四,逻辑测试指令 TEST
五,逻辑非指令 NOT
返回说明 …
微机原理及应用 37逻辑与指令
指令格式:
AND OPRD1,OPRD2
用途:
两操作数相,与,,结果送 OPRD1,一般用来对某些位清零,其它位不变,在操作数不变的情况下使 CF和 OF清零
例如:
AND AL,0FH ;指令实现对高 4位清零。
返回微机原理及应用 38逻辑或指令
指令格式:
OR OPRD1,OPRD2
用途,两操作数相,或,,结果送目标地址。一般用来对一个指定位置 1。在不改变操作数的情况下使 OF=CF=0
例如:
OR AL,02H ;指令实现对累加器中的 D1位置 1
返回微机原理及应用 39逻辑异或指令
指令格式:
XOR OPRD1,OPRD2
用途,两操作数相,异或,,结果送目标地址。
用来对某一寄存器清零,用于初始化寄存器。
例如,XOR AX,AX ; 使累加器 AX清零。
返回微机原理及应用 40
逻辑测试指令
指令格式:
TEST OPRD1,OPRD2
用途,一般用来检测指定位是 1还是 0,而这个指定位往往对应一个物理量。
例如,TEST AL,01
通过对 ZF的判断来了解最低位是否为 1。如果 ZF=1,说明结果为 0,即最低位为 0;如果 ZF=0,说明结果不为 0,
即最低位不为 0。
微机原理及应用 41逻辑非指令
指令格式:
NOT OPR ; (OPR) (!OPR)
操作,操作数按位取反再送回原地址
用途,常用来将某个数据取成反码,再加上 1,
便得到补码。指令中的操作数不能是立即数。
指令的执行对标志位无影响
例,NOT BYTE PTR[BX]
返回微机原理及应用 42
逻辑运算指令说明
五种逻辑运算指令中,NOT指令不允许使用立即数,其它四条指令除非源操作数是立即数,
否则至少有一个操作数必须存放在寄存器中,
另一操作数则可以用任意寻址方式。,非,
运算指令要求操作数不能是立即数
NOT指令不影响标志位,其它四种指令将使 CF
和 OF为 0,AF位无定义,而 SF,ZF和 PF则根据运算结果设置。
微机原理及应用 43例题讲解设( CH)= 0111 1001,TESTVAL = 1110
0011,下列操作分别执行时,各指令执行后
( CH)=?
OR CH,TESTVAL
AND CH,TESTVAL
XOR CH,TESTVAL
TEST CH,0000 0100B
XOR CH,1111 1111B
微机原理及应用 44
OR(或)运算
0111 1001
1110 0011
1111 1011
OR
CH
TESTVAL
CH
微机原理及应用 45
AND与运算
0111 1001
1110 0011
0110 0001
AND
CH
TESTVAL
CH
微机原理及应用 46XOR异或运算
0111 1001
1110 0011
1001 1010
XOR
CH
TESTVAL
CH
微机原理及应用 47TEST命令的使用
0111 1001
0000 0100
0000 0000
TEST
CH
CH=0111 1001
CF=OF=0
SF=0
ZF=1
微机原理及应用 48
TEST 和 AND指令设( CH) = 10111101B,比较下面两指令的操作区别。
1011 1101
1110 0011
1010 0001
AND
CH
CH
1011 1101
1110 0011
1010 0001
TEST
CH
CH
AND CH,11100011B TEST CH,11100011B
(CH)=10111101B(CH)=10100001B
返回微机原理及应用 49移位指令
移位指令主要由以下两大类指令组成:
一,非循环移位指令二,循环移位指令返回说明 …
微机原理及应用 50非循环移位指令
此类指令主要实现对寄存器或内存单元中的 8
位或 16位操作数进行移位。它分逻辑移位指令和算术移位指令,共四条。
一,算术左移指令 SAL
二,逻辑左移指令 SHL
三,算术右移指令 SAR
四,逻辑右移指令 SHR
返回微机原理及应用 51算术左移指令
指令格式:
SAL OPR,CNT ;
指令功能:
OPR可以是除立即数以外的任何寻址方式。移位次数由 CNT决定,CNT可以是 1或 CL。注意如移位次数大于 1,则可在该指令之前把移位次数置于 CL寄存器中。
返回高 低CF 0
微机原理及应用 52逻辑左移指令
指令格式:
SHL OPR,CNT ;
指令功能:
说明:
( 1) SHL指令和 SAL指令功能相同,可实现有符号数和无符号数乘 2,如果左移后,最高位和 CF不同,则溢出标志 OF为 1。
( 2)根据 OF的值判断左移操作是否造成了溢出。
高 低CF 0
返回微机原理及应用 53算术右移指令
指令格式:
SAR OPR,CNT ;
指令功能:
说明,右移时,最高位保持不变。
用途,用于带符号数除 2。
高 低CF
返回微机原理及应用 54逻辑右移指令
指令格式:
SHR OPR,CNR ;
指令功能:
说明,逻辑右移时,最高位补零。
用途,用于无符号数除 2。
高 低CF 0
返回示例,设 (AH) = 10101101,指令 SHR AH,1 执行后,
(AH) = 01010110 CF = 1
微机原理及应用 55循环移位指令
循环移位指令主要由以下四条指令组成:
一,不带进位的循环左移指令 ROL
二,不带进位的循环右移指令 ROR
三,带进位的循环左移指令 RCL
四,带进位的循环右移指令 RCR
返回微机原理及应用 56不带进位的循环左移指令
指令格式:
ROL OPR,CNT ;
指令功能:
高 低CF
返回微机原理及应用 57不带进位的循环右移指令
指令格式:
ROR OPR,CNT ;
指令功能:
高 低CF
返回示例,设 (AH) = 10101101,指令 ROR AH,1执行后
(AH) = 11010110 CF = 1
微机原理及应用 58带进位的循环左移指令
指令格式:
RCL OPR,CNT ;
指令功能:
高 低CF
返回示例,设 (AH) = 10101101,CF = 0,指令 RCL AH,1
执行后 (AH) =
若执行指令 RCR AH,1后,
(AH)=
01011010 CF = 1
01010110 CF = 1
微机原理及应用 59带进位的循环右移指令
指令格式:
RCR OPR,CNT ;
指令功能:
高 低CF
返回微机原理及应用 60移位指令说明
所有移位指令影响标志位,CF,OF,PF,SF,ZF,
无 AF。
如果要移动若干位,则必须在 CL中指出移动位数,若移动一位,可在指令中直接给出。
可对字节或字操作,操作数可以是寄存器或内存单元。
微机原理及应用 61指令小结三返回微机原理及应用 62
指令小结二返回
O S Z A P C
源:通用寄存器,存储器源:通用寄存器,存储器
* * * * * o
* * * * * o
MUL 源
IMUL 源乘法
* * * * * *
* * * * * *
— — — — — —
— — — — — —
DIV
IDIV
CBW
CWD
除法源:寄存器,存储器,立即数 目标:寄存器,存储器源:寄存器,存储器,立即数 目标:寄存器,存储器目标:通用寄存器,存储器目标:通用寄存器,存储器源:寄存器,存储器,立即数 目标:寄存器,存储器
o o o o o o
o o o o o o
o o o o o ---
o o o o o 1
o o o o o o
SUB 目标,源
SBB 目标,源
DEC 目标
NEC 目标
CMP 目标,源减法源:寄存器,存储器,立即数 目标:寄存器,存储器源:寄存器,存储器,立即数 目标:寄存器,存储器目标:通用寄存器,存储器
o o o o o o
o o o o o o
o o o o o ---
ADD 目标,源
ADC 目标,源
INC 目标加法备 注状态标志 位指 令 格 式指 令类 型注,O代表对该标志位有影响微机原理及应用 63指令小结二
(续)
O S Z A P C
目标:通用寄存器,存储器 计数值,1或 CL,移位次数目标:通用寄存器,存储器 计数值,1或 CL,移位次数目标:通用寄存器,存储器 计数值,1或 CL,移位次数目标:通用寄存器,存储器 计数值,1或 CL,移位次数
o — — * — o
o — — * — o
o — — * — o
o — — * — o
ROL 目标,计数值
ROR 目标,计数值
RCL 目标,计数值
RCR 目标,计数值循环移位目标:通用寄存器,存储器 计数值,1或 CL,移位次数目标:通用寄存器,存储器 计数值,1或 CL,移位次数目标:通用寄存器,存储器 计数值,1或 CL,移位次数目标:通用寄存器,存储器 计数值,1或 CL,移位次数
o o o * o o
o o o * o o
o o o * o o
o o o * o o
SHL 目标,计数值
SAL 目标,计数值
SHR 目标,计数值
SAR 目标,计数值移位目标:通用寄存器,存储器源:寄存器,存储器,立即数 目标:寄存器,存储器源:寄存器,存储器,立即数 目标:寄存器,存储器源:寄存器,存储器,立即数 目标:寄存器,存储器源,8位或 16位立即数 目标:通用寄存器,存储器
— — — — — —
0 o o * o 0
0 o o * o 0
0 o o * o 0
0 o o * o 0
NOT 目标
AND 目标,源
OR 目标,源
XOR 目标,源
TEST 目标,源逻辑运算备 注状 态 标 志 位指 令 格 式指令类型注,O代表对该标志位有影响,*表示为任意值,— 不影响,0表示标志位置零返回