微机原理作业及参考答案修订1016.docx

上传人:b****7 文档编号:25293489 上传时间:2023-06-07 格式:DOCX 页数:43 大小:36.83KB
下载 相关 举报
微机原理作业及参考答案修订1016.docx_第1页
第1页 / 共43页
微机原理作业及参考答案修订1016.docx_第2页
第2页 / 共43页
微机原理作业及参考答案修订1016.docx_第3页
第3页 / 共43页
微机原理作业及参考答案修订1016.docx_第4页
第4页 / 共43页
微机原理作业及参考答案修订1016.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

微机原理作业及参考答案修订1016.docx

《微机原理作业及参考答案修订1016.docx》由会员分享,可在线阅读,更多相关《微机原理作业及参考答案修订1016.docx(43页珍藏版)》请在冰豆网上搜索。

微机原理作业及参考答案修订1016.docx

微机原理作业及参考答案修订1016

第一章计算机基础(P32)

1-1电子管,晶体管,中小规模集成电路、大规模、超大规模集成电路。

1-2把CPU和一组称为寄存器(Registers)的特殊存储器集成在一片大规模集成电路或超大规模集成电路封装之中,这个器件才被称为微处理器。

以微处理器为核心,配上由大规模集成电路制作的只读存储器(ROM)、读写存储器(RAM)、输入/输出、接口电路及系统总线等所组成的计算机,称为微型计算机。

微型计算机系统是微型计算机配置相应的系统软件,应用软件及外部设备等.

1-3写出下列机器数的真值:

(1)01101110

(2)10001101

(3)01011001(4)11001110

答案:

(1)+110

(2)-13(原码)-114(反码)-115(补码)

(3)+89(4)-78(原码)-49(反码)-50(补码)

1-4写出下列二进制数的原码、反码和补码(设字长为8位):

(1)+010111

(2)+101011

(3)-101000(4)-111111

答案:

(1)[x]原=00010111[x]反=00010111[x]补=00010111

(2)[x]原=00101011[x]反=00101011[x]补=00101011

(3)[x]原=10101000[x]反=11010111[x]补=11011000

(4)[x]原=10111111[x]反=11000000[x]补=11000001

1-5当下列各二进制数分别代表原码,反码,和补码时,其等效的十进制数值为多少?

(1)00001110表示原码14,反码14,表示补码为14

(2)11111111表示原码-127,反码-0,表示补码为-1

(3)10000000表示原码-0,反码-127,表示补码为-128

(4)10000001表示原码-1,反码-126,表示补码为-127

1-6已知x1=+0010100,y1=+0100001,x2=-0010100,y2=-0100001,试计算下列各式。

(字长8位)

(1)[x1+y1]补

(2)[x1-y2]补

(3)[x2-y2]补(4)[x2+y2]补

(5)[x1+2*y2]补(6)[x2+y2/8]补

答案:

(1)[x1+y1]补=[00010100+00100001]补=[00110101]补=00110101

(2)[x1-y2]补=[x1]补+[-y2]补=00010100+00100001=00110101

(3)[x2-y2]补=[x2]补+[-y2]补=11101100+00100001=00001101

(4)[x2+y2]补=[x2]补+[y2]补=11101100+11011111=11001011

(5)[x1+2*y2]补=[x1]补+[2*y2]补=00010100+10111110=11010010

(6)[x2+y2/8]补=11101100+[y2/8]补=11101100+11111100=11101000

1-7用补码来完成下列运算,并判断有无溢出产生(字长为8位):

(1)85+60

(2)-85+60

(3)85-60(4)-85-60

答案:

(1)[x]补+[y]补=01010101+00111100=10010001=-111,有溢出

(2)[x]补+[y]补=10101011+00111100=11100111=-25,无溢出

(3)[x]补+[y]补=01010101+11000100=00011001=25,无溢出

(4)[x]补+[y]补=10101011+11000100=01101111=111,有溢出

1-8在微型计算机中存放的两个补码数,试用补码加法完成计算,并判断有无溢出产生。

(1)[x]补+[y]补=01001010+01100001=10101011

有溢出

(2)[x]补-[y]补=01101100-01010110=01101100+10101010=00010110

无溢出

注:

[X]补-[Y]补=[X]补+[-Y]补

[-Y]补的算法:

将[Y]补连同符号位一起按位取反加1

1-9试将下列各数转换成BCD码:

(1)(30)10

(2)(127)10

(3)00100010B(4)74H

答案:

(1)(30)10=(00110000)BCD

(2)(127)10=(000100100111)BCD

(3)00100010B=34=(00110100)BCD

(4)74H=(116)10=(000100010110)BCD

1-10下列各数代表什么ASCII字符:

(1)41H

(2)72H

(3)65H(4)20H

答案:

(1)41H=(01000001)2,代表字符A。

(2)72H=(01110010)2,代表字符r。

(3)65H=(01100101)2,代表字符e。

(4)20H=(32)10=(00100000)2,代表SP。

1-11写出下列字符的ASCII码:

9,*,=,!

,$

答案:

900111001

*00101010

=00111101

00100001

$00100001

1-19地址总线:

传递地址信息的总线

数据总线:

传输数据

控制总线:

传输控制信号,时序信号和状态信息

1-20指令:

人们规定计算机执行特定操作(加、减、乘、除、移位……)的命令。

指令系统:

计算机全部指令的集合

1-21试用示意图说明内存储器的结构和读、写操作。

参考课本P22

 

第2章80X86/Pentium微处理器(P90)

2-3在执行指令期间,EU能直接访问存储器吗?

为什么?

答:

不能,因为CPU由EU和BIU组成,在指令执行期间,EU负责到BIU指令队列去取指令,执行指令,如果需要从存储器取数据,由BIU负责总线操作。

2-78086/8088有几位状态位?

有几位控制位?

其含义分别是什么?

答:

8086/8088有6位状态位,3位控制位。

状态位:

CF进位标志;PF奇偶标志;AF辅助进位标志;ZF零标志;SF符号标志,OF溢出标志。

控制位:

IF允许中断标志;DF方向标志;TF陷阱标志

2-9简述A0与/BHE在8086系统中的作用。

答:

8086有16根数据线,可以在一个总线读写周期中,读写一个字数据。

8086CPU配置的内存分为奇地址和偶地址存储体。

如果要读写一个字数据,需要分别从奇地址和偶地址存储体读写一个字节数据。

由A0=0选通偶地址存储体,一个字节数据送到低八位数据线D0~D7;由/BHE=0选通奇地址存储体,一个字节数据送到高八位数据线D8~D15。

 

2-15物理地址:

存储区域的某一单元地址,地址信息是20位二进制代码.CPU是以物理地址访问存储器.

逻辑地址:

编程时采用,由段基址和偏移量组成.8086CPU中的每个存储元在存储体中的位置都可以使用实际地址和逻辑地址来表示。

同一物理地址可对应多个逻辑地址

2-16段寄存器指示的存储区域的起始地址称为段基址,偏移量是在某段内指定存储单元到段基址的距离。

段基址和偏移量共同组成物理地址,物理地址PA=段基地址×16+偏移量

2-17A0000H-AFFFFh

2-18B000H

2-19设双字12345678H的起始地址是A001H,试说明这个双字在存储器中如何存放?

答:

地址为A001H、A002H、A003H、A004H的存储单元分别存放:

78H、56H、34H、12H。

存放原则:

低地址存放低位数据,依次存放在连续的存储单元中。

2-20已知堆栈段寄存器SS=A000H,堆栈指示器SP=0100H,试将数据1234ABCDH推入堆栈,画出进栈示意图。

最后栈顶SP=?

答:

SP=00FCH

物理地址0A00FCH---0A00FFH的内容依次为CD,AB,34,12.

注:

SP:

堆栈栈顶指示器,16位寄存器,存放栈顶的偏移地址。

2-21试求出下列运算后的各个状态标志,并说明进位标志和溢出标志的区别。

(1)1278H+3469H

(2)54E3H-27A0H

(3)3881H+3597H

(4)01E3H-01E3H

解:

(1)0001001001111000

+0011010001101001

0100011011100001

CF=0PF=1AF=1ZF=0SF=0OF=0

(2)0101010011100011

+1101100001100000

10010110101000011

CF=0PF=0AF=0ZF=0SF=0OF=0

(3)0011100010000001

+0011010110010111

0110111000011000

CF=0PF=1AF=0ZF=0SF=0OF=0

(4)0000000111100011

+1111111000011101

10000000000000000

CF=0PF=1AF=0ZF=1SF=0OF=0

注:

16位操作数的最低二进制位:

b0、最高二进制位:

b15

AF:

看b3是否向b4有进(借)位:

辅助进借位

对减法运算,若采用补码的加法进行,则CF取反。

2-24什么是时钟周期,机器周期,总线周期,什么是指令周期?

参考课本P55。

 

第三章80X86/Pentium指令系统(P135)

3-4

(1)7237H

(2)D5B4H(3)637DH

3-5寻址方式:

(1)MOVSI,2100H

(2)MOVCX,DISP[BX]

(3)MOV[SI],AX(4)ADCAX,[BX][SI]

(5)ANDAX,DX(6)MOVAX,[BX+10H]

(7)MOVAX,ES:

[BX](8)MOVAX,[BX+SI+20H]

(9)MOV[BP],CX(10)PUSHDS

地址表达式:

标号/变量/常量+基址寄存器+变址寄存器

[地址表达式]:

存储器操作数,以地址表达式的值为偏移地址

3-7(4)(10)(14)正确。

3-8

(1)AX=3355H,SP=1FFFEH

(2)AX=3355H,DX=4466H,SP=1FFFEH

3-9BX=4154H,[2F246H]=6F30H

3-10BX=139EH

3-11SI=0180HDS=2000H

3-12

(1)CL=0F6H

(2)CX=5678h

(3)BX=0056H,AX=1E40H

(4)SI=00F6H,[SI]=0024H

(5)AX=5678H,[09226H]=1234H

3-13

(1)不影响

(2)AF=0,CF=1OF=1SF=0ZF=0

3-14

(1)MOVAX,0XORAX,AXSUBAX,AX

(2)MOVCL,4

RORBL,CL

(3)MOVAX,N1

MOVBX,N1

CWD;对被除数进行符号扩展

IDIVBX

MOVM1,AX;商放在AX中

MOVM2,DX;余数放在DX中

(4)ANDBX,0F7AFH或OR0850H

(5)XORAX4020H

(6)TESTDX,0201H

(7)ORCX,1

3-15

(1)LEABX,BLOCK

MOVBX,BX+10

MOVAX,[BX]

(2)LEABX,BLOCK

MOVAX,[BX+10]

(3)LEABX,BLOCK

MOVSI,10

MOVAX,[BX+SI]

(4)MOVAX,[BLOCK+10]

3-16

(1)60H输出到端口580H

(2)8060H输出到580H端口

(3)将4FH从端口40H读入到AL(4)从端口40H读一个16位的数到AX(5)将60H输出到端口45H(6)将8060H输出到端口45H

3-17

NUM1DW4148H,2816H

NUM2DW2258H,8452H

(1)MOVAX,NUM2

ADDNUM1,AX

MOVAX,NUM2+2

ADDNUM1+2,AX

(2)RESDB2DUP(?

MOVAL,BYTEPTRNUM1

ADDAL,BYTEPTRNUM1+1

ADDAL,BYTEPTRNUM1+2

ADDAL,BYTEPTRNUM1+3

MOVRES,AL

(3)假设存放的数据为无符号数

MOVSI,OFFSETNUM1

XORAX,AX

MOVCX,8

LP:

ADDAL,[SI]

ADCAH,0

INCSI

LOOPLP

MOVRES,AL

MOVRES+1,AH

假设存放的数据为带符号数

MOVSI,OFFSETNUM1

XORBX,BX

MOVCX,8

LP:

MOVAL,[SI]

CBW

ADDBX,AX

INCSI

LOOPLP

MOVRES,AL

MOVRES+1,AH

(4)MOVAX,NUM1

ADDNUM2,AX

MOVAX,NUM1+2

ADCNUM2+2,AX

3-18

(1)XORAX,AX;AX清零

LEASI,NUM1

MOVCX,8

LOP:

ADDAL,[SI]

DAA

ADCAH,0;AF清零

INCSI

LOOPLOP

MOVRES,AL

MOVRES+1,AH

(2)MOVAL,NUM1

SUBAL,NUM2

DAS

MOVRES,AL

差=90H;CF=1

3-21

(1)BX=9AH

(2)BX=61H(3)BX=8071H

(4)BX=10F7H(5)BX=0FF1CH

 

3-22

(1)DX=0006HBX=0004H

(2)SP=1FFFEH[SP]=0FFFEH

(3)CX=0004HBX=0004H

(4)AX=8094HCF=0

(5)MOVAL,[SI]

(6)AL=0CCHCF=0

AL=32H

(7)SI=0009H

(8)DI=0009H

(9)[DI]=94H

(10)AX=17C6HDX=8094H

(11)AH=84H,BL=04H

(12)IP=17C6H

3-23

(1)将自FIRST开始的存储区中的连续10个字节传送到从SECOND开始的存储区中。

(2)将自0404H开始的存储区中连续256个字节全部赋0值。

3-26MOVBX,0A80H

MOVAL,5

XLAT

3-27

(1)IP=1256H

(2)IP=3280H(3)IP=2450H

3-28

CS=2000H;IP=009AH;SP=0F178H;[SP]=8FH

[SP+1]=3DH;[SP+2]=50H;[SP+3]=40H;

3-29

MOVBL,AL

CMPAL,01H

JZLAB1

CMPAL,02H

JZLAB2

CMPAL,04H

JZLAB3

ANDBL,07H

JNZOK

……

OK:

……

LAB1:

……

LAB2:

……

LAB3:

……

3-31

MOVAX,0032H

CMPAX,X

JLN_HIGH

MOVBX,X

SUBBX,Y

JOOVERFLOW

JNSNEXT

NEGBX

NEXT:

MOVRESULT,BX

N_HIGH:

……

OVERFLOW:

……

 

第四章汇编语言程序设计(P195)

4-2内存分配和预置数据

VAR1DB12,-12H,3DUP(0,0FFH)

VAR2DB100DUP(0,2DUP(1,2),0,3)

VAR3DB‘WELCOMETO’

VAR4DWVAR3+6;取其偏移量给VAR4

VAR5DDVAR3;取其偏移量和段基址给VAR5

4-3

(1)DATA1DB86H,27H,23H,00H,24H,1AH

(2)DATA2DW0B430H,1062H

(3)DATA3DB4DUP(20H),20,0,6DUP(1,2)

4-4

(1)2

(2)2

(3)1

(4)10

4-5

(1)VAR1的偏移量是0030H;VAR2的偏移量是003AH

(2)CNT=0010H

(3)VAR2+2单元的内容是02H

4-10

DATASEGMENT

XDB4DUP(?

YDB4DUP(?

ZDB4DUP(?

),0;定义X,Y,Z为字节变量

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,WORDPTRX[0]

ADDAX,WORDPTRY[0];X,Y低16位相加

MOVWORDPTRZ[0],AX;结果存入Z的低16位

MOVAX,WORDPTRX[2]

ADCAX,WORDPTRY[2];X,Y高16位相加

MOVWORDPTRZ[2],AX;结果存入Z的高16位

JNCOK

MOVAL,1

MOVZ+4,AL;保存进位

OK:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

4-11

DATASEGMENT

XDB4DUP(?

YDB4DUP(?

ZDB4DUP(?

);定义X,Y,Z为字节变量

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDL,0

MOVAX,WORDPTRX

SUBAX,WORDPTRY;X,Y低16位相减

MOVWORDPTRZ,AX;结果存入Z的低16位

MOVAX,WORDPTRX[2]

SBBAX,WORDPTRY[2];X,Y高16位相加

MOVWORDPTRZ[2],AX;结果存入Z的高16位

JNOOK

MOVDL,-1;溢出

OK:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4-12

(1)

DATASEGMENT

DB100DUP(?

MESGDB'ERRORINPUT!

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVAH,01H

INT21H;从键盘输入一个字符,该字符ASCII码送入AL

CMPAL,41H

JBERROR

CMPAL,4AH

JAERROR

CMPAL,41H

JEP0;判断输入字符是为'A',则跳转到P0

...

CMPAL,4AH

JEP9;判断输入字符是为'J',则跳转到P9

P0:

...

RET

...

P9:

...

RET

ERROR:

MOVDX,OFFSETMESG

MOVAH,09H

INT21H;输入字符非'A'~'J'则输出错误信息

RET

STARTENDP

CODEENDS

ENDSTART

(2)

DATASEGMENT

BASEDWP0,P1,P2,P3,P4,P5,P6,P7,P8,P9

MESGDB'ERRORINPUT!

$'

DATAENDS

STACKSEGMENTPARASTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVBX,0;BX为跳转表BASE内寻址编号,清零

MOVAH,01H

INT21H;从键盘输入字符命令

CMPAL,41H

JBERROR

CMPAL,4AH

JAERROR;输入字符非'A'~'J'则跳转到ERROR

MOVBL,AL

SUBBL,41H;得编号

SHLBX,1;表内偏移量=编号*2

JMPBASE[BX];查跳转表跳转到相应的子程序

ERROR:

MOVDX,OFFSETMESG

MOVAH,09H

INT21H;输出错误信息

RET

P0:

...

RET

...

P9:

...

RET

STARTENDP

CODEENDS

ENDSTART

 

4-13

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVGOOD,0

MOVPASS,0

MOVBAD,0

XORBX,BX;bx存放全年级统计总成绩

XORSI,SI

MOVCX,100

LP:

MOVAH,BUF[SI]

CMPAH,85H

JAGS

CMPAH,60H

JAEPS

MOVAL,BAD

ADDAL,1

DAA

MOVBAD,AL

JMPAGAIN

GS:

MOVAL,GOOD

ADDAL,1

DAA

MOVGOOD,AL

JMPAGAIN

PS:

MOVAL,PASS

ADDAL,1

DAA

MOVPASS,AL

AGAIN:

MOVAL,BL

ADDAL,AH

DAA

MOVBL,AL

MOVAL,BH

ADCAL,0

DAA

MOVBH,AL

INCSI

LOOPLP

MOVAVRG,BH

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4-15

DATASEGMEN

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

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

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

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