微机原理课后答案.. 下载本文

内容发布更新时间 : 2024/5/18 10:42:29星期一 下面是文章的全部内容请认真阅读。

课后答案:

2.1 将下列十进制数分别转换为二进制数、八进制数、十六进制数。 128D=10000000B=200O=80H

1024D=10000000000B=2000O=400H 0.47D=0.01111000B=0.36O=0.78H 625D=1001110001B=1161O=271H

67.544D=1000011.1000B=103.4264O=43.8BH

2.2 将下列二进制数转换成十进制数。 10110.001B=22.125D 11000.0101B =24.3125D

2.3 将下列二进制数分别转换为八进制数、十六进制数。 1100010B=142O=62H

101110.1001B=56.44O=2E.9H 0.1011101B=0.564O=0.BAH

2.4 写出下列用补码表示的二进制数的真值。 01110011 —→ 01110011 —→ +115 00011101 —→ 00011101 —→ +29 10010101 —→ 11101011 —→ -107 11111110 —→ 10000010 —→ -2 10000001 —→ 11111111 —→ -127

2.6 写出下列十进制数的BCD码表示形式。 456=(0100 0101 0110)BCD 789=(0111 1000 1001)BCD 123=(0001 0010 0011)BCD

3.1 8086CPU由几部分组成?它们的主要功能是什么?

答:从功能上讲,8086分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。

BIU是CPU与外部存储器及I/O的接口,负责与存储器和I/0系统进行数据交换。 指令执行部件EU完成指令译码和执行指令的工作。

3.2 8086有多少根地址线?可直接寻址多大容量的内存空间?

答:8086CPU有16根数据线和20根地址线,直接寻址空间为220,即为1M字节。

3.3 8086内部的寄存器由哪几种类型组成?各自的作用是什么?

答:8086CPU内部有14个16位寄存器,可以分为以下三组:分别是通用寄存器组,段寄存器组,控制寄存器。

通用寄存器组可以分为两组:数据寄存器和地址指针与变址寄存器。

数据寄存器主要用来保存算术、逻辑运算的操作数、中间结果和地址。 地址指针与变址寄存器主要用于存放或指示操作数的偏移地址。

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

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

IP用来存放将要执行的下一条指令在现行代码段中的偏移地址。 标志寄存器FR用来存放运算结果的特征 3.5 8086的存储器采用什么结构?

答:8086的存储器采用分体结构。1M的存储空间分成两个存储体:偶地址存储体和奇地址存储体,各为512K字节。

3.7 8086系统中的堆栈操作是按什么原则进行的? 答:堆栈操作的原则是后进先出。

4.3存储器的地址译码有几种方式?各自的特点是什么?

答:常用的存储器地址译码有两种方式,即单译码和双译码方式。

单译码方式是一个“N中取1”的译码器,译码器输出驱动N根字线中的一根,每根字线由M位组成。若某根字线被选中,则对应此线上的M位信号便同时被读出或写入,经输出缓冲放大器输出或输入一个M位的字。主要用于小容量的存储器。 双译码方式采用的是两级译码电路。当字选择线的根数N很大时,N=2p中的p必然也大,这时可将p分成两部分,如:N=2p=2q+r=2q×2r=X×Y,这样便将对N的译码分别由X译码和Y译码两部分完成。从而大大减少了选择线的数目。

4.4某RAM芯片的存储容量为1024×8位,该芯片的外部引脚应有几条地址线?几条数据线?若已知某RAM芯片引脚中有13条地址线,8条数据线,那么该芯片的存储容量是多少? 答:该芯片的外部引脚应有10条地址线,8条数据线。

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

4.5用Intel 2114 1K×4位的RAM芯片组成32K×8位的存储器,需要多少块这样的芯片?

答:需要64块。

注:扩展时需要的芯片数量可以这样计算:要构成一个容量为 M×N 位的存储器,若使用 p×k 位的芯片(p

4.6利用2764芯片(EPROM,8K×8位)并采用74LS138译码器进行全译码,在8086系统的最高地址区组成32KB的ROM,请画出这些芯片与系统总线连接的示意图。

A19A18A17A16

O G G A C A B A A G1O2A2B15141374LS138

Y Y Y Y4567CE 2764 (1)CE 2764 (2)CE 2764 (3)CE 2764 (4) A12~A0

5.1 试出指令MOV BX,3040H和MOV BX,[3040H]有什么不同? 1、 寻址方式不同:立即数寻址和直接寻址。 2、 运行结果不同:

MOV BX,3040H ;BX=3040H

MOV BX,[3040H] ;将DS段3040H和3041H的内容送BX 5.2 指出下列指令是否有错,并说明理由。

(1)MOV [DI],[SI] ;错,内存单元之间不能直接进行数据传送 (2)MOV CS,AX ;错,CS不能做目的操作数 (3)MOV 1200,AX ;错,立即数不能做目的操作数 (4)MOV DS,CS ;错,段寄存器之间不能互相传送 (5)PUSH FLAG ;对

(6)POP CS ;错,CS不能做目的操作数

(7)MOV CL,AX ;错,源、目的操作数长度不一致

(8)MOV [5000H],[1000H] ;错,内存单元之间不能直接进行数据传送

5.3 在8086中,堆栈操作是字操作还是字节操作?已知SS=1050H,SP=0006H,AX=1234H,若对AX执行压栈操作(即执行PUSH AX);试问AX的内容存放在何处? 答:堆栈操作是字操作。 入栈时“先减后压”(SP先减2,再压入操作数),执行压栈操作后AL的内容存放在10504H,AH的内容存放在10505H。

5.4 假如要从200中减去AL中的内容,用SUB 200,AL对吗?如果不对,应采用什么方法?

答:不对,立即数不能作为目的操作数。先把立即数传送到一个存储器或寄存器当中。 例如:MOV BL,200 SUB BL,AL 或: NEG AL

ADD AL, 200

5.5 编程求AX累加器和BX寄存器中两个无符号数之差的绝对值,结果放内存(2800H)单元中。

解: CMP AX , BX CMP AX , BX CLC

JA PT1 JA PT1 SUB AX , BX SUB BX , AX XCHG AX , BX JC PT1

MOV DX , 2800H PT1:SUB AX , BX MOV DI , 2800H MOV DX ,BX MOV [2800H] , AX MOV [DI] , AX HLT HLT HLT

PT1: SUB AX , BX PT1:SUB BX ,AX MOV DX ,2800H MOV DI ,2800H MOV DX , AX MOV [DI] , BX HLT HLT

5.6 若有两个4字节的无符号数相加,这两个数分别存放在2000H和3000H开始的存储单元,将所求的和存放在2000H开始的内存单元中,试编制程序。 MOV DI , 2000H LEA SI , 3000H MOV AX , [DI] MOV DX , [DI+2] ADD AX , [SI] ADC DX , [SI+2] MOV [DI] , AX MOV [DI+2] , DX

5.7 用两种方法写出从88H端口读入信息的指令,再用两种方法写出从44H端口输出数据56H的指令。

方法一:IN AL , 88H 方法二:MOV DX , 0088H IN AX , DX

MOV AL , 56H MOV AL ,56H

OUT 44H , AL MOV DX ,0044H

OUT DX , AL

6.12 指出以下四条指令的作用(HEX为数据段的一个变量名)

⑴ MOV BX, HEX ;将变量HEX的内容传送到BX寄存器 ⑵ LEA BX, HEX ;取变量HEX的偏移地址送BX ⑶ MOV BX, OFFSEG HEX ;BX指向变量HEX的偏移地址

⑷ MOV BX, SEG HEX ;将变量HEX所在段的段地址传送到BX

6.13 下面是变量定义伪指令, DATA SEGMENT

BUF DW 3 DUP(5,2 DUP(8))

CED DB ‘Welcome to you’, ODH , OAH ,‘$’ ADDR DW BUF