《微型计算机原理》第3章 8086,8088的指令系统
第3章80888086指令系统(老师用的课件哦)
第3章 8088/8086指令系统
当前被处理的源串元素由(DS)*16+(SI)所形成的 有效地址决定,在串操作指令中,当前被处理的目的串 元素由(ES)*16+(DI)所形成的有效地址决定。SI及DI 内容的自动增减由标志寄存器中的DF方向标志决定, 若DF=0,为自增;若DF=1,为自减。SI及DI增减量 每次可以是1,也可以是2,这由所处理的串是字节操作 还是字操作来决定。
第3章 8088/8086指令系统
注意,在汇编指令中,端口地址及间接寻址寄存器 DX,都不用方括号括起来,但此处不作为立即数或寄 存器寻址对待,应引起注意。
以上介绍的各种寻址方式,是学习汇编语言的第一 个难点。
我们要求读者准确理解并记住前面的三种寻址方式, 即立即数寻址、寄存器寻址和直接寻址,并注意到它 们处理的操作数是立即数操作数、寄存器操作数和存 储器操作数。下面我们再重点对其它几种有关存储器 操作数的寻址方式归纳一下。
第3章 8088/8086指令系统
图3.3 直接寻址示意图
第3章 8088/8086指令系统
例:MOV AX,DS:[22A0H] 即 将 DS 左 移 4 位 后 , 与 22A0H 相 加 得 到 物 理 地 址 322A0H,然后从322A0H所指的两个连续的存储单元 中读出数据AB12H,送至AX寄存器中。具体操作时, 先从这两个连续的存储单元中的低地址单元读出低8位 数据12H送至AL中;接着从其高地址单元中读出高8位 数据ABH送至AH中。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
微机原理第3章8086指令系统
微机原理第3章8086指令系统8086是Intel公司推出的一种16位微处理器,是x86架构的第一代处理器。
8086指令系统是8086微处理器所支持的指令集合,本章将介绍8086指令系统的基本特性和指令编码格式。
8086指令系统采用变长指令编码格式,指令长度可以是1个字节到多个字节,提供了多种寻址方式和丰富的操作类型。
8086指令系统共支持256条标准指令,可以执行各种算术逻辑运算、数据传输和控制流操作。
8086指令由操作码和操作数组成。
操作码指示了执行的具体操作,操作数则是操作码所针对的数据。
8086指令系统提供了多种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址和基址变址寻址等。
立即寻址是将常数或数据直接作为操作数,如MOVAX,1000H,表示将立即数1000H传送到AX寄存器。
直接寻址是通过指定一个内存单元的地址来作为操作数,如MOVAL,[BX],表示将BX寄存器指向的内存单元的内容传送到AL寄存器。
寄存器寻址是直接将一个寄存器作为操作数,如MOVAX,BX,表示将BX寄存器的内容传送到AX寄存器。
除了寻址方式,8086指令系统还提供了多种操作类型,如算术逻辑运算、数据传输和控制流操作等。
算术逻辑运算可以进行加、减、乘、除等数学运算,如ADD、SUB、MUL、DIV等指令。
数据传输可以进行数据的读取和存储操作,如MOV、PUSH、POP等指令。
控制流操作可以用于程序的跳转和条件判断,如JMP、JZ、JC等指令。
8086指令系统还支持多种数据类型的操作,包括字节、字和双字等。
字节操作是对8位数据进行操作,字操作是对16位数据进行操作,双字操作是对32位数据进行操作。
指令的操作数大小可以根据需要选择合适的寄存器或内存单元。
总之,8086指令系统是8086微处理器所支持的指令集合,提供了多种寻址方式和操作类型,支持多种数据类型的操作。
通过掌握8086指令系统,可以编写出高效、精确的8086汇编程序,实现各种功能和算法。
第三章80868088指令系统
第三章80868088指令系统机器语言指令由二进制代码组成。
一条指令一般包含操作码(OP )和操作数两部分,操作码指明指令所完成的操作,操作数指出该指令在执行规定操作时所需的信息。
指令中用于说明操作数(一般指源操作数)所在地址的方式被称为寻址方式。
(8086的寻址方式分两类:数据寻址方式和转移地址的寻址方式)3.2.1数据寻址方式 P51 1.立即寻址:数据是8位或16位,直接放在指令的最后一个(8位)或两个字节(16位)中,这样的数据称为立即数。
MOV AL ,80HADD AX ,0F000HMOV AX ,1234HADD AL ,10H操作码字节AX操作数字节操作码字节操作数(a )MOV AL , 80H(b )MOV AX , 1234H图3-2 立即寻址方式指令举例 P522. 寄存器寻址:数据存放在指令规定的寄存器中。
MOV CL ,DL MOV AX ,BX注意:在双操作数指令中源操作数寻址方式和目的操作数寻址方式。
CL DL AXAL AHBL BH (a )MOV CL , DL (b )MOV AX , BX图3-3 寄存器寻址方式指令举例 P523. 直接寻址:操作数在存储器中,其16位有效地址,即段内偏移地址在指令码中,占两个字节。
MOV AL ,[1064H] ;设(DS )=2000HADD AX ,[2000H]代码段操作数偏移地址数据段图3-4 直接寻址方式指令举例 P53操作数数据4. 寄存器间接寻址:操作数在存储器中,其16位有效地址EA 在指令指定的基址寄存器BX 或变址寄存器SI 、DI 中。
BX EA = SIDI 注意:新教材中有BP 【例】 MOV AX ,[SI] MOV [BX] , AL 如果:(DS )=3000H ,(SI )=2000H ,(BX )=1000H,(AL )=64H注意:默认段地址寄存器为DS 以上为二字节指令;MOV AX,[BP]为三字节指令;实为指令MOV AX ,[BP+0]的简写!图3-5 寄存器间接寻址方式指令举例 P535. 寄存器相对寻址:操作数在存储器中,其效地址是一个8位或16位的位移量与一个基址寄存器或变址寄存器的内容之和。
微机原理第三章 80868088指令系统3-1基本数据类型
. . .
YYH XXH
AX
AH
. . .
数 据 段
寄存器间接、寄存器相对、基址变址、相对 基址变址四种寻址方式的比较:
寻址方式 指令操作数形式
寄存器间接 —— 只有一个寄存器(BX/BP/SI/DI之一) 寄存器相对 —— 一个寄存器加上位移量 基址—变址 —— 两个不同类别的寄存器 相对基址-变址 —— 两个不同类别的寄存器加上位移量
低
AL
操作码 02H
31H
代 码 段
高
2 直接寻址
指令中直接给出操作数的16位偏移地址,为了区别
于立即数,偏移地址用“[ ]”括起;
偏移地址也称为有效地址(EA, Effective Address);
默认的段寄存器为DS;
例:
MOV
MOV
AX , [2A00H]
;默认段寄存器为DS
DX , ES: [2A00H] ;指定段寄存器为ES
数 据 段
CDH ABH
3 寄存器寻址
操作数放在某个寄存器中;
源操作数与目的操作数字长要相同;
寄存器寻址与段地址无关; 例: MOV AX, BX MOV [3F00H], AX
MOV CL, AL
错误例: × MOV AX, BL × MOV ES: AX, DX ; 字长不同 ; 寄存器与段无关
有符号数 80H~7FH(-128~127) 8000H~7FFFH(-32768~32767)
2 寄存器操作数
存放在8个通用寄存器或4个段寄存器中的操作数
AX BX CX DX AH BH CH DH AL BL CL DL
第3章 80888086指令系统
①立即寻址 ②直接寻址 ③寄存器寻址 ⑤寄存器相对寻址 ⑥基址-变址寻址 ⑦相对的基址-变址寻址
在8086指令系统中,寻址方式可分为8种:
④寄存器间接寻址
⑧隐含寻址
14
一. 立即寻址
操作数直接由指令给出——立即数
例: MOV AX, 1C8FH MOV BYTE PTR[2A00H], 8FH MOV 2A00H, AX ; 错误!
(BX) (BP) (SI) (DI)
物理地址=(DS)左移四位+(BX)或(SI)或(DI) 物理地址=(SS)左移四位+(BP)
例: MOV AX, [BX] MOV CL, CS:[DI] × MOV AX, [DX] × MOV CL, [AX]
21
例3-5 MOV AX,[SI]
若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H 则指令执行后,(AX)= 3344
DS BX + SI
8000 2000 1000
操作码
. .
代码段
83000 83000H
AX AH AL
. . .
YY XX 数据段
. . .
30
七. 相对的基址-变址寻址
在基址-变址寻址的基础上再加上一个相对位移量 注意事项同基址-变址寻址
EA =
(BX)
(BP)
+
(SI) (DI)
+
指令中直接给出操作数的16位偏移地址
偏移地址也称为有效地址(EA, Effective Address)
默认的段寄存器为DS,但也可以显式地指定其 他段寄存器——称为段超越前缀
第3章 80868088指令系统3(算术运算指令)PPT课件
INC SI
;(SI)+1
DEC CX
;(CX)-1
JNZ LL
;若(CX)0,则转LL
思考:若最高位有进位,如何改?
11
ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:
SF=
1 结果为负 0 否则
ZF=
1 结果为0 0 否则
CF=
1 0
和的最高有效位有向高位的进位 否则
OF= 1 两个操作数符号相同,而结果符号与之相反
无符号数 有符号数
0000 1000
8
+8
+1111 1101 10000 0101
结果5
+253 261 CF=1
+(-3) +5
OF=0
③ 有符号数溢出
0000 1000
8
+8
+0111 1101 +125 +(+125)
1000 0101 133
+133
结果-123
CF=0
OF=1
(补码表示)
2
• 两个8位数相加时有4种情况:
无符号数范围0~255 带符号数范围-128~127 ①无符号数和有符号数均不溢出
二进制相加 0000 1000 +0001 1110 0010 0110
无符号数加 8
+ 30 38
有符号数加 +8
+ (+30) +38
结果38
CF=0
OF=0
3
② 无符号数溢出
作用类似于C语言中的”--”操作符。
格式:DEC opr 操作:opr←(opr)-1
第3章 8086 8088指令系统
如: MOV AX,[BX] [DI]或写成MOV AX,[BX+DI] 设(DS)=2000H,(BX)=0256H,(DI)=6694H,则 PA=(DS)×16+(BX)+(DI)=268EAH 指令执行后,将把268EAH和268EBH两单元的内容送 到AX中,即(AH)=3BH,(AL)=20H 由于基址寄存器和变址寄存器的内容都是可以修改, 因此,在处理二维数组和表格时用这种寻址方式较 为方便。
29
3)不能用CS作目的操作数,即CS寄存器的内容不得 随意改变,CS和IP的值一般只能在转移指令时改变 4)不在段寄存器间直接传送数据 5)不允许用立即数作目的操作数dst 6)不允许直接向段寄存器传送立即数,如果需要, 则应通过通用寄存器或存储单元传送。
30
2、堆栈操作指令PUSH,POP
3.1.2 寻址方式
包括:操作数的寻址方式和指令的寻址方式。 指令通常顺序存放,因此,指令寻址只要通过对指 令指针IP内容自动加1,便可形成下一条指令地址。 当遇到转移或调用指令时,按照转移目标修改IP或 CS,因此,指令的寻址主要是转移指令和调用指令 的转移目的地址的形成方式,这里先讨论操作数的 寻址方式
②通用寄存器和段寄存器间传送
MOV MOV
③通用寄存器和存储单元间传送
MOV MOV
AL,[BX] ;AL ←(BX) [1400H],BX; (1400H)←BX
27
④段寄存器和存储单元之间的传送
MOV
DS,[3000H] ;将3000H和3001H两字节单元的 内容送到DS MOV [BX+SI],CS ;CS的内容送到BX+SI和BX+SI+1 所指的两个字节存储单元
第三章 8086 8088指令系统
MOV MOV MOV MOV MOV MOV MOV
AX , 3102H AX , [3102H] SI , AX AX , [SI] AX , [BX ] DATA AX , [BX][SI] AX, [BX] [DI] DATA
MOV AX , MOV [3102H] , MOV [SI] , MOV [BX] DATA , MOV [BX][SI] , MOV [BX] [DI ]DATA,
[例3-7] 指令 MOV AX,DATA[BX]
设:(DS)=6000H,(BX)=1000H,DATA=08H, 则物理地址=60000H+1000H+08H= 610008H
指令的执行情况如图3-6所示。执行结果为AX=5566h
DS BX ﹢) 6000 1000 0008 61008 位移量 高8位 0 位移量 低8位
MOV AX,[6000H]
③立即数到寄存器的传送
MOV MOV AL,5 BX,3078H ; 将立即数5送累加器AL ; 将立即数3078H送寄存器BX
④立即数到存储器的传送
MOV BYTE PTR[BP+SI],5 MOV WORD PTR[BX],1005H ; 将5送堆栈段中偏移地址为BP+SI所指的单元中 ;1005H 送数据段中偏移地址为BX和BX+1两单元
图 3-4 寄存器寻址示意图
采用寄存器寻址方式,虽然指令操作码在代码段中,但操作数在内部寄存器中,
指令执行时不必通过访问内存就可取得操作数,故执行速度较快。
3.2.4寄存器间接寻址
寄存器间接寻址 ——是用寄存器的内容表示操作数的偏移地址。此时寄存
器中的内容,只是存放数据的偏移地址,操作数本身在内存储器中。
微型计算机原理第3章_1_寻址方式
8086/8088的寻址方式 第三章 8086/8088的寻址方式 和指令系统主 讲 : 乔 瑞 萍学习要点数据寻址的8种寻址方式,I/O端口寻址的 2种寻址方式 程序转移地址的4种寻址方式 掌握8086指令(操作码助记符,可以使用 的寻址方式) 了解80386新增寻址方式和指令3.1 计算机指令格式1、汇编指令格式: OP.C OP.D (Operating Code、Operating Data) 注:OP.C指操作码助记符 OP.D指操作数部分,又称地址码。
(实际上的OP.C、OP.D都应该是二进制数,即 机器码。
)2、根据OP.D中地址的个数,指令可分为: 1)零地址指令:只有OP.C,没有OP.D。
2)一地址指令:单OP.D。
3)二地址指令:双OP.D。
4)三地址指令:三OP.D。
3. 指令长度与字长的关系指令长度主要取决于OP.C的长度 OP.D地址的长度 OP.D地址的个数几个概念: 1)指令的长度指其机器码的长度,是字节的简 单倍数; 2)现代计算机广泛采用变字长指令格式:并非 所有指令的长度一致。
3)指令长度与其执行时间没有必然的联系,短 指令也可能执行时间长。
4)指令字长与内存的编址单位及CPU的机器字 长有关。
3.3 指令格式1、80x86指令编码格式(P81~83) 指令码是指每条指令所对应的二进制 编码,即机器码,这里只是要求大家了 解一下汇编指令如何翻译成机器码的, 即了解编译程序的工作,自学,不做要 求。
3.2 80X86的寻址方式 (addressing modes)P70,指令语句由操作码和操作数两部 分构成,操作码表示计算机执行什么操 作;操作数可能指明了参与操作的数本 身,或规定了操作数的地址。
8086/8088的寻址方式分为两类:数据寻址方式 转移地址寻址方式1)数据寻址方式(8种)(以通用传送指令MOV AX,SRC为例)定义:指令中用以说明或形成操作数有效地址 (Effective Adress)的方法,称为操作数的寻址 方式。
微型计算机基本原理与接口技术(第二版)教学课件ppt作者陈红卫主编第三章
MOV BL,39H ADD AL,BL AAA
微机原理
② AAS 减法的ASCII码调整指令 指令格式: AAS 执行操作:AL←把减法结果AL的内容调整到 非压缩的BCD码格式 AH←AH - 调整所产生的借位值 标志位的影响:AF、CF
微机原理
3.1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这种 寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
3.1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 3.1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 3.1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
3.2 8086/8088 CPU的指令系统 微机原理
3.2.2 算术运算指令
1.加法指令 ⑴ ADD 不带进位加法指令 指令格式:ADD DST,SRC 执行操作:(DST)←(SRC)+(DST)。 对标志位的影响:OF、SF、ZF、AF、PF、CF。
存储器 通用寄存器 立即数
存储器 通用寄存器 立即数
OR AL,20H 执行上述指令后AL=?
⑶逻辑非NOT 指令 指令格式:NOT OPR 执行操作: (OPR)←(OPR) 影响的标志位:无
微型计算机原理与接口技术课件-第三章指令系统和寻址方式
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“ES:”,这里的冒号“:”称为 修改
属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。
例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+
500H。
3.符号地址 在汇编语言中还允许用符号地址代替数值地
MOV CL,AH 注意:源操作数的长度必须与目的操作数一
致,否则会出错。例如,不能将AH寄存器的内 容传送到CX中去,尽管CX寄存器放得下AH的 内容,但汇编程序不知道将它放到CH还是CL中。
这种寻址方式的优点是:寄存器数量 一般在几个到几十个,比存储器单元少很 多,因此它的地址码短,从而缩短了指令 长度,节省了程序存储空间;另一方面, 从寄存器里取数比从存储器里取数的速度 快得多,从而提高了指令执行速度。
用汇编语言(即主要由指令系统组成的语言)编写的程 序称为汇编语言源程序,若直接将它送到计算机,机器
并不认识那些构成程序的指令和符号的含义,还必须由
汇编程序将源程序翻译成计算机能认识的二进制机器语
言指令(机器码)后,才能被计算机识别和执行,得到运算 结果。
8086指令系统采用变长指令,指令的长度可由l~6 字节组成。一字节指令中只包含8位操作码,没有操作数。 如清进位位指令CLC的机器码为1111 1000,可直接从指 令编码表中查到。对于大部分指令来说,除了操作码(不 一定是8位)外,还包含操作数部分,所以要由几个字节组 成。不同的指令,其操作码和寻址方式都是不一样的,
例如:AREA1 EQU 0867H MOV AX,AREA1
例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可
《微机原理与接口技术》徐惠民 微机原理与接口技术3章
数据传送指令
③ 两个段寄存器之间不能直接传送信息,也不允许 用立即寻址方式为段寄存器赋初值; (X) MOV DS, 100H; (X) MOV DS, ES;
④ 目的操作数,不能用立即寻址方式。
⑤ MOV指令不影响标志位
数据传送指令
2.堆栈指令
功能:从I/O端口输入数据至AL或AX.
输入指令允许把一个字节或一个字 由一个输入端口传送到AL或AX中。若端 口地址超过255时,则必须用DX保存端 口地址,这样用DX作端口寻址最多可寻 找64K个端口。
8086/8088通过 输入输出指令与 外设进行数据交 换;呈现给程序 员的外设是端口 (Port)即I/O地 址。
一般格式:
LES OPRD1,OPRD2
这条指令除将地址指针的段地址部分送入ES外,与 LDS类似。
例如: LES DI,[BX]
数据传送指令
6.标志寄存器传送(有四条标志传送指令)
⑴ LAHF (LOAD AH WITH FLAG) 将标志寄存器中的S、Z、A、P和C(即低8 位)传送至AH寄存器的指定位,空位没有定 义。
2、寄存器寻址
操作数就放在CPU的内部寄存器中,AX、BX、CX、DX、 DI、SI、SP和BP,不需要访问存储器。
例:INC CX MOV AX,BX 若执行前 AX =30A6H, BX =69EDH, CX =40D9H 则执行后 AX =69EDH, BX内容不变 CX =40DAH
3.1 8088/8086的寻址方式
– 操作数是指令执行的参与者,即各种操作的对象。 – 有些指令不需要操作数,通常的指令都有一个或两
个操作数,也有个别指令有3个甚至4个操作数。
第3章 8086(8088)CPU指令系统
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
3.存储器寻址(Memory Addressing)
4.1操作数寻址方式
存储器操作数的寻址方式中,数据都存放于存储单元中,指令操 作过程中需要BIU通过一个总线周期的访问,才能获取操作数。存储 器操作数的寻址方式是怎么计算出操作数的有效地址EA(Effective Address)。有效地址EA是三个地址量因子一个以上组合,由CPU执行 单元EU计算出来。
4.1操作数寻址方式
Relative -plus-Index Addressing)
有效地址是一个8/16位移量和一个基址与变址之和构成 EA=(BX/BP)+(SI/DI)+ DISP8/16
MOV AX,[BX+SI+10H] 操作如图所示
数据段 BX 20H 00H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
第3章 8086/8088CPU指令系统
3.1操作数寻址方式
3.2指令系统
1
第3章 8086/8088CPU指令系统
微机工作过程中其内部信息有两类: 一类是控制信息(指令); 一类是被加工处理的信息(数据)。
指令:微机中的控制信息就是使计算机进行某种 操作的命令,这些命令就称为指令。 指令系统:一台计算机所能执行的全部指令的集合称 为指令系统。不同的计算机其指令系统是不同的。
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
4.端口寻址(Port Addressing)
4.1操作数寻址方式
80X86系列CPU在访问外设时使用10根地址线A9-A0,其实际访问空 间为210=1K。根据通常书写习惯当高2为A9A8=00时,直接书写低8位, 可直接出现在指令格式中即端口的直接寻址;当A9A8≠00时,要按照 16为的数据书写,不能直接出现在指令格式中,要预先送到DX寄存器 中,即端口的间接寻址。 A 9 A 8 A7A6A5A4A3A2A1A0 0 0 X X X X X X X X 0 1 X X X X X X X X 1 0 X X X X X X X X 1 1 X X X X X X X X
微机原理 第3章 8086、8088指令系统
=20000H+1000H+2000H=23000H 指令执行结果是将23000H和23001H单元的内容送 入寄存器AX中。
MOV BL,2[BX] 或 MOV BL,[BX+2] ;(DS:[BX+2])BL
27
高地址
20
注意: (1) 直接寻址方式的操作数所在存储单元的段地址
一般在数据段寄存器DS中。 (2) 如果操作数在其他段,则需要在指令中用段超
越前缀指出相应的段寄存器名。
例4:MOV AH, ES∶ [2000H] ;将附加段寄存器ES的内 容乘16,再加上2000H作为操作数所在存储单 元的地址,取出该存储单元的内容送到寄存器 AH中。
运算结果的去向
指令系统:指令系统是计算机能够执行全部命令的 集合,它取决于计算机的硬件设计。指令系统因机 而异,没有通用性。
8
3、指令格式
指令格式: 操作码 [操作数],[操作数]
执行何种操作
目的操作数 源操作数
参加操作的数据
源操作数: 指令加工之前的数据 目的操作数:指令加工之后形成的数据
9
4、指令中的操作数类型: 根据操作数的来源进行分类:
表征参加操作的数据本身 立即数
表征数据存放的地址
寄存器 存储器
10
1)、立即数操作数:
表示参加操作的数据本身,可以是8位或16位 例: MOV AX,1234H ; AX 1234H MOV BL,22H
注意: 1)立即数只能用作源操作数,如 MOV AL,86H ∨ MOV 86H,AL ×
2)立即数必须和另一个操作数位数相等 MOV AL,3456H × MOV AX,34H ∨
经典:微机原理与接口技术-8086指令系统
23
9、输入输出指令 输入指令
IN AC,DX IN AC,PORT
输出指令 OUT DX,AC OUT PORT,AC
该指令用来完成I/O端口与累加器之间的数据传送, PORT为端口地址,DX中存放端口地址。
二、算术运算指令 1、加/减指令
a.不带进位位的加/减指令 ADD X,Y; X←X+Y SUB X,Y; X←X-Y X,Y可为:RR,RR‘(或[MEM],NN); [MEM],RR(或NN);AC,NN。
执行指令:MOV AX ,[BP] 执 行 后 : ( AX)=?,(BP)=?,(SS)=?, (20030H)=? 图形表示如下:
8
【例2】
设执行前: (AX)=0040H,(BX) =0030H,(DS)=2000H,(20036H) =0050H
执行指令:ADD 6[BX],AX 执行后:(AX)=?,(BX)=?,(DS)
AL←[BX], AH←[BX+1] [DI],AX ;将AX中的16位二进制数送[DI]和
[DI+1]单元中 CX,[1000H];将[1000H]和[1001H]中的16位二进
制数送CX单元中 BX, 5040H ;将5040H送BX AL,‘E’; 将字符E送AL,即将E的ASCII码送AL AX,30H[BX+SI];将30H+BX+SI单元的内容送AX
8086/8088指令系统有133条指令,共
6组,功能较强
数据传送指令
串处理指令
算术指令
控制转移指令
逻辑指令
处理机控制指令
14
为了更快的学习、领会指令系统,我们 作如下约定:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12H
34H
34H 12H
高地址
微型计算机原理与接口技术
(3) 适用于:给寄存器或存储单元赋初值。
(4) 注意:
a.不能直接对段寄存器用立即数赋值; MOV SS, 1234H
b.立即数不能作目的操作数;
MOV 1234H, AX c.给存储器操作数用立即数赋值时,
要指明WORD/BYTE PTR
MOV BYTE PTR [100H], 5FH d.以A-F打头的数字出现在指令中时,前面要加数字0, 以免与变量名等符号混淆。 MOV BX, 0F77H
微型计算机原理与接口技术
2.寄存器寻址
(1)格式:操作数包含在寄存器中,由指令指定寄存器的名称。 寄存器可以是: 通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI, AH,AL,BH,BL,CH,CL,DH,DL) 段地址寄存器( CS,SS,DS,ES) 标志寄存器 INC CX MOV SS, AX ADD CL, BH ;CXCX+1 ;SSAX ;CLCL+BH
;设循环次数 ;初始化和为0
;指针加1
AGAIN:
相对基址变址寻址
微型计算机原理与接口技术
相对基址变址寻址方式的操作数的有效地址是一个基址寄存器和一 个变址寄存器的内容,再加上指令中指定的8位或16位位移量之和。 同样,在这种方式中,若基址寄存器为BX,则段址寄存器为DS;若 基址寄存器为BP,则段址寄存器为SS。 (1) 格式:操作数表示成[BX/BP+SI/DI+立即数/变量名] MOV AX, COUNT[BX][SI] MOV AX, COUNT[SI][BX] MOV AX, [BX+COUNT][SI] MOV AX, [BX+SI+COUNT] MOV AX, [BX]COUNT[SI] ADD VALUE[BX][DI], DX; (2)物理地址: PA=DS<<4+BX+SI/DI+立即数或变量的偏移 PA=SS<<4+BP+SI/DI +立即数或变量的偏移
(2)物理地址: PA=DS<<4+(BX/SI/DI)+立即数或变量的偏移 PA=SS<<4+(BP)+立即数或变量的偏移
MOV AL, [BX+5] ;AL=9AH
微型计算机原理与接口技术
9AH
(3)适用于:
存取一维数组或表格中的元素
微型计算机原理与接口技术
例:求长度为30字节的内存数组VAL的各元素之和 LEA SI, 0 MOV CX, 30 ;设循环次数 MOV AL, 0 ;初始化和为0 ADD AL, VAL[SI] INC SI ;指针加1 LOOP AGAIN
微型计算机原理与接口技术
MOV AL, DS:[2000H];AL=56H
56H
(3)注意:为了使指令的二进制机器码不要太长,不能两个
操作数都用存储器寻址(适用于以下各种寻址)。
微型计算机原理与接口技术
寄存器间接寻址
寄存器间接寻址方式中,指令中给出的寄存器的值不是操作数本身, 而是操作数的有效地址。 在这种方式中,寄存器名称外必须要加方括号表示地址,以与寄存器 寻址方式区别,一般使用的寄存器有BX、BP和SI、DI。
[寄存器SI/DI]
寄存器相对寻址 相对基址变址寻址
基址变址寻址
直接寻址
微型计算机原理与接口技术
直接寻址方式中,存储单元的有效地址直接由指令给出。 (1) 格式:操作数表示成[立即数]、[变量名]或变量名 MOV AX, [2000H] MOV AX, VALUE 或MOV AX,[VALUE] MOV AX, [VALUE+2] 或MOV AX,[VALUE]+2 直接寻址方式中,默认使用的段寄存器为数据段寄存器DS,也可 指明其他段寄存器(称段超越): MOV AX, ES:[2000H] MOV AX, CS:VALUE 其中的“:”称修改属性运算符 (2)物理地址: PA=DS(或指定的段寄存器)<<4+立即数或变量的偏移;
PA=DS<<4+BX+SI/DI
PA=SS<<4+BP+SI/DI
微型计算机原理与接口技术
MOV AX, [BX+SI]
;AH=0ABH,AL=78H
ABH
78H
(3)适用于:一维或二维数组或表格
微型计算机原理与接口技术
例:求长度为30字节的内存数组VAL的各元素之和 LEA SI, VAL MOV BX, 0 MOV CX, 30 MOV AL, 0 ADD AL, [BX+SI] INC BX LOOP AGAIN ;取VAL第一字节的偏移地址
AGAIN:
微型计算机原理与接口技术
基址变址寻址
基址变址寻址方式的操作数的有效地址是一个基址寄存器 (BX或BP)和一个变址寄存器(SI或DI)的内容之和。
在这种方式中,若基址寄存器为BX,则段址寄存器为DS; 若基址寄存器为BP,则段址寄存器为SS。
(1)格式:操作数表示成[BX/BP+SI/DI] 或[BX/BP][SI/DI] MOV AX, [BX][DI] MOV CL, [BP+DI] MOV ES:[BX][SI], AH ;或MOV [SI]1100H[BX]
AX=(DS:1100+BX)=(32200H)=B6AAH
(2)MOV
(3)MOV
AX, [2800H]
AX, BX
AX=(DS:2800)=(32800H)=7755H AX=BX=1100H
(4)MOV
(5)MOV (6)MOV
AX, [BX]
AX, [1160H+SI] AX, 4200H
3.存储器寻址
指令的操作数都放在存储器中。
地址总线(Address Bus)
中央处理器 (CPU)
数据总线(Data Bus) 控制总线(Control Bus)
IO接口电路
存储器 (Memory)
IO设备
微型计算机原理与接口技术
存储器寻址的类型
直接寻址
寄存器间接寻址
寄存器间接寻址
[常数]
[寄存器BX/BP]
IO接口电路
存储器 (Memory)
IO设备
微型计算机原理与接口技术
直接寻址:指令中直接给出8位端口地址,只能寻址前256 个端口。 IN AL/AX,8位立即数 OUT 8位立即数, AL/AX
间接寻址:将16位端口地址放入DX,可访问64K个端口。 MOV DX, 16位立即数 IN AL/AX, DX OUT DX, AL/AX
AGAIN:
寄存器相对寻址
微型计算机原理与接口技术
寄存器相对寻址方式中,操作数的有效地址是一个基址或 变址寄存器的内容与指令中指定的8位或16位位移量之和。 (1)格式:操作数表示成[BX/BP/SI/DI+立即数/变量名], (变量的值是偏移地址) 是直接寻址和寄存器间接寻址的组合。
MOV MOV MOV MOV MOV MOV BX, [SI+1003H] AL, [DI+TABLE] AL, TABLE[BX] AL, [BP]+TABLE BX, ES:[SI+1003H] TABLE[BP], AX
AX=(DS:BX)=(31100H)=8F52H AX=(DS:1160+SI)=(31162H)=996BH AX=4200H
微型计算机原理与接口技术
练习:找错
1. MOV 3, SI 2. MOV CH, 1234H 3. MOV [BX], 33H 4. MOV AX, CL 5. MOV AL, [BX] 6. MOV X, [100H] 7. MOV [100H], [DI] 8. MOV DS, 1000H 9. MOV CS, AX 10. MOV [AX], BX
(1)格式:操作数表示成[BX]、[BP]、[SI]或[DI], 寄存器内容是操作数的有效地址。 MOV BX, [DI] MOV [SI], DS MOV [BP], AX MOV ES:[DI], AX MOV DX, DS:[BP] (2)物理地址: PA=DS<<4bit+BX(或SI,DI) 或 PA=SS<<4+BP
指令的组成
• MOV [BX][SI], AX
微型计算机原理与接口技术
ADD AX, BX
• 指令一般格式: – 标号: 助记符 操作数1, 操作数2 – 助记符:MOV、ADD等 – [BX][SI] 、AX和BX属于操作数 • 助记符(操作码) – 标明需要计算机执行的操作 • 操作数参数 – 数量取决于操作码,可以为0~3个,若为双操作数指令,要用逗号 隔开,逗号右边的源操作数,左边的是目的操作数。 – 用于存放指令在执行过程中所需要的操作数和操作结果。
微型计算机原理与接口技术
第3章 8086/8088的指令系统
3.1 3.2 8086的寻址方式 8086的指令系统
微型计算机原理与接口技术
计算机的指令通常包含操作码和操作数两部 分,前者指出操作的性质,后者指出操作的 对象; 所谓寻址方式,指的就是指令中说明操作数 地址的方法; 指令有单操作数、双操作数和无操作数之分; 操作数可以包含在寄存器、存储器或I/O端口 地址中,也可以为立即数。
微型计算机原理与接口技术
例:DS=3000H,BX=1100H,CS=0062H,SI=0002H,(31100H)= 52H,(31101H)=8FH,(31162H)=6BH,(31163H)=99H,(31103H) =F6H,(32200H)=AAH,(32201H)=B6H,(32800H) =55H, (32801H) =77H,写出下列指令执行后AX的内容