微机原理及接口技术-第4章-指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IN
AL, DX
第4章
指令系统
计算机原理与汇编语言程序设计
实验指导书 李志民编著
中南大学信息科学与工程学院自动化所
第4章
指令系统
指令的机器码(machine code)表示方法
一、机器语言指令的编码目的和特点 1、机器语言指令 汇编语言 流程序
用符号指令编写的程序
经过汇编 程序
相当于解释
机器语言 程序
4.1 指令的基本概念和基本格式
4.2 指令的寻址方式
4.3 8086指令系统
4.4 中断调用类指令
第4章
指令系统 4.1 Definition
and Format of Instruction
Machine instruction:指挥计算机完 成某种操作的命令。
Format:
Operation Code: OPD, OPS (0,1,2) OPD:目的操作数 OPS:源操作数
执行:(32000H)→AX 执行后:(AX)=4545H
第4章
指令系统
指令操作例:MOV AX,[3102H] AL (3102H) , AH (3103H)
如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH 则操作数的物理地址为: 存储器 20000H+3102H = 23102H 指令执行后:(AX) = ABCDH
cannot be OPD but only OPS
第4章
指令系统
2. Register Addressing
寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R 其中R表示寄存器名。
功能:操作数直接存放在寄存器R中。
图形表示:
R
指令→操作数
第4章
指令系统
【例4.2】
下列程序执行后,(AX)=1234H,(BX)=5678H MOV AX,BX AX=? BX=?
第4章
指令系统
操作数偏移地址EA计算方法如下
第4章
指令系统
【例4.6】
例如 MOV AL,[BX+SI](MOV AL,[BX][SI])
若 指 令 执 行 前 , ( DS)=1000H,(BX)= 0010H,(SI)=0002H,(10012H)=45H
则 EA=(BX)+(SI)=0012H,PA=(DS) ×10H+EA=10012H 指令执行后(AL)=45H。
第4章 指令系统 4.2.3 I/O端口寻址方式 I/O interface
addressing
8086CPU采用独立编址的I/O端口,可以最多访问64K个字节端口 或32K个字端口,用专门的IN指令和OUT指令访问。I/O端口寻址只用 于这两种指令中。寻址方式有如下两种。 1. 直接端口寻址 在指令中直接给出端口地址,端口地址一般采用2位十六进制数, 也可以用符号表示,这种寻址方式为直接端口寻址。因此,直接端口 寻址可访问的端口数为0~255个。 例如:IN AL,25H 2. 寄存器间接端口寻址 如果访问的端口地址值大于255,则必须用I/O端口的间接寻址方式。 所谓间接寻址,是指把I/O端口的地址先送到DX中,用DX作间接寻址 寄存器,而且只能用DX寄存器。 例如:MOV DX,378H
【例4.4】寄存器和存储器内容分别为: (AX)=0,(BP)=0030H,(SS)=2000H, (20030H)=1234H 执行指令:MOV AX ,[BP]
执行后:(AX)=?,(BP)=?,(SS)=?, (20030H)=?
图形表示如下:
第4章
指令系统
(3) 寄存器相对寻址
(register relative addressing)
第4章 8086 instruction system
本章主要教学内容
1、8086指令的基本格式
2、8086指令系统的寻址方式 3、8086指令的应用
本章教学目的
使学生掌握指令的寻址方式过程,掌握指令的应 用。
教学重点:指令系统的寻址方式和指令的应用 教学难点:指令的寻址方式
第4章
指令系统
第4章 8086 Instruction System
若指令执行前,(DS)=1000H,(BX)=0010H, (SI)=0002H,(10033H)=45H 则EA=21H+(BX)+(SI)=0033H,
PA=(DS)×10H+EA=10033H
指令执行后(AL)=45H。
第4章
指令系统
(5) 跨段问题
按前述规定:若选用BP作间址基址寄存器、变址寄存器 或基址寄存器,则操作数在堆栈段,操作数的物理地址PA由 堆栈段寄存器SS的内容左移4位与偏移地址EA相加后形成;否 则,操作数在数据段,操作数的物理地址PA由数据段寄存器 DS的内容左移4位与偏移EA相加后形成。该规定为系统默认状 态。当要否定默认状态,到非约定段寻找操作数时,必须用 跨段前缀指明操作数的段寄存器名。
D15~D10位: 6为操作码(规定说明指令的功能)
D9位(D位):规定数据的传送方向(direction)
D=1-数据传送到寄存器(或存储器)
D=0-数据从寄存器(或M单元)传出
第4章
D8位(W位):规定数据类型
W=1-数据为一个字
指令系统
W=0-数据是一个字节
movdx378haldx指令系统计算机原理与汇编语言程序设计实验指导书李志民编著中南大学信息科学与工程学院自动化所指令系统指令的机器码machinecode表示方法一机器语言指令的编码目的和特点1机器语言指令汇编语言经过汇编机器语言流程序程序程序用符号指令编写的程序相当于解释用二进制表示如
第4章
指令系统
用二进制表示
如:CLC →1111,1000 WAIT→ 1001,1011
第4章
二、机器语言指令代码的编制
1、编码格式说明: 以寄存器之间或寄存器与存储器之间数据传送的 MOV指令为例:
8 6 1 15 0 0 1 0 D10 W9 MOD7 REG 0 5
指令系统
R/M
3
2
0
操作码
典型的MOV指令的编码格式
第4章
指令系统
【例4.1】
【例2.5】MOV AX, 2A50H
执行后(AX)=?
该例中源操作数为立即寻址方式,立即数为2A50H, 存放在指令的下一单元。
执行:2A50H→AX
执行后:(AX)=2A50H HOW arrange it in AX?
AX IV
can be AL, or memory
HOW ABOUT MOV AL,BH MOV AH,BX
MOV AX,BL
Kept same length
第4章
指令系统
3. Memory Addressing
如果操作码所需操作数存放在内存储器中,则指令中 需要给出操作数的地址信息。为了提高程序的灵活性, 8086指令系统提供了多种存储器寻址方式
操作码 低8位 高8位
代 码 段
02H 31H
第4章
指令系统
(2) 寄存器间接寻址
(register indirect addressing)
寄存器间接寻址方式中,寄存器的内容为
操作数的偏移地址EA,操作数在存储器中。
汇编格式:[R]
功能:操作数存放在存储器,寄存器R存放
操作数的偏移地址EA。
Do not forget bቤተ መጻሕፍቲ ባይዱacket
第4章
指令系统
偏移地址EA计算方法如下:
第4章
指令系统
【例4.5】
设执行前: (AX)=0040H,(BX)=0030H,(DS) =2000H,(20036H)=0050H
执行指令:MOV AX, 6[BX]
执 行 后 : ( AX)=?,(BX)=?,(DS)=?, (20036H)=?
Difference?
寄存器相对寻址方式是在指令中给定一个基址寄存 器(或变址寄存器)名和一个8位或16位的相对偏移量 (displacement),两者之和作为操作数的有效地址。 对BX、SI、DI这三个间址寄存器,指示的是数据段中的 数据,而用BP作间址寄存器,则指示的是堆栈段中的数 据。 汇编格式:X[R](X表示位移量,是8位或16位二 进制补码表示的有符号数)。 功能:操作数存放在存储器,寄存器R的内容加位移量X 为操作数的偏移地址EA。
第4章
指令系统
相对基址变址寻址
(relative based indexed addressing)
汇编格式: X[BR+IR]
功能:操作数存放在存储器,BR的内容加IR的内容 加位移量X是操作数的偏移地址EA。
第4章
指令系统
【例】
例如 MOV AL,21H[BX+SI]
(MOV AL,21H[BX][SI])
第4章
指令系统
4.2 Instruction Addressing
4.2.1 寻址方式的基本概念
4.2.2 与数据有关的寻址方式 4.2.3 I/O端口寻址方式
第4章4.2.1 Definition of Addressing、 Addressing 指令系统
Approach
指令中操作数字段实质上是指出操作数存放 于何处。一般来说,操作数可以跟随在指令操作 码之后,称为立即数(immediate value);操作数也 可以存放在CPU内部的寄存器中,称为寄存器操 作数。绝大多数的操作数存放在内存储器中,称 为存储器操作数。指令指定操作数的位置,即给 出地址信息,在执行时需要根据这个地址信息找 到需要的操作数。这种寻找操作数的过程称为寻 址,而寻找操作数的方法称为寻址方式。
第4章
指令系统
4.2.2 related to data
1. 立即寻址(immediate addressing) 立即寻址方式中,指令操作码和操作数都在存 储器代码段中。 汇编格式:n(n为立即操作数,是用8位或16位二进 制补码表示的有符号数) 功能:操作数存放在 存储器,指令下一单元的 内容为立即操作数n。 图形表示如右:
第4章
指令系统
(4) 基址变址寻址
(based indexed addressing)
基址变址寻址方式是在指令中给出一个基址寄存器名 和一个变址寄存器名,两者内容之和作为操作数的有效地 址。基址寄存器为BX或BP,变址寄存器为SI或DI,但指令 中不能同时出现两个基址寄存器或两个变址寄存器。如果 基址寄存器为BX,则段寄存器使用DS;如果基址寄存器用 BP,则段寄存器用SS。 汇编格式: [BR+IR] 功能:操作数存放在存储器,BR的内容加IR的内容是 操作数的偏移地址EA。
第4章
指令系统
寄存器间接寻址示意图:
例如:MOV AX,[BX] 若 ( DS)=2000H,(BX)=1000H, 物 理 地 址 = 2 0 0 0 0 H+ 1000H=21000H。指令执行前,(AX)=2030H,(21000H) =0A0H,(21001H)=50H,指令执行后,(AX)=50A0H, (21000H)=0A0H,(21001H)=50H。指令执行情况如下:
(1)直接寻址
(2)寄存器间接寻址 (3)寄存器相对寻址 (4)基址变址寻址 (5)关于段跨跃前缀
第4章
指令系统
(1) 直接寻址(direct addressing)
汇编格式:①含有变量的地址表达式。
②寄存器名:[EA] be directly given 。
Default DS or X: [EA] 功能:指令下一字单元的内容是操作数的偏移地址EA。 图形表示:
第4章
指令系统
【例4.3】
【例4.3】寄存器和存储器内容为:(AX)=1212H, BUF 为 数 据 段 定 义 的 变 量 , 其 偏 移 地 址 是 2 0 0 0 H, (DS)=3000H,(32000H)=4545H。 执行指令:MOV AX ,BUF 执行后:(AX)=? 图形表示:
AH
AL
23102H
MOV操作码 02H 31H
代 码 段
. .
CDH ABH
数 据 段
第4章
指令系统
指令操作例:MOV AX,3102H
; AX
3102H
执行后,(AH) = 31H,(AL) = 02H
存储器
立即寻址指令在存 储器中的存放形式
AX AH AL MOV操作码 代 码 段
立 即 数
汇编格式:段寄存器名:操作数地址。
功能:段寄存器名指明操作数属哪个段。
第4章
指令系统
【例4.7】跨段前缀示例。 MOV MOV AX,DS:[BP] CX,SS:[SI]
该例中,DS:,SS:均为跨段前缀,此时默认 状态无效,操作数的物理地址PA由段寄存器内 容左移4位加偏移EA形成。上述2条指令的源操 作数物理地址分别为: PA1 PA2 =(DS)左移4位+[BP] =(SS)左移4位+[SI
AX AH AL 数据段 物理地址
A0H 50H 56H
21000H 20001H 20002H
第4章
指令系统
偏移地址EA计算方法如下: [SI] [DI] [BX] [BP] SI作间址寄存器。 DS DI作间址寄存器。DS BX作间址寄存器。DS BP作间址寄存器。 SS
EA=
第4章
指令系统
相关文档
最新文档