微机原理习题参考答案1docx.docx

上传人:b****5 文档编号:6515096 上传时间:2023-01-07 格式:DOCX 页数:23 大小:69.29KB
下载 相关 举报
微机原理习题参考答案1docx.docx_第1页
第1页 / 共23页
微机原理习题参考答案1docx.docx_第2页
第2页 / 共23页
微机原理习题参考答案1docx.docx_第3页
第3页 / 共23页
微机原理习题参考答案1docx.docx_第4页
第4页 / 共23页
微机原理习题参考答案1docx.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

微机原理习题参考答案1docx.docx

《微机原理习题参考答案1docx.docx》由会员分享,可在线阅读,更多相关《微机原理习题参考答案1docx.docx(23页珍藏版)》请在冰豆网上搜索。

微机原理习题参考答案1docx.docx

微机原理习题参考答案1docx

习题与思考题(参考答案)

第一章

1.6将下列十进制数转换成二进制数。

256D=10000000B237.135D=11101101.0010001B

12.58D=1100.100101B0.374D二0.0101B

1.7写出下列二进制数对应的十进制数、八进制数、十六进制数。

1101110B二110D二156Q二6EH111011000B二472D二730Q二1D8H

1101111.1001B-111.5625D二157.44Q二6F・9H

1.8填空:

10101.001B=(21.125)D=(25.1)Q=(15.2)H

2DE.6H=(1011011110.011)B=(1336.3)Q=(734.375)D1.9试写出下列用补码表示的二进制数的真值。

00111010-00111010-+5810000000--128

10000101->11111011->-12311111110->10000010->-201111110-01111110-+126

1.10已知X=35,Y=-89,试用补码运算法则,求出:

X+Y=?

[X]补=00100011[Y]原=11011001[Y]补=10100111

[X+Y]补=[X]补+[Y]补=00100011+10100111=11001010

X+Y=

=10110110B=-54

1.11已知[X]补=10011011,[X+Y]补=10111001,试求:

1[x—Y]补=?

(有溢出,结果出错。

因为[X+Y]补=[X]补+[Y]补=10111001

所以[Y]补=[X+Y]补一[X]补=00011110

[-Y]补=11100010

[X—Yh=[X]补+[—丫]补=10011011+11100010=01111101

2X、Y的真值各为多少?

[X]原=11100101,X的真值为一101;[丫]原=00011110,Y的

真值为30

第二章

2.38086CPU的ALE信号的功能是什么?

答:

ALE(AddressLatchEnable)是8086CPU提供给地址锁存器的控制信号,在任何一个总线周期的T1状态,ALE输出有效电平(正脉冲),以表示当前地址/数据、地址/状态复用总线上输出的是地址信息,锁存器可利用它的下降沿将地址锁存起来。

ALE信号不能浮空。

2.48086CPU内部的寄存器由哪几种类型组成?

各自的作用是什么?

答:

8086CPU内部有14个16位寄存器,可以分为以下三组:

分别是通用寄存器组,段寄存器组,控制寄存器。

通用寄存器组可以分为两组:

数据寄存器和地址指针与变址寄存器。

数据寄存器主要用来保存算术、逻辑运算的操作数、中间结果和地址。

地址指针与变址寄存器主要用于存放或指示操作数的偏移地址。

段寄存器组:

8086/8088CPU内部设置了4个16位段寄存器,它们分别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES,由它们给出相应逻辑段的首地址,称为“段基址”。

控制寄存器:

含指令指针IP及标志位寄存器FR。

IP用来存放将要执行的下一条指令在现行代码段中的偏移地址。

标志寄存器FR用来存放运算结果的特征。

2.68086的存储器采用什么结构?

答:

8086的存储器采用分体结构。

1M的存储空间分成两个存储体:

偶地址存储体和奇地址存储体,各为512K字节。

2.78086CPU访问存储器时物理地址是如何形成的?

答:

8086CPU访问存储器时根据所执行的操作,自动选择某个段寄存器,将其中的内容(16位)自动左移4位形成20位地址的高16位,而20位地址的低4位自动添0,然后通过20位地址加法器再与16位偏移量相加,形成对应的物理地址。

2.10名词解释

(1)时钟周期:

一个时钟脉冲的时间长度,CPU的时钟频率的倒数,也称T状态。

(2)总线周期:

CPU中,BIU完成一次访问存储器或I/O端口操作所需要的时间,称作一个总线周期,也称机器周期(MachineCycle)o

(3)指令周期:

执行一条指令所需的时间称为指令周期。

(4)等待周期:

在T3和T4之间插入的周期。

(4)空闲状态:

CPU不执行总线周期时的状态。

(5)时序:

计算机操作运行的时间顺序。

2.12如果8086的CLK引脚输入的时钟脉冲频率为4MHz,那么一个基本的总线周期是多少?

答:

T=l/4us,那么一个基本的总线周期是4T=1use

第三章

3.5已知某个系统的ROM容量为6K字节,首地址为2800H,求其最后一个单元的地址。

答:

最后一个单元的地址=2800H+17FFH=3FFFH

3.6采用Intel2114(1KX4位)RAM芯片,组成64KX8位的存储器,需要多少片2114?

答:

需要128块。

注:

扩展时需要的芯片数量可以这样计算:

要构成一个容量为MX7位的存储器,若使用pXk位的芯片(p

3.7某RAM芯片的存储容量为4096X8位,则该芯片的引脚中有几条数据线和几条地址线?

已知某RAM芯片引脚中有8条数据线,12条地址线,那么该芯片的存储容量是多少?

答:

该芯片的外部引脚应有8条数据线,12条地址线。

RAM芯片引脚中有8条数据线,12条地址线,那么该芯片的存储容量是4KX8位。

3.8在8086存储器系统的最高地址区组成32KB的ROM,要求采用2764芯片(8KX8的EPROM),以及利用74LS138译码器进行全译码,请画出这些芯

第四章

4.1试出指令MOVBX,3040H和MOVBX,[3040H]有什么不同?

1、寻址方式不同:

立即数寻址和直接寻址。

2、运行结果不同:

MOVBX,3040H;BX二3040H

4.2指出下列指令是否有错,并说明理由。

(1)MOV[DI],[SI]

MOVBX,[304011];将DS段304011和3041II的内容送BX

(2)

MOV

CS,

AX

(3)

MOV

120(

J,AX

(4)

MOV

DS,

CS

(5)

POP

CS

(6)

MOV

CL,

AX

(7)

MOV

[500(

川],

错,错,错,错,错,错,

内存单元之间不能直接进行数据传送CS不能做目的操作数立即数不能做目的操作数段寄存器之间不能互相传送CS不能做目的操作数源、目的操作数长度不一致

[1000II];错,内存单元之间不能直接进行数据传送

4.3在8086中,堆栈操作是字操作还是字节操作?

已知SS二1050H,SP二0006H,AX二1234H,若对AX执行压栈操作(即执行PUSHAX);试问AX的内容存放在何处?

答:

堆栈操作是字操作。

入栈时“先减后压”(SP先减2,再压入操作数),执行压栈操作后AL的内容存放在10504H,AH的内容存放在10505Ho

4.4假如要从200中减去AL中的内容,用SUB200,AL对吗?

如果不对,应采用什么方法?

答:

不对,立即数不能作为目的操作数。

先把立即数传送到一个存储器或寄存器当中。

例如:

MOVBL,200

SUBBL,AL

或:

NEGAL

ADDAL,200

4.5编程求AX累加器和BX寄存器中两个无符号数之差的绝对值,结果

放内存(2800H)单元中。

解:

CMP

AX

BX

CMPAX,BX

CLC

JA

PT1

JAPT1

SUBAX,BX

SUB

BX

AX

XCHGAX,BX

JCPT1

MOV

DX

280011

PT1:

SUBAX,BX

MOVDI,2800II

MOV

DX

BX

MOV[2800H],

AXMOV[DI],AX

HLT

HLT

HLT

PT1:

SUB

AX

BX

PT1:

SUBBX,AX

MOV

DX

2800H

MOVDI,2800H

MOV

DX

AX

MOV[DI],BX

HLT

HLT

4.6若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000II开始的存储单元,将所求的和存放在2000II开始的内存单元中,试编制程序。

MOV

DI,

2000II

LEA

SI,

3000H

MOV

AX,

[DI]

MOV

DX,

[DI+2]

ADD

AX,

[SI]

ADC

DX,

[SI+2]

MOV

[DI],

AX

MOV

[DI+2]

DX

4.7用两种方法写出从88H端口读入信息的指令,再用两种方法写出从

44H端口输出数据56H的指令。

方法一:

INAL,

88H

方法二:

MOVDX,0088H

INAX,DX

MOVAL,

56H

MOVAL,56H

OUT44H

AL

MOVDX,0044H

OUTDX,AL

4.19

指出以下四条指令的作用

(HEX为数据段的一个变量名)

(1)

MOV

BX,

HEX;

将变量HEX的内容传送到BX寄存器

(2)

LEA

BX,

HEX

;取变量HEX的偏移地址送BX

(3)

MOV

BX,

OFFSEGHEX

;BX指向变量HEX的偏移地址

(4)

MOV

BX,

SEGHEX

;将变量HEX所在段的段地址传送到BX

其结果分别为多少?

TYPEBUF二2

TYPECED二1

TYPEADDR二2

4.20下面是变量定义伪指令,

DATA

SEGMENT

BUF

DW

3DUP(5,2DUP(8))

CED

DB

"Welcometoyou,,ODH,OAH,'$,

ADDR

DW

BUF

COUNT

EQU

$-CED

DATA

ENDS

问:

 

(1)按内存单元存放的先后次序,按字节写出数据段中的数据。

05H,

OOH,

08H,

OOH,

08H,

OOH,

05H,

OOH,

08H,

OOH,

08H,

OOH,

05H,

OOH,

08H,

OOH,

08H,

OOH,

57H,

65H,

6CH,

63H,

6FH,I

5DH,65H,20H,74H,6FH,20H,79H,6FH,

75H,

ODH,

OAH,

24H,

OOH,

OOH

⑵说明对BUF,CED,ADDR等变量施行TYPE,LENGTHSIZE运算符后,

LENGTHBUF二3

LENGTHCED二1

LENGTHADDR二1

SIZEBUF二6

SIZECED二1

SIZEADDR二2

⑶COUNT的值为多少?

19

4.22编写一个将16位二进制数转换成BCD码数的程序。

DATASEGMENT

BIN

ADEC

TAB

DB

DB

DW

5C0EH

5DUP(?

10000,1000,100,10,1

DATA

ENDS

CODE

SEGMENT

ASSUME

CS:

CODE,DS:

DATA,

;待转换数为23567

BXEDCPROCFAR

START:

MOV

AX,

DATA

MOV

DS,

AX

LEA

SI,

TAB

LEA

DI,

ADEC

MOV

AX,

BIN

LOPO:

XOR

CL,

CL

MOV

BX,

[SI]

L0P1:

SUB

AX,

BX

JB

NEXT

INC

CL

JMP

L0P1

NEXT:

ADD

AX,

BX

MOV

[DI],

CL

INC

SI

INC

SI

INC

DI

CMP

BX,

1

JNZ

LOPO

RET

BXEDC

ENDP

CODE

ENDS

END

START

4.24编写一个将16位二进制数转化为四位十六进制数的程序,并将十

六进制数的各位显示出来。

注:

答案中给了一个假定的16位二进制数。

DATASEGMENT

BINDW1001110101111011B

HEXASCDB4DUP(20H)

DB'$'

DATAENDS

STACK1SEGMENTPARASTACK

DW20HDUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

BINHEX:

MOVCH,4;十六进制数的位数

MOV

BX,BIN;

取待转移数据

MOV

DI,OFFSETI1EXASC

;取存放ASCII码首地址

CONVl:

MOV

CL,4

ROL

BX,CL

;取4位二进制数

MOV

AL,BL

AND

AL,OFH

CMP

AL,09H;

是0-9吗?

JBE

ASCI

;是,转移

ADD

AL,07H;

是A-F,先加07H

ASCI:

ADDAL,30H

;加30H

MOV

[DI],AL;

存结果

INC

DI

;修改指针

DEC

CH

JNE

CONVl

;计数未完,继续

LEA

DX,HEXASC

MOV

AH,09H

INT

21H

CODEENDS

ENDBINHEX

很多同学的答案:

DATASEGMENT

ADW4

XDW(16位二进制数)

YDB4DUP(?

PUSH

DEC

MOVING:

SHR

LOOP

POP

AND

CMP

JG

ADD

JMP

CX

CX

BX,4

MOVING

CX

BL,OFH

BL,09H

DAYU

BL,30H

XIAOYU

DATAENDS

START:

MOV

CX,A

LEA

DI,Y

AGAIN:

MOV

BX,X

DAYU:

ADDBL,37H

XIAOYU:

MOV[DI],BL

INC

DI

LOOP

AGAIN

LEA

DX,

MOV

AH,09H

INT

21H

CODEENDS

ENDSTART

4.26从BUF单元开始有10个带符号数:

-1,3,248,90,42,9042,-4539,0,-28792o试找出它们的最大值、最小值和平均值,并分别送MAX、MIN和AVG单元。

试编写完整的汇编语言程序。

DATASEGMENT

BUFER

DW

-1,3,248,90,42,9042,-4539,0,-28792

MAX

DW

0

MIN

DW

0

AVG

DW

0

DATAENDS

STACKSEGMENTPARASTACK'STACK'

DW100DUP(?

STACKENDS

CODESEGMENT

ASSUME

CS:

CODE,DS:

DATA,SS:

STACK

STARTPROC

FAR

BEGIN:

PUSH

DS

MOV

AX,

0

PUSH

AX

MOV

AX,

DATA

MOV

DS,

AX

LEA

SI,

BUFFER

MOV

AX,

SI

;和清o

MOV

BX,

AX

;最大值

MOV

DX,

AX

;最小值

INC

SI

INC

SI

MOV

CX,

9

L0P1:

ADD

AX,

[SI]

CMP

DX,

[SI]

;与最小值单元中的值相比较

JE

NEXT1

;相等转至NEXT1

JG

NEXT2

;若大于转至NEXT2

MOV

DX,[SI];把小的值送至DX

NEXT1:

CMP

BL,

[DI];

JB

NEXT2;若低于转移

MOV

BL,

[DI];小值tBL

(2分)

NEXT2:

MOV

DL,

[DI];取一字节数据

ADD

AX,

DX;累加和

INC

DI

LOOP

LOP1

MOV

MAX,

BH;送大值

MOV

MIN,

BL;送小值

MOV

DL,

6

DIV

DL,

;求平均值

MOV

AVI,

AL;送平均值

RET

STARTENDP

CODEENDS

ENDBEGIN

5.18086CPU对其I/O端口的寻址采用哪种方式?

它的四条输入指令:

INAL,PORT;INAL,DX;INAX,PORT;INAX,DX的作用有何区别?

答:

8086CPU对其I/O端口的寻址采用I/O端口单独寻址方式。

INAL,PORT;直接寻址,从PORT端口读入(输入)一个字节到AL。

INAL,DX;间接寻址,从DX所指端口读入(输入)一个字节到AL。

INAX,PORT;直接寻址,从PORT和PORT+1两个端口读入(输入)

一个字到AXo

INAX,DX;间接寻址,从DX和DX+1两个端口读入(输入)一个字到AXo

5.5某输入设备的接口电路中,其数据端口的地址为3F8H;状态端口地址为3FEH,当其D?

位为1时,表示输入数据已准备好。

试编写采用查询方式的数据传送程序段,要求从该设备读取100个字节,并存放到自2000H:

2000H开始的内存单元之中。

MOV

AX,

2000H

MOV

DS,

AX

;设定段基址

MOV

DI,

2000H

;目的地址送DI

MOV

CX,

100

;字节数

READ:

MOV

DX,

3FEH

;指向状态口

IN

AL,

DX

;读入状态位

TEST

AL,

80H

;数据准备好否?

JZ

READ

;否,循环检测

MOV

DX,

3F8H

;指向数据口

IN

AL,

DX

;已准备好,读入数据

MOV

[DI],

AL

;存到内存缓冲区中

INC

DI

;修改地址指针

LOOP

READ

;未传送完,继续传送

5.6设计一个采用74LS138的I/O端口地址译码器,要求能寻址的端口地址范围分别是:

①340II〜34711;②34811〜34F1I;③350II-3571I;④37811〜37FI1。

答案不唯一。

5.16某8086系统中有三片8259A安排为非缓冲、级连使用,两从片A、B分别接主片的IR2、IRi;三片8259A的端口地址分别为20H、22H、30H、32H、40H、42H;主片及从片A、从片B的I&上各接有一个外部中断源,其中断类型号分别为75H、7DH、85H;所有中断都采用电平触发方式、全嵌套、非自动E0I方式。

试完成:

1画出该系统中三片8259A级连部分简要的电器原理图;

2

AB7

M/IO

AB3

AB2

AB5

AB4

AB0

AB6

I0W

编写出全部初始化程序

主片:

ICW1二00011001B二19HICW2二01110000B二70HICW3二00010100B二14H

ICW4二00000001B二01H

从片A:

ICW1二00011001B二1911ICW2二01111000B二7811ICW3二00000010B二0211

从片B:

ICW1二00011001B二19H

ICW2二10000000B二80H

ICW3二00000100B二04H

ICW4=00000001B=01H

ICW4二00000001B二0111

主片初始化程序:

ICW1写入到偶端口地址20H;ICW2写入到奇端口地址22H

MOVAL,19H

OUT20H,AL;写入ICW1

MOVAL,70H

OUT22H,AL;写入ICW2

MOVAL,02H

OUT2211,AL

MOVAL,01H

OUT22H,AL

6.4设8253计数器0〜2和控制字寄存器的I/O地址依次为F8H〜FBH,

说明如下程序的作用。

MOVAL,33H;00110011B计数器0,先低位后高位,方式1,BCD

码计数

OUTOFBH,AL;写控制字

MOVAL,80H;置计数初值低位字节80H

OUT0F8H,AL;先写低位字节

MOVAL,50H;置计数初值高位字节50H

OUT0F8H,AL;写高位字节

程序的作用为:

使计数器0工作在方式1,用BCD码计数,计数初值为

5080o

6.5设8253的4个端口地址分别为300H、302H、304H和306H,由CLK。

输入计数脉冲频率为2MHzo要求通道0输出1.5kHz的方波,通道1、通道2均用通道0的输出作计数脉冲,通道1输出频率为300Hz的序列负脉冲,通道2每秒钟向CPU发50次中断请求。

试编写初始化程序,并画出8253相关引脚的连线图。

通道0:

输出方波则工作在方式3;计数初值为n°二2MHz/l・5kHz"1334=53611(1.499kllz)

控制字为:

00110110B=36H

通道1:

输出序列负脉冲则工作在方式2;计数初值为m二1.5kHz/300Hz二5二05H

控制字为:

01010100B=54H

通道2:

每秒钟向CPU发50次中断请求则工作在方式2;计数初值为

匕二1500/50二30二1EH

初始化程序:

通道0:

MOV

DX,

306H

MOV

AL,

36H

OUT

DX,

AL

MOV

DX,

30011

MOV

AL,

36H

OUT

DX,

AL

MOV

AL,

05H

OUT

DX,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1