第三章 16位和32位微处理器的指令系统3.3-3.6

合集下载

1632位微机原理汇编语言及接口技术教程课后习题答案

1632位微机原理汇编语言及接口技术教程课后习题答案

1632位微机原理汇编语言及接口技术教程课后习题答案16、32位微机原理、汇编语言及接口技术教程课后习题答案《16/32位微机原理、汇编语言及接口技术教程》部分习题参照答疑第1章微型计算机系统概述〔习题1.2〕什么是通用微处理器、单片机(微控制器)、dsp芯片、嵌入式系统?〔解答〕通用型微处理器:适宜最广的应用领域的微处理器,比如上装在pc机、笔记本电脑、工作站、服务器上的微处理器。

单片机:是指通常用于控制领域的微处理器芯片,其内部除cpu外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。

dsp芯片:表示数字信号处理器,也就是一种微控制器,其更适宜处置高速的数字信号,内部内置存有高速乘法器,能展开快速乘法和乘法运算。

嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。

〔习题1.5〕说明微型计算机系统的硬件组成及各部分作用。

〔解答〕cpu:cpu也表示处理器,就是微机的核心。

它使用大规模集成电路芯片,芯片内内置了控制器、运算器和若干高速存储单元(即为寄存器)。

处理器及其积极支持电路形成了微机系统的控制中心,对系统的各个部件展开统一的协同和掌控。

存储器:存储器是存放程序和数据的部件。

外部设备:外部设备就是所指可以与微机展开可视化的输出(input)设备和输入(output)设备,也表示i/o设备。

i/o设备通过i/oUSB与主机相连接。

1总线:互连各个部件的共用地下通道,主要不含数据总线、地址总线和掌控总线信号。

〔习题1.6〕什么是总线?微机总线通常有哪3组信号?各组信号的作用是什么?〔解答〕总线:传递信息的共用地下通道,物理上就是一组公用导线。

3组与信号线:数据总线、地址总线和掌控总线。

(1)地址总线:传输将要访问的主存单元或i/o端口的地址信息。

(2)数据总线:传输读写操作的数据信息。

郑州大学《微型计算机原理及应用》课后习题答案

郑州大学《微型计算机原理及应用》课后习题答案

郑州⼤学《微型计算机原理及应⽤》课后习题答案《微型计算机原理及应⽤》习题解答第⼀章基础知识1.1 解释题(1)微处理器【解答】由⼤规模集成电路芯⽚构成的中央处理器(CPU),叫做微处理器。

(2)微型计算机【解答】以微处理器为基础,配以内存储器、输⼊输出接⼝电路、总线以及相应的辅助电路⽽构成的计算机裸机,叫做微型计算机。

(3)微型计算机系统【解答】微型计算机系统由硬件系统和软件系统组成。

即由微型计算机、配以相应的外部设备(如打印机、显⽰器、键盘、磁盘机等),再配以⾜够的软件⽽构成的系统。

(4)单板机【解答】将微处理器、RA、ROM以及I/O接⼝电路,再配上相应的外设(如⼩键盘、LED显⽰器等)和固化在ROM中的监控程序等,安装在⼀块印刷电路板上构成的微型计算机系统称为单板机。

(5)运算器【解答】运算器是直接完成各种算术运算、逻辑运算的部件,主要由ALU(Arithmetic and Logic Unit,算术逻辑部件)、通⽤寄存器、标志寄存器等组成。

(6)地址总线【解答】地址总线是CPU对内存或外设进⾏寻址时,传送内存及外设端⼝地址的⼀组信号线。

地址总线的条数多少决定了CPU的寻址能⼒。

(7)数据总线【解答】数据总线是CPU与内存或外设进⾏信息交换时,所⽤的⼀组数据信号线。

它决定了CPU ⼀次并⾏传送⼆进制信息的位数,反映出CPU的“字长”这个重要性能指标。

(8)控制总线【解答】控制总线是在CPU与外部部件之间传送控制信息(如读/写命令、中断请求命令等)的⼀组信号线。

1-2 单⽚机应包括哪些基本部件?其主要应⽤于哪些领域?【解答】⼀般单⽚机芯⽚中包括微处理器、RAM、ROM、I/O接⼝电路、定时器/计数器,有的还包括A/D、D/A转换器等。

其主要应⽤于智能化仪器仪表及⼯业控制领域。

1-3 按图1-11和图1-12,写出取第⼆条指令操作码和执⾏第⼆条指令的过程。

【解答】ADD AL,12H指令的取指过程:1)IP的值(002H)送⼊地址寄存器AR;2)IP的内容⾃动加1,变为003H;3)AR将地址码通过地址总线送到存储器的地址译码器,经译码后选中002H单元;4)微处理器给出读命令MEMR;5)所选中的002H单元内容04H送上数据总线DB;6)数据总线DB上的数据04H送到数据寄存器DR;7)因是取指操作,取出的是指令操作码04H,即由DR送⼊指令寄存器IR;8)IR中的操作码经指令译码器ID译码后,通过PLA发出执⾏该指令的有关控制命令。

《计算机硬件技术基础(第三版)》第3章 32位微处理器

《计算机硬件技术基础(第三版)》第3章 32位微处理器
计算机硬件技术基础
(1)总线接口部件 总线接口部件与片内Cache外部总线接口实行的是逻辑接口连接。当访问 Cache出现没命中、或需更改系统存储器内容、或需向Cache写入某些信 息时,就要通过总线接口从外部存储器系统中取出一批数据。 (2)预取缓冲部件 预取缓冲部件 取指令是指从高速缓冲存储器Cache内或从内存储器中取出指令代码, 以备译码之用的操作。 (3)指令译码部件 指令译码部件 译码操作, 一是检查一条指令的格式, 二是确定它是哪种类型操作的指令,并给出这条指令所需的操作数。 (4)控制部件 控制部件 Pentium微处理器控制部件的作用是,负责解释来自指令译码部件的 指令字和控制ROM的微代码。控制部件的输出控制着整数流水线部件和 浮点部件。 (5)执行部件 执行部件 是微处理器用于执行指令所规定的具体操作的CPU的核心硬件部分。 这些非常具体的操作是指诸如数值运算、逻辑操作以及分支转移处理等。
为了支持在Pentium内采用的分支转移预测新技术,芯片内装备有两个 预取缓冲存储器,一个是以线性方式来预取代码,另一个则是根据分支转 移目标缓冲器(BTB)预取代码。这样就可以保证在执行之前将所需用的 指令从存储器预取出来。 由于Pentium采用了这项技术,可以在无延迟的情况下正确地预测各 种转移。另外,V流水线中的条件转移指令可以与一条比较类指令成对执 行,当然也可以与U流水线中的置标志指令配合执行。但Pentium作到了 与现有软件是完全兼容,所以不必修改现有软件。
计算机硬件技术基础
3.1 .
CISC和RISC 和
1 复杂指令系统计算机 复杂指令系统计算机—CISC 每一种微处理器的CPU都有属于它自己的指令系统。 CPU正是通过执行一系列的特定的指令来实现应用程序 的某种功能。像Intel x86系列,为了增加新的功能, 就必须增加新的指令;另一方面,为了保持向上兼容, 又必须保留原有的指令。每条指令又有若干个不同的操 作字段,用来说明要操作的数据类型,以及存放的位置。 这就意味着一个较大的指令系统和复杂的寻址技术。以 这样的微处理器为平台的计算机系统就是“复杂指令系 统计算机”(CISC)。 CISC也有许多优点,如指令经编译后生成的指令程 序较小执行起来较快,节省硬件资源。像存取指令的次 数少,占用较少的存储器等。

第三章基本指令系统及编程

第三章基本指令系统及编程

端口(I/O)分配
输入 输入设备 输入编号 光电按钮1 X001 光电按钮2 X002
输出
输出设备
输出编号
帖商标 执行机构
Y000
自动贴商标装置
梯形图所对应的指令语句表
§3.2 串并联指令及其应用
2.PLC控制传送带检测瓶子
检测瓶子是否直立的装置。 当瓶子从传送带上移过时,它被 两个光电管检测确定瓶子是否直 立,如果瓶子不是直立的,则被 推出杆推到传送带外。若推出了 3个空瓶,则点亮报警指示灯, 提醒操作人员进行检查。
三菱FX2N系列PLC应用技术
Date:
2020-3-25
Page: 1
第三章 基本指令系统及编程
Date:
2020-3-25
Page: 2
§ 3.1 连接驱动指令及其应用 § 3.2 串并联指令及其应用 § 3.3 多重输出与主控指令及其应用 § 3.4 脉冲指令及其应用 § 3.5 置位、复位指令及其应用 § 3.6 应用实例
启动按钮SB1 X001
电动机
Y000
停止按钮SB2 X002
PLC控制风扇电路
梯形图
指令语句表
§3.2 串并联指令及其应用 3.2.5 应用实例:PLC控制自动检票放行装置
第三章 基本指令系统及编程
Date:
2020-3-25
Page: 12
自动检票放行装置。当一辆车到达检票 栏时,按钮被司机按下,接收一张停车票 后,输出驱动电机,栏杆升起,允许车辆 进入停车场。定时器计时10s后,栏杆自动 回到水平位置,等待下一位顾客。
Date:
2020-3-25
Page: 4
输入
输出
输入设备 输入编号 输出设备 输出编号

第三章 微型计算机的指令系统

第三章  微型计算机的指令系统

reg , reg mem , reg reg , mem
C、从存贮器/寄存器到段寄存器 (mem/reg,segreg)
注:不能往CS中传送数据.
D、从段寄存器到存贮器/寄存器 (segreg,mem/reg)
注:
1,不影响标志 2,不允许两操作数都使用存储器 3,不允许往CS中送数 4,8位传送/16位传送决定于指令中寄存器及立 即数形式 5,凡给SS赋值时,系统会自动禁止中断,等下 条指令执行完后才会恢复
B、例 LEA BX,[BX+SI] 执行前:BX=0400H SI=003CH 执行后:BX= LDS SI,[10H] 执行前:DS=C000H, (C0010H)=0180H (0012H)=2000H 执行后:SI= DS= LES DI,[BX] 执行前:DS=B000H, BX=080AH (B080AH)=05AEH, (B080CH)=4000H 执行后:DI= ES=
0
CF
AH
/
/
/
三、算术运算指令 1、加法指令 加: ADD DST,SRC DST←SRC+DST reg,reg; reg,mem; mem,reg reg,data; mem,data; ac,data 带进位加:ADC DST,SRC (DST)← (SRC)+(DST)+CF reg,reg; reg,mem; mem,reg reg,data; mem,data; ac,data 加1: INC OPR (OPR)←─ (OPR)+1 (reg;mem) 注:INC指令不影响CF标志
2,高字节 4,低字节 2,SP+1 4,SP+1 SP SP
(SP) (SP)

16、32位微机原理、汇编语言和接口技术教程课后习题答案解析

16、32位微机原理、汇编语言和接口技术教程课后习题答案解析

《16/32 位微机原理、汇编语言及接口技术教程》部分习题参考解答第1 章微型计算机系统概述〔习题1.2 〕什么是通用微处理器、单片机(微控制器)、芯片、嵌入式系统?〔解答〕通用微处理器:适合较广的应用领域的微处理器,例如装在机、笔记本电脑、工作站、服务器上的微处理器。

单片机:是指通常用于控制领域的微处理器芯片,其内部除外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。

芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。

嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。

〔习题1.5 〕说明微型计算机系统的硬件组成及各部分作用。

〔解答〕:也称处理器,是微机的核心。

它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。

存储器:存储器是存放程序和数据的部件。

外部设备:外部设备是指可与微机进行交互的输入()设备和输出()设备,也称设备。

设备通过接口与主机连接。

总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。

习题1.6 〕什么是总线?微机总线通常有哪3 组信号?各组信号的作用是什么?〔解答〕总线:传递信息的共用通道,物理上是一组公用导线。

3 组信号线:数据总线、地址总线和控制总线。

(1)地址总线:传输将要访问的主存单元或端口的地址信息。

(2)数据总线:传输读写操作的数据信息。

(3)控制总线:协调系统中各部件的操作。

习题1.7 〕简答如下概念:(1)计算机字长(2)取指-译码-执行周期(3)(4)中断(5)总线解答〕(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。

(2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。

第3章16位32位微处理器指令系统

第3章16位32位微处理器指令系统
第3章 16位/32位微处理器指令系统
指令:让 计算机 执行各种特定操作 的命令。 指令系统:微机能够识别和执行的全部指令集合。 不同的微处理器所对应的指令系统也不相同。
3.1 指令的基本格式 3.2 8086/8088的寻址方式 3.3 8086/8088的指令系统
3.1.1 指令的构成
包括两部分: 操作码:表示操作性质或类型编码 操作数:操作对象。
操作码:由CPU设计人员定义。每一种操作唯一对应一个操作码。 操作数:可由编程人员采用不同方式给出。
寻址方式:寻找操作数(操作数地址)的方式; 指令的基本格式:
[标号:] 操作码助记符 目的操作数,源操作数[;注释] [标号:] 操作码助记符 目的操作数 [;注释]
3.2 8086的寻址方式
MOV AL,80H;将80H送入AL MOV AX,306AH;对应的机器码为B86A30H
立即数寻址方式常用来给寄存器和存储单元赋值。 操作数直接在指令中取得,不需要使用另外的总线周期,执
行时间短、速度快。
2.寄存器寻址
操作数在CPU的内部寄存器中: 8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器:AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器:CS、DS、SS、ES
堆栈段
SP
0FFEH 34H
② 0FFFH 12H
SP
1000H
存储器
① BX =1234H
2.标志寄存器传送指令
LAHF指令:取标志寄存器指令。将标志寄存器FR的低8位 传送到AH中。
SAHF指令:设置标志寄存器指令。将AH的内容传送到标 志寄存器FR的低8位。
PUSHF指令:将标志寄存器FR的值压入堆栈。 POPF指令:从堆栈中弹出一个字到标志寄存器FR中。

第3章--Cortex-M3-指令系统

第3章--Cortex-M3-指令系统

3.2.2指令的可选后缀
(2)!后缀 如果指令地址表达式中不含!后缀,则基址寄存器中的地址值不会发生变化。 指令中的地址表达式中含有!后缀时,指令执行后,基址寄存器中的地址值将发 生变化,变化的结果如下: 基址寄存器中的值(指令执行后)=指令执行前的值+地址偏移量
例 3.3 分别执行下面两条指令有何区别?
18
3.3 指令的寻址方式
• 3.3.1 立即数寻址 • 3.3.2 寄存器寻址 • 3.3.3 寄存器间接寻址 • 3.3.4 寄存器移位寻址 • 3.3.5 基址变址寻址 • 3.3.6 多寄存器寻址 • 3.3.7 相对寻址 • 3.3.8 堆栈寻址
3.3.1立即数寻址
• 立即数寻址也叫立即寻址,操作数本身就在指令中给出,取出指令也就
第3章 Cortex-M3 指令系统
1
第3章 Cortex-M3 指令系统
• 3.1 指令基础 • 3.2 汇编语言 • 3.3 寻址方式 • 3.4 指令集
2
3.1 指令基础
• 3.1.1 程序设计语言的层次结构 • 3.1.2 程序的执行过程 • 3.1.3 Cortex M3寄存器
3.1.1程序设计语言的层次结构
S后缀通常用于对条件进行测试,例如是否有溢出,是否进位等;根据 这些变化,就可以进行一些判断,如是否大于,是否相等;从而可能影响 指令执行的顺序。
✓ 条件后缀和S后缀的关系如下: 如果既有条件后缀又有S后缀,则书写时S排在后面, 如:ADDEQS R1,R0,R2 该指令在Z=1时执行,将R0+R2的值放入R1,同时刷新条件标志位。
无法表示的32位数, 只有通过逻辑或算术运算等其它途径获得了. 比如0xffffff00, 可以通过0x000000ff按位取反得到.

16位和32位的微处理器.ppt

16位和32位的微处理器.ppt

2.1.2 8086的引脚信号和工作模式
• 8284A和8086的连接
2.1.2 8086的引脚信号和工作模式
4. 最大模式
GND
• QS1、QS0:指令队列状态信号输
AD14 AD13

AD12

S2#、S1#、S0#:总线周期状态信
AD11 AD10
号输出
AD9
• LOCK#(lock):总线封锁信号输出
第二章 16位和32位的微处理器
本章学习重点
• 8086的编程结构,尤其是寄存器组; • 8086标志寄存器各个标志的含义; • 8086的读写时序、总线操作和中断机制; • Pentium的先进技术; • Pentium的工作方式; • Pentium的原理结构、寄存器组和描述符; • Pentium的主要信号; • Pentium的总线状态; • Pentium的中断机制和中断描述符表; • Pentium的段页两级保护机制。
• 8086的主要操作: • 系统的复位和启动操作; • 暂停操作; • 总线操作; • 中断操作; • 最小模式下的总线保持; • 最大模式下的总线请求/允许。
2.1.3 8086的操作和时序
1. 系统的复位和启动操作
2.1.3 8086的操作和时序
2.1.3 8086的操作和时序
2. 总线操作
2.1.2 8086的引脚信号和工作模式
3.最小模式
HLDA:总线保持响应信号输 出HOLD:总线保持请求信号输 M W入/RI#O#:写:存信储号器输/出输入输出控 制信号输出 DT/RD#EN:数#据:数收据发允信许号信输号出 ALE:地址锁存允许信号输出
INTA#:中断响应信号输出
GND AD14 AD13 AD12 AD11 AD10

第三章16位和32位微处理器的指令系统

第三章16位和32位微处理器的指令系统
对于地址操作数,指令只有一个目的操作数,它是一个供程 序转移的目标地址。
2.寻址方式
所谓寻址方式,就是指指令中给出的寻找操作数(包括数据 操作数和地址操作数)的方法。根据操作数的种类,8086/8088指 令系统的寻址方式分为两大类:数据寻址方式和地址寻址方式。
1) 数据寻址方式 数据寻址方式可分为立即数寻址方式、寄存器寻址方式、
MOV AL,ES:[1064H]
在汇编语言指令中,可以用符号地址来表示位移量。例如:
MOV AL,[value] 或MOV AL,value
此时value为存储单元的符号地址。
② 寄存器间接寻址方式(Register Indirect Addressing)。寄存 器间接寻址方式的操作数有效地址只包含基址寄存器(BX)的内 容或变址寄存器(SI、DI)的内容一种分量。因此,操作数的有效 地址在某个寄存器中,而操作数本身则在存储器中的数据段内。 这与寄存器寻址方式操作数就在寄存器中是不同的。
MOV ES:[DI],AX
③ 寄存器相对寻址方式(Register Relative Addressing)。寄存 器相对寻址方式的操作数有效地址EA是一个基址寄存器或变址 寄存器的内容和指令中给定的8位或16位位移量相加之和,所以 有效地址由两种分量组成。可用做寄存器相对寻址方式的寄存 器有基址寄存器BX、BP和变址寄存器SI、DI。即
表3 MOD与R/M字段组合的寻址方式
3.1.1 8086的寻址方式
1.操作数的种类 1) 数据操作数 这类操作数是与数据有关的操作数,即指令中操作的对象是数 据。数据操作数又可分为: (1) 立即数操作数。指令中要操作的数据包含在指令中。 (2)寄存器操作数。指令中要操作的数据存放在指定的寄存器中。 (3)存储器操作数。指令中要操作的数据存放在指定的存储单元中。 (4)I/O操作数。指令中要操作的数据来自或送到I/O端口。

16位和32位微处理器的指令系统

16位和32位微处理器的指令系统


占内存少,执行速度快 编写繁琐、调试困难 相对于机器语言编写的程序: 汇编语言程序,易读易懂,便于修改。
11
3) 高级语言
高级语言是独立于机器、面向过程或对象的语言。
算法是按照人的思维方式给出,比较接近人的自然语言。
上例
高级语言程序段为:
var3 = var1 + var2
由编译程序将高级语言源程序翻译目标程序,
13操作数1来源2个数3类型4执行速度14指令格式操作码操作码11reg操作码modreg操作码reg单字节指令隐含操作数单字节指令寄存器模式寄存器到寄存器模式不带位移量的寄存器和内存之间的传送regreg寄存器寄存器modmod模式模式rm寄存器或内存寄存器或内存15操作码modreg位移低位位移高位操作码11操作码数据低位数据高位操作码mod操作码位移低位位移高位数据低位数据高位regreg寄存器寄存器modmod模式模式rm寄存器或内存寄存器或内存带位移量的寄存器和内存之间的传送设位移量为16位立即数送寄存器设立即数为16位立即数送内存设位移量为16位指令格式16指令格式操作码操作数addal10h数据传送算术运算逻辑运算串操作控制转移处理机控制按功能指令分六类操作码指明cpu要执行什么样的操作
4. 寄存器间接寻址 5. 寄存器相对寻址 5种与内存单元 有关的寻址
6. 基址加变址寄存器寻址
7. 相对基址加变址寄存器寻址
(存储器操作数)
30
以数据传送指令MOV为例介绍寻址方式。
指令
执行 即:
MOV
(dst)
dst,

src
(src)
源操作数的内容不变, 目的操作数 = 源操作数
31
1. 立即数寻址

微机原理16位微处理器的指令系统

微机原理16位微处理器的指令系统

如: LEA LEA 指令LEA
AX,[2728] BX,[BP+SI]
;内存单元的偏移量2728送AX ;指令执行后,BX中内容为BP+SI的值
BX,TABLE与指令 MOV
BX,OFFSET TABLE是等价的
pentiumCPU: LEA ESI,[EBX+ECX+2530H];
(2) 取段地址和偏移量的指令(LDS)
几点注意:
① 堆栈操作总是按字或双字进行的。
② 对字数据执行进栈指令,SP减2,推入的数据放在栈顶,低位字节 放在较低地址单元(真正的栈顶单元),高位字节放在较高地址 单元。执行弹出指令正好相反。
推入或弹出双字,则堆栈指针减4或加4.
③ 允许PUSH CS,但不允许POP CS。 ④ 堆栈只有一个出入口,即当前栈顶为空时,栈顶和栈底指向同一内 存单元;SS:SP在任何时候都指向当前的栈顶。堆栈指针始终指 向堆栈中最后存入信息的单元。 ⑤ 堆栈的后进先出。因此,保存寄存器和恢复寄存器的内容时,要按 照对称的次序执行一系列的推入指令和弹出指令。
2) 累加器专用传送指令
(1) 输入输出指令(IN/OUT) CPU可以在AL 和1个8位端口间传送一个字节的数据 或在AX和2个连续8位端口间传送一个字的数据 或在EAX和4个连续8位端口间传送一个双字的数据 输入输出指令分为: 直接的输入输出指令 间接的输入输出指令。
直接的输入输出指令,指令提供端口号。 如:
FLAG
操作示意图
O D I
T S Z AH D7 D6
D4
A
D2
P
D0
C
2. 算术运算指令
算术运算指令涉及两种类型的数据 无符号数

MIPS系统指令系统超详细

MIPS系统指令系统超详细

000000 10001 10010 01000 00000 100000
6位
5位
5位
5位
5位
6位
MIPS汇编指令如下所示: add $t0, $s1, $s2 二进制表示为:00000010001100100100000000100000
一、 R型指令格式
31…….26 25……….21 20………..16 15……..11 10………6 5………….0
例3.5 使用取指令和存储指令进行编译 : C语句: A[12] = h + A[8];
【解答】 首先应该使用lw指令将A[8]取到寄存器中,再做加法运
算,最后利用sw指令将和存入A[12]。假设变量h在$s2寄存 器中,数组A的基址在$s3中,则该C语句的MIPS汇编指令 代码如下:
lw $t0, 32($s3) # 临时寄存器$t0存放A[8]的值 add $t0, $s2, $t0 # 临时寄存器$t0存放h+A[8]的值 sw $t0, 48($s3) # 把h+A[8]的值存储到A[12]中
③该指令执行rd=rs+rt的操作
例如:add a, b, c # b + c的和存放在a中
其中 add称操作符, 表示加运算;紧跟add的a是目的操作 数, 即为结果,其余b、c表示源操作数。每条指令中由 “#” 号领头的部分是注释。
例如: 计算 a=b+c+d+e;
add a,b,c # b + c的和存放在a中 add a,a,d # b + c + d的和已存放在a中 add a,a,e # b + c + d + e的和已存放在a中

新编16 32位微型计算机原理及应用答案(第五版)_第三章参考答案

新编16 32位微型计算机原理及应用答案(第五版)_第三章参考答案

第三章 8086/8088微处理器及其系统 教材习题3.1-3.70参考答案3.1 为什么要研究8086/8088微处理器及其系统?这比直接研究32位微处理器及其系统有何优缺点?解:尽管8086/8088后续的80286、80386、80486以及Pentium系列CPU结构和功能已发生很大变化,但从基本概念与结构以及指令格式上来讲,他们仍然是经典的8086/8088CPU的延续与提升。

3.2 8086 CPU有多少根数据线和地址线?它能寻址多少内存地址单元和I/O端口?8088CPU又有多少根数据线和地址线?为什么要设计8088CPU?解:8086 CPU有16根数据线和20根地址线,可寻址1MB存储单元和64KB的I/O端口。

8088 CPU 有16位内部数据线和8条外部数据总线,20根地址线。

8088 CPU 是8086 CPU的向下兼容版,这样设计主要为了与INTEL原有的8位外围接口芯片直接兼容。

3.3 8086 CPU内部按功能可分为哪两大部分?他们各自的主要功能是什么?解:从功能上讲,8086可分为两个部分,即总线接口单元(bus interface unit,BIU)和执行单元(execution unit ,EU)。

总线接口单元(BIU)的功能是负责CPU与存储器或I/O设备之间的数据传送。

EU的功能只是负责执行指令;执行的指令从BIU的指令队列缓冲器中取得,执行指令的结果或执行指令所需要的数据,都由EU向BIU发出请求,再由BIU经总线控制电路对存储器或外设存取。

3.4 8086 CPU内部的总线接口单元BIU由哪些功能部件组成?他们的基本操作原理是什么?解:BIU内有4个16位的段地址寄存器CS、DS、SS和ES,16位指令指针IP,6字节指令队列缓冲器,20位地址加法器和总线控制电路。

基本操作原理是BIU要从内存取指令送到指令队列缓冲器;CPU执行指令时,总线接口单元要配合执行单元从指定的内存单元或者外设端口中取数据,将数据传送给执行单元,或者把执行单元的操作结果传送到指定的内存单元或外设端口中。

第3章16位32位微处理器指令系统

第3章16位32位微处理器指令系统

3.1.2 8086/8088的指令格式
基本格式: [标号:] 操作码助记符 目的操作数,源操作数 [;注释]
标号:为该条指令所在内存单元的符号地址,后面要跟冒号。 标号一般由字母开头,后跟字母、数字或特殊字符,不允许 使用保留字。
操作码助记符:指示CPU执行什么样的操作。 操作数:分目的操作数和源操作数两种。目的操作数是指令
第3章-16位32位微处理器指 令系统
3.1 指令的基本格式
本节内容: 指令的构成 8086/8088的指令格式
3.1.1 指令的构成
➢ 包括两部分: 操作码:表示操作性质或类型编码 操作数:操作对象。
➢ 一般来说,第一字节表示操作码,第二字节表示 寻址方式,第三、四字节表示操作数在内存的位 移量或者是立即数(在指令中没有位移量时),第 五、六字节表示立即数。
输入指令IN 输出指令OUT
1)输入指令IN
➢ 格式:IN OPD,OPS
➢ 功能:从端口(地址为n或在DX中)输入8位数据到 AL或输入16位数据到AX。
对AL寄存器中的内容进行十进制调整,调整 后的内容仍存放到AL中。 ➢ 隐含寻址的指令,不需要计算EA,执行速度 快,而且大多为单字节指令。
3.3 8086/8088的指令系统
➢ 符号的约定: OPD :目的操作数(8/16位) OPS :源操作数(8/16位)
➢ 本节内容: 数据传送类指令 算术运算类指令 逻辑运算与移位类指令 串操作类指令 控制转移类指令 处理器控制类指令
➢ 格式:LES OPD,OPS ➢ 功能:从源操作数所指定的存储单元取出
某变量的地址指针(共4个字节),将低地址 两个字节(偏移量)送到目的操作数,将高地 址两个字节(变量的段首址)送到ES中。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;显示AX ;显示BX ;显示CX MOV BX, DS ;显示DS CALL listbx MOV BX, ES ;显示ES CALL listbx MOV BX, SS ;显示SS CALL listbx MOV BX, SEG start CALL listbx ;显示CS MOV BX, OFFSET start CALL listbx ;显示IP PUSHF POP BX ;显示PSW CALL listbx MOV AH, 4CH ;返回DOS INT 21H
BX循环左移4位,将要显示的 值移至低4位,保存在DL中 清DL 的高4位, 只保留要显示位的值 DL ← DL+30H 完成数值0~9的ASCII码转换 DL 超 出 39H ? N Y DL←DL+07H 完成数值A~F的ASCII码转换 用02功能显示DL中的字符 N CH ←CH-1转换结束? Y 返回DOS
code ENDS
list_bx子程序流程图
ENDቤተ መጻሕፍቲ ባይዱ
start
例2 程序存在的问题: 1.未处理输入非数字字符的情况 2.输入的十进制数范围为0~65535 3.当输入字符个数为0(直接回车)时,结果错误 4.未处理负数情况 5.结果的显示未换行 Input:1234 最后看到的是: 0D42t: 1234
思考:
1. 例1采用的是大写字母A~F进行显示, 若采用小写字符a ~ f 进行显示,程序如何改写? 1010 0011 1001 1110 ‘A39E’ 或 ‘a39e’ 2. 编程将 CPU 内 14个 16位寄存器当前的内容 分别用十六进制形式显示出来。
编程将CPU内14个16位寄存器当前的内容 分别用十六进制形式显示出来。 要点:
用十六进制显示 BX内容子程 序
MOV DL, 20H MOV AH, 02H INT 21H RET POPF listbx ENDP POP AX code POP ENDS DX END start POP BX POP CX RET listbx ENDP code ENDS END start ;显示空格符
data num data
SEGMENT DB 6, ?, 6 DUP(?) ENDS ASSUME CS:code, DS:data
string DB ‘Input:’,’$’
CODE SEGMENT
start: MOV AX, data MOV DS, AX CALL input CALL change CALL list_bx MOV AH, 4CH INT 21H
算法: 取出要显示的某4位,转换为对应的ASCII码, 再调用DOS系统功能进行显示。 1) 对于0000~1001(0~9), 先扩展成一个字节,高4位清0, 加上30H后, 即可得字符’0’~’9’对应的ASCII码。 0000 0001B + 30H= 31H 0000 1001B + 30H=39H 0001B ‘1’ 1001B ‘9’
2) 对于1010~1111(A~F), 先扩展成一个字节,高4位清0,
加上30H后, 还要再加上07H,才能得到’A’~’F’ 对应的ASCII 码 0000 1010B+30H+07H = 41H 1010B ‘A’ 0000 1111B+30H+07H =46H 1111B ‘F’
开始 显示字符个数CH=4 循环移位次数CL=4
SS:SP 执行push 后
SS:SP 执行call 后 SS:SP 执行call 前
(AX)
(IP) SS:SP 执行ret 后
input
(IP)
input code

下面程序段,思考是否可以完成 AX→ CX, BX→DX
CODE SEGMENT ASSUME CS:code start: MOV AX,data MOV DS,AX PUSH AX PUSH BX CALL sub MOV AH, 4CH INT 21H sub PROC POP DX POP CX 、、 、、 RET sub ENDP code ENDS END start
;执行程序
0000 0000 007B 0000 0000 0000 0000 0000 128E 128E 129E 129E 0000 7202
运行的结果与用R命令显示的结果相同, 程序运行结果正确
例2 将键盘输入的十进制数据串转换成相应大小的十六进
制数值存放在BX寄存器中。 分析: 从键盘输入’1234’ ( 表示1234 ) 用0AH功能输入, 则缓冲区存放的内容为: 06h 04h 31h 32h 33h 34h 0Dh num 问题:要转换成1234 即 04D2h存放在BX中, 怎么实现?
清ASCII码的高4位可得各数位大小值。
01h 02h 03h 04h
?
04D2h
01h
02h
03h
04h
?
04D2h
算法一: 数值大小 = 各位值×权值之和
1234D = 千位×1000 + 百位×100 + 十位×10 + 个位
= 1×1000 + 2×100 + 3×10 + 4 = 0000 0100 1101 0010B = 04D2H
N
CX ← CX-1 CX=0? Y BX←转换结果AX RET返回
change子程序流程图
1234D = ( ( ( 0×10 + 1 ) ×10 + 2 ) ×10 + 3 ) ×10 + 4
显示字符个数CH=4 循环移位次数CL=4 BX循环左移4位,将要显示的值 移至低4位,保存在DL中 清DL 的高4位, 只保留要显示位的值
主程序流程图
调用09功能 显示输入提示
调用0A 功能 等待从键盘输入数据 RET返回 input 子程序流程图
input PROC LEA MOV INT LEA MOV INT RET input ENDP
DX , string AH , 09H 21H DX , num AH , 0AH 21H
▲ 将上例改写为一个子程序,入口参数为BX
▲ 子程序中注意寄存器值的保存和恢复
▲ 注意CS 、IP、PSW寄存器值的获取方法
例 将CPU内14个16位寄存器当前内容分别用16进制形式显示出来
(采用DEBUG下R命令的显示顺序)
code SEGMENT ASSUME CS:code start: PUSH BX MOV BX, AX CALL listbx POP BX CALL listbx MOV BX, CX CALL listbx MOV BX, DX CALL listbx MOV BX, SP CALL listbx MOV BX, BP CALL listbx MOV BX, SI CALL listbx MOV BX, DI CALL listbx
DL ← DL+30H 完成数值0~9的ASCII码转换
DL 超出39H?
N
DL←DL+07H 完成数值A~F的ASCII码转换 用02功能显示DL中的字符
Y
N
CH ←CH-1转换结束? RET返回
Y
list_bx PROC MOV CH, 4 MOV CL, 4 next: ROL BX, CL MOV DL, BL AND DL, 0FH ADD DL, 30H CMP DL, 39H JLE print ADD DL, 07H print: MOV AH, 2H INT 21H DEC CH JNZ next RET ;子程返回 list_bx ENDP
06 04 31 32 33 34 0D 00 00 00 num
SI ← 数据串偏址 CX ← 数据串长度 AX ← 部分和初值0 DI ← 乘数10 AX←部分和乘10 (BX) ← 输入字符的数值大小 (AX) ← (AX)+(BX) 形成新的部分和 修改SI指针, 指向下一位输入
06 04 31 32 33 34 0D 00 00 00 num
AX=0000 BX=0000 CX=007B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=128E ES=128E SS=129E CS=129E IP=0000 NV UP EI PL NZ NA PO NC 129E:0000 53 PUSH BX
-G Program terminated normally -
01h
02h
03h
04h
?
04D2h
算法二:
数值大小 =部分和×10 +下一位数值
1234D = ( ( ( 0×10 + 1 ) ×10 + 2 ) ×10 + 3 ) ×10 + 4 = 0000 0100 1101 0010B = 04D2H
部分和从0开始,循环次数等于输入的位数
开始 初始化DS的值 CALL input 显示输入提示,等待 从键盘输入十进制数据串 CALL change 将数据串转化为 相应的数值存放在BX中 CALL list_bx 将BX内容以16 进制显示出来 返回DOS
;显示DX
;显示SP ;显示BP ;显示SI ;显示DI
listbx PROC PUSH CX ;保存寄存器 PUSH BX PUSH DX PUSH AX listbx PROC PUSHF MOV CH, 4 MOV CL, 4 next: ROL BX, CL MOV DL, BL AND DL, 0FH ADD DL, 30H CMP DL, 39H JLE print ADD DL,07H print: MOV AH,2H INT 21H DEC CH JNZ next
相关文档
最新文档