微处理器思考与习题

文章描述:-2022年4月14日发(作者:祁序)第1章思考与习题:1、简述计算机系统的硬件构成和软件构成。计算机的硬件结构由运算器、控制器、存储器、输入设备、输出设备及连接各部件的总线组成。其中,运算器又称为算术/逻辑运算单元,完成数据的算术(加、减、乘、除)和逻辑(与、或、非、异)等运算以及移位等操作,它是一个采用二进制运算信息加工部件。存储器是计算机的记忆部件,存储控制计算机操作的命令(指令)和被处理的

-

微处理器思考与习题
2022年4月14日发
(作者:祁序)

第1章思考与习题:

1、简述计算机系统的硬件构成和软件构成。

计算机的硬件结构由运算器、控制器、存储器、输入设备、输出设备及连接各部件的总

线组成。其中,运算器又称为算术/逻辑运算单元,完成数据的算术(加、减、乘、除)和逻辑(与、

或、非、异)等运算以及移位等操作,它是一个采用二进制运算信息加工部件。存储器是计算机的记忆部件,存储控制计算机操作的命令(指令)和被处理的信息数据,

并对处理结果加以保存。存储器存储的信息有两类:一类是命令信息,指挥计算机系统工作,

用来完成所设计的任务,这类信息被存放在存储器的代码区或程序区;另一类是数据是指被

处理的对象或结果,这类信息被存放在数据区。一般将存储器分为两级:内存和外存,目前

使用的内存是半导体存储器,外存采用硬盘、磁带、光盘等。平时程序保存在外存,执行时

再将其调入内存中运行。狭义的存储器仅指内存储器。控制器是整个系统的指挥部件,对运行的指令逐一分析,发出控制信号并执行其相应操

作。输入设备与输出设备,通称外围设备,是对信息形式的转换,如将语言文字、声音、机

械动作等信息形式转换为计算机能识别的二进制格式信息,或将其反向转换。

总线是计算机各部件间传输信息的公共通道,各部件分时复用总线,满足数据、地址、

指令和控制信息在各部件之间快速传送的需要。

微型计算机的软件由系统软件和应用软件构成。

系统软件包括操作系统、程序设计语言的编译程序和其他程序。

操作系统是常驻内存的软件系统,包括系统资源管理(CPU管理,存储器管理、I/O管理

和驱动程序)、任务管理、文件管理和程序库。为使用者提供灵活方便操作功能,使资源得到

最充分有效的利用。

各种程序设计语言的编译系统为用户开发应用软件提供有力支持,如汇编语言的汇编程

序,各种高级语言的汇编程序、连接程序以及各种调试工具。

其他程序,如系统诊断程序、故障定位程序、系统配置程序等。

应用软件(或称用户软件)是为用户实现给定的任务而编写、选购或订购的程序,它只

适合给定环境的指定用途,一般驻留在外部存储器中,只在运行时才调入内存储器。

2、冯·诺依曼体系结构的五个部件是什么?总线的作用是什么?

冯·诺依曼体系结构由运算器、控制器、存储器、输入设备、输出设备及连接各部件的总

线组成。如下图所示:

总线(Bus)是计算机各部件间传输信息的公共通道,各部件分时复用总线,满足数据、

地址、指令和控制信息在各部件之间快速传送的需要。

3、填空:(1)计算机系统中的存储器分为内存储器和外存储器。在微处理器执行程序时,必

须将指令存放在内存储器中。(2)计算机存储数据的最小单位为字节。1KB容量的存储器能存储

1024个这样的基

本单位。(3)在计算机系统中,多个部件之间信息传送的公共通道称为总线。在公共通道上传送

的信息有数据、地址、控制和状态信息。

4、将下列十进制数分别转换为二进制数和十六进制数:(1)129(2)1022(3)0.625

5、将下列二进制数分别转换为十进制数和十六进制数:(1)10101011B(2)101101.1011B

6、写出下列数的原码、反码和补码(设字长为8位):

(1)10101011B=171=0ABH

(2)101101.1011B=45.6875=

(1)129=10000001B=81H

(2)1022=1111111110B=3FEH

(3)0.625=0.101B=

输入设备存储器输出设备

控制器运算器

总线(1)-0(2)20(3)-15

7、试写出下列字符的ASCII码:

(1)5(2)LF(3)CR(4)SP(5)ESC(6)b

8、若A=01010011B,说明什么运算可以完成下述操作?(1)将A的第0、2、4、6位变反;(2)将A的第1、2、3、4位清零;(3)将A的第1、3、5位置1。

9、为什么软件能够转化为硬件?硬件能否转化为软件?实现这种转化的媒介是什么?

对于一个具体任务而言,一般既可以用硬件完成,也可用软件完成,从理论上说,任何

软件算法都能由硬件实现,反之亦然,这就是硬件与软件的逻辑的等价性。设计计算机系统

或是在现有的系统上增加功能时,具体采用硬件还是采用软件实现,取决于价格、速度、可

靠性等因素。随着超大规模集成电路的发展,以前由软件实现的功能现在更多地直接由硬件

实现。实现这种转化的媒介是所谓的固件(firmware),形式上类似硬件,但功能上又像软件,

这种趋势成为软件的硬化和固化。

10、8位二进制补码表示的十进制数的范围是多少?

(1)A

(2)A

(3)A

异或

01010101B

11100001B

00101010B

将A的第0、2、4、6位变反;

将A的第1、2、3、4位清零;

将A的第1、3、5位置1。

(1)5

(2)LF

(3)CR

(4)SP

35H

0AH

0DH

20H

1BH

62H

(1)-0原码10000000B反码11111111B补码00000000B

(2)20

(3)-15

原码00100100B反码00100100B补码00100100B

原码10001111B反码11110000B补码10000001B

(5)ESC

(6)b-128到+127

11、计算机的分类方式有哪些?

1、按处理数据的形态分类

2、按照设计的目的分类

3、按照使用的用途分类

计算机;

4、按照内部逻辑结构分类

5、按综合性能指标分类

机等几类。

计算机分为数字计算机和模拟计算机;

计算机可分为专用计算机和通用计算机;

计算机可分为高级科学计算机、工业控制计算机和数据

计算机可分为单CPU处理机与多CPU处理机,

8位机、16位机、32位机或64位计算机,

CISC与RISC计算机等;

计算机可分为巨型机、大型机、小型机、工作站、微型

第2章思考与习题:

1、微处理器有哪的三项主要功能?

微处理器的三项主要功能:

(1)在微处理器与存储器或I/O之间传送数据;

(2)基本的算术与逻辑运算;

(3)通过简单判定,控制程序的流向。

2、按照指令的串行执行和并行执行,CPU可分为哪六种体系结构?

CPU的六种体系结构为:

1、随机逻辑体系结构

2、微码体系结构

3、流水线体系结构

4、超流水线体系结构

5、超标量体系结构

6、多核微处理器体系结构

3、简述冯•诺依曼结构、哈佛结构和改进型哈这三种特点?

冯·诺伊曼结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起

的计算机设计概念结构,相对于并行计算的串行式结构参考模型。依本结构设计出的计算机

又称存储程序型计算机。根据存储程序原理,把程序本身当作数据来对待,程序和该程序处

理的数据在同一个存储体按不同区域(程序区、数据区等)存储,并确定了存储程序计算机

的五大组成部分和基本工作方法。冯-诺依曼结构的数据总线和指令总线是分时复用的,在同

一总线上,有时传送的是数据有时是指令,因此它取指令和访问数据是无法同时进行的。

哈佛结构是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序

指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,

并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,据有相互独立的指令总

线和数据总线,指令和数据可以有不同的数据宽度,访问指令和访问数据可以同时进行,执

行时可以预先读取下一条指令。哈佛结构的微处理器通常具有较高的执行效率。

哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,

即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问,如下图

所示。这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序

存储器)和操作数(来自数据存储器),从而提高了执行速度,提高了数据的吞吐率。又由于

程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠。程序指令存储和

数据存储分开,可以使指令和数据有不同的数据宽度。

图1.8哈佛结构框图改进型哈佛结构仍然使用两个独立的存储器模块,分别存储指令和数据,每个存储模块

都不允许指令和数据并存,以便实现并行处理。改进型哈佛结构具有一条独立的地址总线和

一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),

公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输,两条总线

由程序存储器和数据存储器分时共用,如下图所示。

4、什么是CPU、MPU、μP、μC和MCU?

5、简介CPU指令执行流程。

指令执行步骤:

第一步:取指令和分析指令。首先根据PC所指出的现行指令地址,从内存中取出该条指

令的指令码,并送到控制器的指令寄存器中,然后对所取的指令进行分析,即根据指令中

的操作码进行译码,确定计算机应进行什么操作。译码信号被送往操作控制部件,和时序

电位、测试条件配合,产生执行本条指令相应的控制电位序列。

第二步:执行指令。根据指令分析结果,由操作控制部件器发出完成操作所需要的一系列

控制电位,指挥计算机有关部件完成这一操作,同时为取下一条指令作好准备。

由此可见,控制器的工作就是取指令、分析指令、执行指令的过程。周而复始地重复这一

过程,就构成了执行指令序列(程序)的自动控制过程。

6、流水线体系结构与超标量体系结构各有何特点?

流水线的实质是通过在同一时间做多件事情来提高机器的性能,因此指令流水线是一种

可以将多条指令的执行过程相互重叠的实现技巧,它是提高处理器处理速度的关键技术

之一。其特点是:

CPU中央处理器;MPU微处理器;μP微处理器;μC微控制器;MCU微控制器。

具有时间的并行性;流水线分工越细,可同时运行的指令越多,吞吐率就越高;流水线

每个阶段的执行时间应尽量一致;流水线充满(满载)时达到最大的吞吐率。

超标量就是使用多条流水线来提高CPU的工作效率,在一个时钟周期内CPU可以执行一

条以上的指令。其特点是:

配置有多个性能不同的处理部件,采用多条流水线并行处理;能同时对若干条指令进行

译码,将可并行执行的指令送往不同的执行部件,从而达到在每个时钟周期启动多条指

令的目的;在程序运行期间由硬件(通常是状态记录部件和调度部件)完成指令调度。

7、CISC与RISC各自的特点有哪些?其典型产品代表有哪些?

1.CISC体系的特点

使用微代码:指令集可以直接在微代码存储器里执行,新设计的处理器,只需增加较少

的器部件就可以执行同样的指令集,也可以很快地编写新的指令集程式。

庞大的指令集:可以减少编程所需要的代码行数,减轻程式师的负担。

高阶语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到存储器以及存

储器到寄存器的指令。

RISC体系特点

精简指令集:包含了简单、基本的指令,透过这些简单、基本的指令,就可以组合成复

杂指令。

同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。

单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一

时间内执行一系列的指令。

RISC与CISC的主要特征对比

比较内容

指令系统

指令数目

指令格式

寻址方式

指令字长

可访存指令

各种指令使用频率

各种指令执行时间

优化编译实现

程序源代码长度

控制器实现方式

软件系统开发时间

CISC

复杂,庞大

一般大于200

一般大于4

一般大于4

不固定

不加限制

相差很大

相差很大

很难

较短

绝大多数为微程序控制

较短

RISC

简单,精简

一般小于100

一般小于4

一般小于4

等长

只有LOAD/STORE指

相差不大

绝大多数在一个周期内

完成

较容易

较长

绝大多数为硬布线控制

较长

CISC体系的代表为Intel的80X86,RISC体系的代表为IBM的PowerPC。

第三章思考与练习题

1、8086CPU由哪两部分组成?各有何主要功能?

8086微处理器按功能可分为执行部件(EU)和总线接口部件(BIU)。执行部件负责指令执

行,它由寄存器组、算术逻辑部件、标志寄存器组成。总线接口部件执行所有的总线操作,

如20位地址形成、与主存储器或I/O设备交换数据等。

2、在8086CPU的寄存器中,哪些可作为8位/16位寄存器使用?哪些寄存器不能由程序员

操作使用?

AX、BX、CX、DX既可以用字(16位)形式访问,也可以将每个寄存器分别分成两个独立

的8位寄存器(AH,AL;BH,BL;CH,CL;DH,DL),用字节(8位)形式访问,用来暂存计算过程

中所用到的操作数、结果或其它信息。

不支持将数据直接送入段寄存器CS以及IP和标志寄存器FLAG

3、在8086CPU的寄存器中,有哪些通用寄存器和专用寄存器?试说明专用寄存器的作用。

通用寄存器:AX,BX,CX,DX,SP,BP,SI,DI。

专用寄存器:CS,DS,ES,SS,IP和FLAGS

IP:用于寻址当前需要取出的指令字节,程序员不能对它直接操作;

FLAGS:用于指示微处理器的状态并控制它的操作;

CS:代码段寄存器,代码段是一个存储区域,存放的是CPU要使用的代码,CS存放代码段

的段基地址;

DS:数据段寄存器,数据段是包含程序使用的大部分数据的存储区,DS中存放数据段的段

基地址;

ES:附加段寄存器,附加段是为某些串操作指令存放目的操作数而附近的一个数据段,ES

中存放该数据段的段基地址;

SS:堆栈段寄存器,堆栈段是内存中一个特殊的存储区,用于暂时存放程序运行时所需的数

据或地址信息。SS中存放该存储区的段基地址。

4、什么是堆栈?堆栈指针的作用是什么?

堆栈:在存储器中开辟的一个区域,用来存放需要暂时保存的数据。其操作特点是先进后出。堆栈指针用

于指向当前栈顶单元。

5、8086CPU具有20条地址线,可直接寻址1M容量的内存空间,在访问I/O端口时,使

用地址线16,最多可寻址64K个I/O端口。

6、在8086CPU中,物理地址和逻辑地址是指什么?二者之间有何联系?有效地址是如何产

生的?

物理地址:指存储器中存储单元的实际地址编码,是一种绝对地址,是CPU访问存储器的

实际寻址地址,对于8086系统,地址范围为00000H~FFFFFH。

逻辑地址:由段基址和偏移地址组成,均为无符号的16位二进制数,程序设计时采用逻辑

地址,可由逻辑地址变换为物理地址,物理地址=段基址×16+偏移地址。

在8086/8088的各种寻址方式中,寻存储单元所需的偏移地址可由各种成分组成,称为有

效地址,用EA表示。可以通过存储器寻址方式获得有效地址。

7、设现行数据段位于B0000H到BFFFFH,DS段寄存器的内容是什么?

DS段寄存器的内容是B000H。

8、设双字(4个字节)12345678H的起始地址是C000H:0002H,试说明这个双字在存储器中

是如何存放的。

C000H:0002H78H

C000H:0003H56H

C000H:0004H34H

C000H:0005H12H

9、何谓全译码电路?何谓部分译码电路?

在系统中,存储器或I/O接口需使用部分地址信号,这些地址信号通常为地址信号中的低位

地址信号,全译码电路将其余所有的高位地址信号经译码后作片选信号,片选信号与唯一的

存储器或I/O接口的地址对应。

部分译码电路将存储器或I/O接口所用的低位地址线外的高位地址线中的部分地址信号作为

译码电路的输入信号。采用这种方法的优点是减少了译码电路的输入信号,但译码的输出与

地址不是一一对应的关系。由于未参加译码的地址信号可以有不同的编码,因而译码的输出

可选中不同的地址。

10、一个中断类型号为01CH的中断处理程序存放在0100H:3800H开始的内存中,其中断

向量表中的CS、IP分别存储在哪些单元?

01CH号中断的中断向量表地址为:01CH×4=070H,则向量表中中断入口地址存放情况如下

表所示

0006FH„„„

00070H

00071H

00072H

00073H

00H

38H

00H

01H

IP

CS

00074H„„„

11、一台微型机,其存储器首址为1000H,末址为5FFFH,存储容量为(D)KB。A.8B.12C.16D.20

12、微处理器用13条地址线寻址,其最大寻址范围为(D)A.1KBB.2KBC.4KBD.8KB

13、有一存储器芯片,地址线为A0~A12,数据线为D0~D7,则该芯片的存储容量为(B)

A.4K×8位B.8K×8位C.16K×8位D.32K×8位

14、8086CPU对I/O操作时,如何将8位、16位的数据传送?

I/O口地址不超过8位时可采用直接寻址方式访问,超过8位时必须用DX寄存器采用间接寻

址方式访问,8位数据通过累加器AL、16位数据通过AX传送。

15、图3-23是一开关式可选译码电路,即利用开关式地址可选译码器,写出其地址范围是多

少。

图3-23开关式可选译码电路

当DIP开关全部接通时,则当A3-A8=00000B,A9=1,AE=0时选择器输出低电平,地址范围

是:200H-207H;当DIP开关全部断开时,则当A3-A8=111111B,A9=1,AE=0时选择器输出

低电平,地址范围是:3F8H-3FFH。所以由DIP开关任何一种组合给出连续的8个地址,DIP

开关的64种不同可覆盖从200H到3FFH的地址范围。其中上面的138给出输入口地址,下面

的138给出输出口地址,它们是同一个地址。

第四章思考与习题

1.内存寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个

段寄存器指出段地址,指令中应如何表示?

堆栈操作默认段地址由SS段寄存器给出,不可段超越;串操作指令中,源串默认段地址

由DS段寄存器给出,可以段超越,目的串默认段地址由ES段寄存器给出,不可段超越;

BP做基址寄存器,默认段地址由SS段寄存器给出,可以段超越;一般数据存取默认段地

址由DS段寄存器给出,可以段超越。

2.在8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,

VAR的偏移量为0060H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操

作数,计算它们的物理地址。

(1)MOVBX,12

(2)MOV[BX],12

(3)MOVES:[SI],AX

(4)MOVVAR,12

(5)MOV[BX][SI],AX

(6)MOV6[BP][SI],AL

(7)MOV[1000H],DX

(8)MOV6[BX],CX

(9)MOVVAR+5,AX

(1)寄存器寻址

(2)寄存器间接寻址

(3)寄存器间接寻址

(4)直接寻址

(5)基址变址寻址

(7)直接寻址

(9)直接寻址

物理地址:10300H

物理地址:20200H

物理地址:10060H

物理地址:10500H

物理地址:12306H

物理地址:11000H

物理地址:10306H

物理地址:10065H

(6)相对基址变址寻址

(8)寄存器相对寻址

3.下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。

(1)XCHGCX,AX

(2)MOV[BX],[2000]

(3)XCHGBX,IP

(4)PUSHCS

(5)POPCS

(6)IBX,DX

(7)MOVBYTE[BX],5000

(8)MOVCS,[3000]

(9)MOVBX,OFFSETVAR[SI]

(1)正确

(2)错误,不可以在两个存储器操作数之间进行数据传送

(3)错误,8086中没有以IP为寄存器名的指令

(4)正确

(5)错误,不可以将CS做为各类指令中的目的操作数。

(6)错误,输入/输出指令只能通过累加器来传送数据

(7)错误,属性操作符应为BYTEPRT

(8)错误,同(5)

(9)正确

4.给出下列各条指令执行后AL以及CF,OF,SF和ZF的值。

XOR

MOV

IC

OT

SHL

CMP

SUB

SHL

AL,AL

AL,255

AL

AL

AL=00H;CF、OF、SF、ZF=0001

AL=0FFH;CF、OF、SF、ZF=0001

AL=00H;CF、OF、SF、ZF=0001

AL=0FFH;CF、OF、SF、ZF=0001

AL=0FEH;CF、OF、SF、ZF=1010

AL=0FEH;CF、OF、SF、ZF=0010

AL=07FH;CF、OF、SF、ZF=0100

AL=0FEH;CF、OF、SF、ZF=0110

AL,1

AL,10

AL,7FH

AL,1

5.试述以下指令的区别。

(1)MOVAX,1000H

(2)MOVAX,MEM

(3)MOVAX,MEM

(4)JMPSHORTL1

(5)CMPDX,CX

与MOV

与MOV

与LEA

与JMP

与SUB

与MOV

AX,[1000H]

AX,OFFSETMEM

AX,MEM

EARPTRL1

DX,CX

DS:[BP][SI],CL(6)MOV[BP][SI],CL

(1)源操作数为立即寻址

(2)取源操作数内容到AX

(3)取源操作数内容到AX

(4)短转移,8位位移量

(6)目的操作数在堆栈段

源操作数为直接寻址

取源操作数有效地址到AX

取源操作数有效地址到AX

近转移,16位位移量

影响标志位,保存结果

目的操作数在数据段

(5)影响标志位,不保存结果

6.设当前SS=2010H,SP=0FE00H,BX=3456H,计算当前栈顶的物理地址为多少?当执行PUSH

BX指令后,栈顶物理地址和栈顶2个字节的内容分别是什么?

执行入栈指令前

栈顶的物理地址=SS*16+SP=20100H+0FE00H=2FF00H

执行入栈指令后

栈顶的物理地址=SS*16+SP-2=20100H+0FE00H-2=2FEFEH,

(2FEFEH)=56H,(2FEFFH)=34H

7.设AX=1978H,VALUE字变量中存放的内容为2013H,写出下列各条指令执行后AX寄存器

和CF、ZF、OF、SF、PF的值。

(1)XORAX,VALUE

(2)ADAX,VALUE

(3)SUBAX,VALUE

(4)CMPAX,VALUE

(5)OTAX

(6)TESTAX,VALUE

(1)XORAX,VALUE

(2)ADAX,VALUE

(3)SUBAX,VALUE

(4)CMPAX,VALUE

(5)OTAX

8.伪指令与指令的本质区别是什么?

[指令语句]每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目

(6)TESTAX,VALUE

AX=396BH,CF、ZF、OF、SF、PF=00000

AX=0010H,CF、ZF、OF、SF、PF=00000

AX=0F965H,CF、ZF、OF、SF、PF=10011

AX=1978H,CF、ZF、OF、SF、PF=10011

AX=0E687H,CF、ZF、OF、SF、PF=不受影响

AX=1978H,CF、ZF、OF、SF、PF=00000

标代码),所以这种语句又叫可执行语句。每一条指令语句表示计算机具有的一个基本操

作,如数据传送,两数相加或相减,移位等,而这种操作是在目标程序(指令代码的有

序集合)运行时完成的,是依赖于计算机内的中央处理器(CPU)、存储器、I/O接口等硬

件设备来实现的。

[伪指令语句]伪指令语句是用于指示汇编程序如何汇编源程序,所以这种语句又叫指示

性语句。例如源程序中的伪指令语句告诉汇编程序:该源程序如何分段,有哪些逻辑段

在程序段中是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如

何分配的等等。伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目

标代码。伪指令语句的这些命令功能是由汇编程序在汇编源程序时来完成的,而不是在

运行目标程序时实现的。

9.画出下列语句中的数据在存储器中的存储情况。DATASEGMET

VARBDB34,34H,'GOOD',2DUP(1,2DUP(0))

VARWDW5678H,'CD',$+2,2DUP(100)

VARCEQU12DATAEDS

DATA:000034VARB

000134H

0002‘G’

0003‘O’

0004‘O’

0005‘D’

00061

00070

00080

00091

000A0

000B0

000C78HVARW

000D56H

000E‘D’

000F‘C’

001012H

001164H

001264H

10.按下列要求,写出各数据定义语句。

(1)DB1为10H个重复的字节数据序列:1,2,5个3,4。

(2)DB2为字符串'STUDETS'。

(3)DB3为十六进制数序列:12H,0ABCDH。

(4)用等值语句给符号COUT赋以DB1数据区所占字节数,该语句写在最后。

(1)DB1DB10HDUP(1,2,5DUP(3),4)

(2)DB2DB'STUDETS'。

(3)DB3DW12H,0ABCDH。

(4)COUTEQUDB2-DB1

11.若自STRIG单元开始存放有一个字符串(以字符“$”结束):

(1)编程统计该字符串长度(不包含$字符,并假设长度为两字节)。

(2)把字符串长度的统计结果存放在STRIG字符串“$”之后的两个储存单元中。

DATA

STRIG

LE

DATA

STAK

STAK

CODE

START:

SEGMET

DB'123456789ABCDEF$'

DW?

EDS

SEGMETSTACK

DB100DUP(?)

EDS

SEGMET

ASSUMECS:CODE,DS:DATA,SS:STAK

MOVAX,DATA

MOVDS,AX

LEABX,STRIG

XORCX,CX

LOP:MOVAL,[BX]

CMPAL,'$'

JZEXIT

ICCX

ICBX

JMPLOPEXIT:MOVLE,CX

MOVAH,4CH

IT21HCODEEDSEDSTART

12.试编写完整程序,在内存单元中定义一个两位的压缩BCD码,将其转换为两个ASCII码,

分别存入内存单元中。

DATA

BCD

ASC

SEGMET

DB29H

DB?,?

DATAEDS

STAKSEGMETSTACKDB100DUP(?)

STAKEDS

CODESEGMETASSUMECS:CODE,DS:DATA,SS:STAK

START:MOVAX,DATAMOVDS,AXLEABX,BCDLEASI,ASCMOVAL,[BX]MOVCL,4SHRAL,CLADDAL,30HMOV[SI],ALICSIMOVAL,[BX]ADAL,0FHADDAL,30HMOV[SI],ALMOVAH,4CHIT21H

CODEEDSEDSTART

13.设计程序,在内存单元中定义一个32位数,将其分为8组,每组4位(一个字节中的高

4位或低4位),将这8组数依次放入首地址为BUF的内存单元中。

DATASEGMET

DWORD1DD12345678H

BUFDB8DUP(?)

DATAEDS

STAKSEGMETSTACKDB100DUP(?)

STAKEDS

CODESEGMETASSUMECS:CODE,DS:DATA,SS:STAK

START:MOVAX,DATAMOVDS,AXLEABX,DWORD1LEASI,BUFMOVCX,4

LOP:PUSHCXMOVAL,[BX]MOVCL,4SHRAL,CLMOV[SI],AL

CODE

ICSI

MOVAL,[BX]

ADAL,0FH

MOV[SI],AL

ICSI

ICBX

POPCX

LOOPLOP

MOVAH,4CH

IT21H

EDS

EDSTART

14.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

STAKSEGMETSTACKDB100DUP(?)

STAKEDS

CODESEGMETASSUMECS:CODE,SS:STAK

START:MOVAH,01HIT21HCMPAL,1BH;按ESC键结束程序运行JEEXITCMPAL,'a'JBEXTCMPAL,'z'JAEXTSUBAL,20H

EXT:MOVDL,ALMOVAH,02HIT21HJMPSTART

EXIT:MOVAH,4CHIT21H

CODEEDSEDSTART

15.键盘输入10个学生的成绩,试编制一个程序统计60~69分,70~79分,80~89分,90~

99分及100分的人数,分别存放到S6,S7,S8,S9及S10单元中。

DATA

S6

S7

S8

S9

S10

SEGMET

DB0

DB0

DB0

DB0

DB0

DATAEDS

STAKSEGMETSTACKDB100DUP(?)

STAKEDS

CODESEGMETASSUMECS:CODE,DS:DATA,SS:STAK

START:MOVAX,DATAMOVDS,AXMOVCX,10

LOP:CALLASC2HEXMOVBL,10DIVBLCMPAL,6JZL1ICS6JMPEXTL1:CMPAL,7JZL2ICS7JMPEXTL2:CMPAL,8JZL3ICS8JMPEXTL3:CMPAL,9JZL4ICS9JMPEXTL4:CMPAL,10JZEXTICS10

EXT:LOOPLOPMOVAH,4CHIT21H

ASC2HEXPROCMOVBL,0LL:MOVAH,01HIT21HCMPAL,0DHJEEXITSUBAL,30HXCHGBL,ALMOVBH,10MULBHADDBL,ALJMPLL

EXIT:MOVDL,0AHMOVAH,02HIT21HMOVAH,0MOVAL,BLRET

ASC2HEXEDP

CODEEDSEDSTART

17.试编一程序,把地址偏移量为100H单元开始的256个单元分别写入00H,01H,02H,„,

FFH数据。

DATA

VAR

DATA

SEGMET

ORG100H

DB256DUP(?)

EDS

SEGMETSTACK

DB100DUP(?)

EDS

SEGMET

ASSUMECS:CODE,DS:DATA,SS:STACK

MOVAX,DATA

MOVDS,AX

MOVAL,0

MOVCX,256

LEABX,VAR

L1:MOV[BX],AL

ICAL

ICBX

LOOPL1

MOVAH,4CH

IT21H

CODE

18.统计上题写入的数据块中0元素、正元素、负元素的个数,并分别把统计结果送入上述数

据块之后的三个单元中。

DATA

VAR

SEGMET

ORG100H

DB256DUP(?)

EDS

EDSTART

STACK

STACK

CODE

START:

Z

P

DATA

DB0

DB0

DB0

EDS

SEGMETSTACK

DB100DUP(?)

EDS

SEGMET

ASSUMECS:CODE,DS:DATA,SS:STACK

MOVAX,DATA

MOVDS,AX

MOVAL,0

MOVCX,256

LEABX,VAR

MOV[BX],AL

ICAL

ICBX

LOOPL1

STACK

STACK

CODE

START:

L1:

;

MOVCX,256

LEABX,VAR

L4:MOVAL,[BX]

CMPAL,0

JZL2

ICZ

JMPEXT

L2:

JLL3

ICP

JMPEXT

IC

ICBX

LOOPL4

MOVAH,4CH

IT21H

CODE

19.把地址偏移量为STRG1单元开始的128个单元内容传送到地址偏移量为STRG2开始的单元

中。

EDS

EDSTART

L3:

EXT:

DATASEGMET

DB128DUP(?)

DB128DUP(?)

EDS

SEGMETSTACK

DB100DUP(?)

EDS

SEGMET

ASSUMECS:CODE,DS:DATA,SS:STACK

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEASI,STRG1

LEADI,STRG2

MOVCX,128

CLD

REPMOVSB

MOVAH,4CH

IT21H

STRG1

STRG2

DATA

STACK

STACK

CODE

START:

CODE

EDS

EDSTART

20.寄存器SI作地址指针,自SI所指的内存单元开始连续存放着三个无符号数(以字为单位),

编程序求它们之和,并将结果存放在这三个数之后的单元中(保存进位)。

DATA

VAR

DATA

SEGMET

DW1234,2345,3567

DW?,?

EDS

SEGMETSTACK

DB100DUP(?)

EDS

SEGMET

ASSUMECS:CODE,DS:DATA,SS:STACK

MOVAX,DATA

MOVDS,AX

LEASI,VAR

MOVDX,0

MOVAX,[SI]

STACK

STACK

CODE

START:

ADDAX,[SI+2]

ADCDX,0

ADDAX,[SI+4]

ADCDX,0

MOV[SI+6],AX

MOV[SI+8],DX

MOVAH,4CH

IT21H

CODE

EDS

EDSTART

-

微处理器思考与习题

发布时间:2022-04-14 09:49:22
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 19 条评论,260人围观)

最近发表

随便看看

热门文章

标签列表