微机原理复习.docx

上传人:b****1 文档编号:61879 上传时间:2022-10-01 格式:DOCX 页数:17 大小:146.09KB
下载 相关 举报
微机原理复习.docx_第1页
第1页 / 共17页
微机原理复习.docx_第2页
第2页 / 共17页
微机原理复习.docx_第3页
第3页 / 共17页
微机原理复习.docx_第4页
第4页 / 共17页
微机原理复习.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

微机原理复习.docx

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

微机原理复习.docx

微机原理复习

内部资料,转载请注明出处,谢谢合作。

 

Intel8086/8088中的寄存器组

Intel8086/8088内部由执行单元EU和总线接口单元BIU两部分组成。

执行单元负责指令的执行,而总线接口单元负责与内存储器、外部设备接口,执行所有的总线操作。

应用时直接使用的是它们中的寄存器组。

通用寄存器是CPU内部的存储器,使用最多,应掌握它们的使用方法。

通用寄存器组的专门用途应在今后的学习中逐渐理解后掌握,切勿现在就死记硬背。

标志寄存器中的6个状态标志位(CF、ZF、SF、OF、PF和AF)反映了执行单元执行算术或逻辑运算的结果,供后面的执行来判别。

其中最主要的是要搞清楚溢出标志位OF和进位标志位CF的置位方式及它们的区别。

参与运算的数不论无符号数还是符号数,计算机都按符号数置位溢出标志,按无符号数置位进位标志。

运算结果超出了字或字节所能表示的范围时,即字运算结果超出了8000H~7FFFH,字节运算结果超出了80H~7FH时溢出,OF置1,否则OF置0。

对加运算来说,如最高位向前产生了进位,则进位标志置1,否则置0;对减运算来说,最高位向前产生了借位即不够减,则进位标志置1,不产生借位即够减进位标志置0。

存储器

存储器是按字节编址的,即每一个字节都有一个确定的地址号,称为此字节的物理地址,并约定字地址是由两个字节地址中较小的一个确定。

字数据在存储器中的存放方式是:

两个连续地址单元中,较小地址中存放的是字的低8位,高8位存放在较大地址单元中,一定不能弄颠倒。

双字或多字节数据的存放原则是数据的低位在低地址,数据的高位在高地址;且其中的最低地址是该数据的地址。

8086/8088中的存储器容量最大可达1M字节,因而物理地址必须用20位二进制数表示。

但CPU内部的寄存器都是16位的,因此在程序中不直接使用物理地址而使用逻辑地址,即段地址:

偏移地址。

段地址存放在4个段寄存器中,偏移地址可以存放在6个寄存器(IP、SP、BP、SI、DI、BX)中,在形成物理地址时应该使用哪个寄存器是总线接口单元根据操作的要求来确定的。

堆栈

堆栈由存储区和一个指示器组成。

堆栈的存储区一端封闭、一端开口,数据的存取(进出)只能在开口端进行,存(进)取(出)原则为“先进后出”。

8086/8088允许建立的堆栈段最大可达64K字节,堆栈只能作字操作而不能作字节操作。

由于堆栈也是存储器的一个区域,所以不对堆栈区域的存储器进行栈操作就没有“先进后出”和字操作的限制。

堆栈存储区的位置由堆栈段寄存器SS给定,并自动使用SP作指示器。

堆栈指示器SP所指的单元称为栈顶,执行栈操作存取数据均在栈顶进行。

1.写出下列十进制数的原码和补码,用二位或四位或八位十六进制数填入表中:

十进制数

原码

补码

18

12h

12h

18

92h

0EEH

30

1EH

1EH

30

9EH

0E2H

347

15BH

15BH

347

815BH

0FEA5H

解:

求补码的计算如下:

18=16+2=12H

18=EEH(对12H求补)

30=322=20H2H=1EH

30=1EH=E2H(对1EH求补)

347=40053=190H35H=15BH

347=FEA5H(对15BH求补)

2.用十进制数写出下列补码表示的机器数的真值:

1BH,71H,80H,F8H,

解:

正数的真值,将十六进制数转换为十进制数即可。

负数的真值,首先将该数求补,前面加一负号,再将求补后的十六进制数转换为十进制数。

1BH=16+11=27

71H=80H15=12815=113

80H=80H=128

F8H=08H=8

3.用补码运算完成下列算式,并指出运算结果是否产生了溢出:

(1)33H+5AH

(2)-29H-5DH

(3)65H-3EH(4)4CH-68H

解:

(1)33H+5AH=8DH

Cy=0,Cs=1,OF=1,溢出;

二进制算式如下:

(2)29H=D7H,5DH=A3H;29H5DH=D7H+A3H=7AH

Cy=1,Cs=0,O=1,溢出

二进制算式如下:

(3)3EH=C2H;65H3EH=65H+C2H=27H

Cy=1,Cs=1,O=1,无溢出

二进制算式如下:

(4)68H=98H;4CH68H=4CH+98H=E4H

Cy=0,Cs=0,O=0,无溢出

二进制算式如下:

4.将表中的十进制数按表中要求转换后用十六进制数填入表中:

十进制数

压缩BCD数

非压缩BCD数

ASCII码

38

38H

0308H

3338H

97

97H

0907H

3937H

105

105H

010005H

313035H

解:

填表如下:

十进制数

压缩BCD数

非压缩BCD数

ASCII码

38

38H

0308H

3338H

97

97H

0907H

3937H

105

105H

010005H

313035H

5.假设用户程序装入内存后SS=095BH、SP=40H,试问该用户程序的可用栈底部物理地址是多少?

解:

用户程序堆栈的栈区的首地址和末地址是095BH:

0000H~095BH:

003FH,所以栈底物理地址是095B0H+003FH=095EFH。

6.有一数据段装入内存后,若DS=095FH时,某单元的物理地址是11820H。

当这个数据段装入内存后DS=2F5FH时,该单元的物理地址变为多少?

解:

11820H095F0H=8230H

2F5F0H+8230H=37820H

所以当段地址DS=2F5FH时,物理地址变为37820H。

7.设SP=0040H,如果用进栈指令存入5个数据,则SP=,若又用出栈指令取出2个数据,则SP=。

解:

存入5个数据需要占用10个字节,SP-10,所以SP=0040H-0AH=0036H。

取出2个数据,让出4个字节,SP+4,所以SP=0036H+04H=003AH。

所以,如果用进栈指令存入5个数据,则SP=0036H,若又用出栈指令取出2个数据,则SP=003AH。

8.分别指出下列指令中源操作数和目的操作数的寻址方式:

(1)MOVAX,1000H

(2)MOVAX,ES:

1000H

(3)MOV[BX],AL(4)MOVDI,[SI]

(5)ADDAX,[BX+4](6)SUBAX,[BX+DI+5]

(7)MOV[DI+2],AX(8)ADDAX,[BP+DI7]

解:

(1)立即寻址和寄存器寻址,即源操作数为立即寻址,目的操作数为寄存器寻址。

(2)直接寻址和寄存器寻址。

(3)寄存器寻址和间接寻址。

(4)间接寻址和寄存器寻址。

(5)基址寻址和寄存器寻址。

(6)基址变址寻址和寄存器寻址。

(7)寄存器寻址和变址寻址。

(8)基址变址寻址和寄存器寻址。

9.指出下列指令是否合法:

(1)MOVAX,DL

(2)MOV[BX],5

(3)ADDAX,5(4)MOVDS,1000H

(5)PUSHCH(6)POPCS

(7)ADDES,AX(8)MOVSS,CS

(9)DECBX(10)INC[BX]

解:

(1)类型不一致。

(2)两个操作数的类型都不明确。

(4)立即数不能直接送段寄存器。

(5)栈操作是字操作,不能进行字节操作。

(6)POP指令的操作数不能是CS。

(7)段寄存器仅能作MOV指令和栈操作指令的操作数,不能作累加器。

(8)段寄存器间不能传送。

(10)类型不明确,不知是字加1还是字节增1。

(3)和(9)两条指令是正确的。

10.试给出X86CPU执行完下列指令后OF,SF,ZF,CF4个可测试标志位的状态:

(1)MOVAX,2345H

(2)MOVBX,5439H

ADDAX,3219HADDBX,456AH

(3)MOVCX,3579H(4)MOVDX,9D82H

SUBCX,4EC1HSUBDX,4B5FH

解:

(1)S=0,Z=0,C=0,O=0

(2)S=1,Z=0,C=0,O=1

(3)S=1,Z=0,C=1,O=0

(4)S=0,Z=0,C=0,O=1

11.一数据段定义为:

DATASEGMENT

S1DB0,1,2,3,4,5

S2DB12345

COUNTEQU$S1

NBDB3DUP

(2)

NWDW120,256

PDW1

DATAENDS

(1)画出该数据段中数据的存储形式。

(2)在下表中填写各变量的偏移地址和各变量的值。

变量名

偏移地址

变量的值

S1

S2

NB

NW

P

(3)填写表中程序段各指令执行后,目的寄存器的值,并指出源操作数所使用的寻址方式:

程序段

目的寄存器的值

源操作数的寻址方式

MOVBX,OFFSETS1+3

MOVSI,OFFSETS2

MOVCL,COUNT

MOVBP,NW+2

MOVDX,WORDPTRNB

MOVAL,[SI+3]

MOVAH,[SI+BX+1]

MOVCH,BYTEPTRNW+3

解:

(1)数据的存储形式如图2-2所示。

图2-2习题2.10的内存映象图

(2)各变量的偏移地址和各变量的值如下表:

变量名

偏移地址(H)

变量的值(H)

S1

0000

00

S2

0006

31

NB

000B

02

NW

000E

0078

P

0012

FFFF

(3)目的寄存器的值,源操作数所使用的寻址方式如下表:

程序段

目的寄存器的值

源操作数的寻址方式

MOVBX,OFFSETS1+3

0003

立即寻址

MOVSI,OFFSETS2

0006

立即寻址

MOVCL,COUNT

0B

立即寻址

MOVBP,NW+2

FF00

直接寻址

MOVDX,WORDPTRNB

0202

直接寻址

MOVAL,[SI+3]

34

变址寻址

MOVAH,[SI+BX+1]

35

基址变址寻址

MOVCH,BYTEPTRNW+3

FF

直接寻址

12.编写程序实现下列BCD数运算(式中字节变量B,字变量W为压缩BCD数):

(1)B1+B2(B3B4)B5

stacksegmentstackstack

dw32dup(0)

stackends

datasegment

B1DB19H

B2DB20H

B3DB29H

B4DB25H

B5DB0

dataends

codesegment

beginprocfar

assumess:

stack,cs:

code,ds:

data

pushds

subax,ax

pushax

movax,data

movds,ax

MOVAL,B1

ADDAL,B2

DAA

SUBAL,

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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