微机原理复习.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内部资料,转载请注明出处,谢谢合作。
Intel 8086/8088中的寄存器组
Intel 8086/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 15BH15BH
-347 815BH 0FEA5H
解:求补码的计算如下:
18=16+2=12H
-18=EEH(对12H求补)
30=32-2=20H-2H=1EH
-30=-1EH=E2H(对1EH求补)
347=400-53=190H-35H=15BH
-347=FEA5H(对15BH求补)
2.用十进制数写出下列补码表示的机器数的真值:
1BH,71H,80H,F8H,
解:正数的真值,将十六进制数转换为十进制数即可。负数的真值,首先将该数求补,前面加一负号,再将求补后的十六进制数转换为十进制数。
1BH=16+11=27
71H=80H-15=128-15=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;-29H-5DH=D7H+A3H=7AH
Cy=1, Cs=0, O=1, 溢出
二进制算式如下:
(3)-3EH=C2H; 65H-3EH=65H+C2H=27H
Cy=1, Cs=1, O=1, 无溢出
二进制算式如下:
(4)-68H=98H; 4CH-68H=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时,该单元的物理地址变为多少?
解:11820H-095F0H=8230H
2F5F0H+8230H=37820H
所以当段地址DS=2F5FH时,物理地址变为37820H。
7.设SP=0040H,如果用进栈指令存入5个数据,则SP= ,若又用出栈指令取出2个数据,则