复习提纲及部分模拟题课后习题答案.docx
- 文档编号:6005530
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:18
- 大小:35.81KB
复习提纲及部分模拟题课后习题答案.docx
《复习提纲及部分模拟题课后习题答案.docx》由会员分享,可在线阅读,更多相关《复习提纲及部分模拟题课后习题答案.docx(18页珍藏版)》请在冰豆网上搜索。
复习提纲及部分模拟题课后习题答案
第一章:
微型计算机组成,数制转换(有符号数用补码),ASCII码,BCD码。
第二章,三章是重点章节
第二章:
1.了解CPU的结构和8088/8086功能结构,8088与8086区别(8088准16位,8086真正的16位CPU,区别在于外部数据总线。
)
2.8088/8086寄存器的分类情况,注意自己总结一下,各种寄存器的特点。
3.标识寄存器FLAG必考,里面的标志情况请区分清楚,注意PF只反映第八位,
其他都是16位。
CF和OF的区别,及OF的判断是重点,详细见PPT。
控制标识里IF是重点。
4.存储器分段管理,物理地址,逻辑地址(两者怎么转换),如何分段?
1M最多能分多少个逻辑段?
最少能分多少个逻辑段?
5.寻址方式(重点),难点是存储器寻址,有效地址EA=?
(哪些寄存器能用?
),相对寻址和直接寻址方式上,请结合第三章讲解的变量灵活理解。
请对比与I/O寻址的区别!
如:
moval,[dx];inal,dx
6.指令(重点):
需掌握的详细见PPT。
除了功能外,对标志位的影响也非常重要,请认真总结。
7.控制类指令,条件转移很重要,循环掌握计数循环。
8.子程序,系统功能调用了解。
大家可以以课后习题为引导复习,暂给出部分较难习题答案。
(编写仓促如有错误,请见谅)
习题:
2.5
(1)FFFF0H
(2)00417H(3)24500H(4)BC777H
2.8
(1)立即数,1200h
(2)寄存器直接寻址,0100H;后面3-7都属于存储器寻址方式
(3)直接寻址4C2AH(注意小端方式,低对低,高对高)
(4)寄存器间接寻址4C2AH(5)寄存器相对寻址方式3412H(6)基址变址寻址方式7856H(7)相对基址变址寻址方式65B7H
2.9
(1)数据类型不匹配cx16bit,dl8bit
(2)ip是专用寄存器,代表指令在内存中的偏移量,不能随便修改!
(3)立即数不能送段寄存器,可以用通用寄存器做中间桥梁。
(4)段寄存器不能换互相传送,如需传送,可以用通用寄存器做中间桥梁。
(5)300已经超过8bit,而AL是8位寄存器,数据类型不匹配。
(6)有效地址EA=BX|BP+SI|DI+8|16bit,SP是堆栈的栈顶指针,寻址方式错误。
(7)bx+di表示地址应该加上地址符[].
(8)立即数不能做目的。
2.11标志位判断是一个重点,请注意各条指令对标志位的影响,数据传送类不影响标识,CMP指令影响标识,但结果不回送;DEC,INC不影响CF位。
alcfzfsfofpf
Moval,89h;89h-------------------------------------------(不影响)
Addal,al12h10001
Addal,9dhafh00101
Cmpal,0bchafh10101
Subal,al00h01001
Decalffh00101
Incal00h01001
2.12
(1)adddx,bx
(2)addal,[bx+si]
(3)add[bx+0B2h],cx
(4)addwordptr[0520h],3412h
(5)addal,0A0H
2.14数据传送类不影响标志位,NOT不影响标志位,其他的位操作指令CF=OF=0,其它按
结果影响SF,PF,ZF.注意TEST指令的用法,与CMP比较。
自身异或清0.
AXCfofsfzfpf
(1)movax,1470h1470H----------------------------------------------------(不影响)
(2)andax,ax1470H00000
(3)orax,ax1470H00000
(4)xorax,ax000011
(5)notaxffffH00011
(6)testax,0f0f0hffffH00101
2.16注意JMP的四种跳转方式。
(1)段内转移,间接寻址:
IPr16/m16EA=1256H
(2))段内转移,间接寻址:
IPr16/m16EA=3280H(注意是存储单元内容)
2.17有条件跳转非常重要,总结后掌握,切忌死记硬背。
(1)je/jz:
ZF=1跳转,XOR自身就清零,所以跳转条件是AX=1e1eH
(2)jnz:
ZF=0跳转,TEST作与,结果不为0跳转,所以条件是al最高最低位不同时为0
(3)jb:
无符号数目的小于源,条件:
CX<64H
2.18NOP为空操作指令,不执行任何操作,占用一个字节存储单元,空耗一个指令执行周期,可用于软件延时。
该题主要考查对LOOP指令的掌握。
LOOPdelay等效于DECCX
JNZdelay
注意异或后CX清零,遇到LOOP,先执行减1操作,再判断是否为0.所以CX=0000H,先减1,CX=FFFFH,再判断;所以一共执行了65536次。
2.19首地址为array的20个字的数组求和。
可以尝试改写该程序段,把相对寻址改为直接寻址方式。
注意用LEA或者OFFSET获得ARRAY的首地址。
2.20
(1)movdl,string[0]
movdh,string[5]
(2)movax,buffer1[0]
movdx,buffer1[2]
subax,buffer2[0]
sbbdx,buffer2[2]
(3)movax,0
testdx,0F000H
jzlabel
decax
label:
….
(4)movcx,4
again:
shrdx,1
rcrax,1
loopagain
(5)movcx,100
movbx,offsetarray(或leabx,array)
again:
decbyteprt[bx]
incbx
loopagain
第三章重点:
变量定义及在内存中的分布。
分支结构、循环结构程序设计。
第三章内存分布是重点,希望大家读懂书上例题,再动手做一些课后习题。
我再之后会给出较有代表性的习题答案,供大家参考。
习题:
3.10:
db为定义字节,变量名为byte_var,指向定义的内存空间的首地址。
字符是以ASCII码的形式存放在内存中的,注意区分字符串和数值的存放情况。
都是以二进制形式存放,只是为了表示方便写成了16进制。
绘制的内存地址由低到高,向上生成,注意这不是规定,你也可以绘制向下生成,但注意注明高低地址!
高地址低地址
04H
04H
04H
-
FFH
04H
04H
04H
-
FFH
04H
04H
04H
-
FFH
46H
45H
10H
0AH
43H
42H
41H
byte_var+1
byte_var
(2)dw为定义字,每个变量占两个字节(这里需注意字扩展问题,正数高位补0,负数高位补FFH),变量名为word_var,指向定义的内存空间的首地址。
注意负数以补码形式存放在内存中。
-
-
-
-
-
-
FFH
FBH
00H
10H
3.14org伪指令变量定位:
从100H处安排数据或程序。
Varw的地址为100H,字变量。
Varb的地址为104H,字节变量。
Vard的地址为106H,双字变量。
Buff的地址为10AH,字节变量。
Mess的地址为114H,字节变量。
Movax,offsetmess;offset取地址伪指令,取mess的地址送给ax=114H
Type,sizeof,lengthof见书P70
依次执行指令,AX=1+1+4=6
AX=4+10+5=19
AX=2+1=3
3.18写程序时只用写实现核心功能的代码,本程序较简单,注意数据传送及比较的双操作数不能同时为存储器数,有符号数比较用的G,L。
movax,bufX
movbufZ,ax
cmpax,bufY
JGELOP1
Movax,bufY
MovbufZ,ax
LOP1:
………
3.20思路:
明确哪些操作是都需要的,比如此题02号功能调用是共有的,只是DL中的内容不同而已,首先将2送入DX,比较过程中,不相等就-1。
Q:
此题为什么不把bufX,bufY送到ax,dx?
Movdl,2
Movbx,bufX
Movcx,bufY
Cmpbx,cx
JzLop1
Decdl
Lop1:
cmpbx,bufZ
JzLop3
Decdl
Lop2:
cmpcx,bufZ
JnzLop3
Incdl
Lop3:
movah,02h
Int21H
3.22
;数据段
arraydb12h,45h,F3h,6Ah,20h,FEH,90H,C8H,57H,34H
sumdb?
;代码段
leasi,array;用其他能表示有效地址的寄存器也可以,同样可以用offset取地址
movcx,10
xoral,al;清零
again:
addal,[si]
incsi
loopagain
movsum,al
第四章:
重点掌握8088最小组态下的总线时序。
引脚分类记忆,数据,地址(分时复用),状态,由于分时复用,得锁存地址(ALE引脚,注意该引脚连接8282三态透明锁存器),控制信号(IO/
组成存储器读/写,I/O读写),READY(第三时钟周期前沿测试该引脚,确定是否插入TW),
DT/
(这两个引脚连接8286数据收发器,控制着数据在总线上的驱动方向),中断请求引脚,总线请求引脚,RESET(注意复位后各寄存器的状态,注意CS:
FFFFH,IP:
0000H)。
8088总线时序问题:
知道频率,算时钟周期。
8088总线周期由4个时钟周期构成,每个时钟周期的主要工作:
T1:
输出地址,T2:
数据输出开始,T3:
继续数据传送,测试READY,看是否插入TW,T4:
数据收尾工作。
弄清楚读指令和执行指令的区别,指令始终存放在内存中,所以读指令必然会产生存储器读周期,那产生多少个读周期呢?
就看该指令在内存中占几个字节。
执行指令有可能产生读周期,也有可能产生写周期,就看该指令的功能。
习题:
4.12读取指令会产生存储器读周期,由于该指令只占用1BYTE,所以产生一个存储器读周期;由于IN指令是I/O读指令,所以执行时会产生IO读周期。
4.13读取时会产生3个存储器读周期,执行时,注意ADD指令的功能,首先取出2000H单元内容,再取出2001H单元内容,然后与AX相加,再送回原地址。
所以执行时产生2个存储器读周期,2个存储器写周期。
第五章非常重要,芯片连接扩展必考!
5.1了解存储器层次结构:
CACHE,主存,辅存。
5.2了解分类P122图5-4;位片结构和字片结构,芯片存储容量=存储单元数×每个存储单元的数据位数,实际就是由地址线和数据线决定的。
5.5非常重要,位扩展,字扩展。
(注意位扩展和字扩展相结合)
地址扩展:
高位片选,低位片内译码。
四种片选方法:
详细见PPT,注意总结每种方法的优缺点。
熟悉门电路,译码器(特别是3:
8译码器)的使用。
掌握通过电路图算地址,注意高位片选,低位片内,片内从全0~全1。
片选端处理总结P143
P144图5-33很典型,仔细分析,注意A12的处理,因为整个存储系统中有容量较大的6264和容量较小的2732。
以第一片6264为例。
A17~A13做片选,依次为00000,低位A12~A0片内译码,全0~全1,A18~A19××(建议为0),所以该片6264的地址为:
00000H~01FFFH;第二片6264地址范围:
02000H~03FFFH;2732
(1)Y2输出有效,CBA端010,A12和Y2形成门电路进行片选,此片2732的A12为0;地址:
04000H~04FFFH。
2732
(2)A12为1,地址:
05000H~05FFFH。
习题:
5.7扩展到32K×8既要位扩展又要地址扩展。
位扩展上一组需要2块芯片,地址从1K到32K需要32个芯片组,所以共32×2=64片。
4116需要2×8=16片。
5.11先计算地址范围:
43FFF-40000+1=4000H=4*163=214=16K,需两片6264.通过地址范围确定连线,根据题意全译码,所有地址线都要参与译码。
A0~A12负责片内译码,全0~全1,A19~A13高位片选,按位展开地址0100001~0100000,用A15~A13连接138的CBA,A18连接E3,剩下A16,A17,A19连接E1,E2,所以必须使用到门电路,方法很多,可以自由组合。
本解题使用A16,A17形成门电路共同连接E1,A19连接E2,绘制时注意E1,E2均为低电平有效,门电路可以参考P142b图。
5.12该题是给起始地址和范围,需计算终止地址。
8K=2*163=2000H,所以地址范围20000H~21FFFH。
需要四片2716,该题可以选择部分译码连线较简单。
5.13最高端32K:
终止地址FFFFFH,32K=8000H,推算出起始地址F8000H,共需4片2764,2764
(1):
F8000H~F9FFFH,2764
(2):
FA000H~FBFFFH;2764(3):
FC000H~FDFFFH
(4):
FE000H~FFFFFH。
A19~A13高位片选,全译码,按位展开1111100~1111111。
用A15~A13连接138的CBA,输出Y4~Y7,分别作为四片2764的片选端。
用A19连接E3,A16~A18连接E1,E2,注意肯定会用到门电路,假设用A18连接E2,注意E2低电平有效,所以用到反相器,绘制方法可参考P141图a。
A16,A17用门电路反相后连接到E1端。
模拟题里的存储器题目请大家认真完成,存储器扩展必考!
第六章:
I/O接口主要功能,端口编址方式,统一编制和独立编址,优缺点,及8088采用哪种方式。
INOUT指令,注意语法与MOV指令对比,超过i8,必须用DX间接寻址。
四种数据传送方式。
习题:
6.4
again:
movdx,8000h
inal,dx
cmpal,0feh;D7~D0=11111110B?
jznext1;单独按下K0,跳转
cmpal,0fdh;D7~D0=11111101B?
jznext2;单独按下K1,跳转
jmpagain;其他情况不点亮
next1:
movcx,8
moval,1;从K0开始
lop1:
outdx,al
calldelay
shlal,1
looplop1
jmpagain
next2:
movcx,8
moval,80h;从K7开始
lop2:
outdx,al
calldelay
shral,1
looplop2
jmpagain
6.5查询方式数据传送,先查询就绪再传送,查询在状态口,传送在数据口,不论输入输出,查询均用IN指令。
输入数据传送用IN指令,输出用OUT指令。
本题先查询状态口,就绪即D0=1,用IN指令将数据口内容读入到AL中,然后用MOV指令送入内存指定地址。
movax,2000h
movds,ax
movbx,2000h
movdx,FFE2h
movcx,100
next:
inal,dx
testal,01h
jznext
decdx
decdx
inal,dx
mov[bx],al
incbx
incdx
incdx
loopnext
6.6该题数据口和状态口均为80H,先用IN指令查询状态,D7=0表示就绪,可以接受字符,接受的字符从内存中获得。
注意本题不能计数循环,因为你不能确定ADDR指向的地址存放的字符串有多长。
只能采用条件判断循环。
Movbx,offsetaddr
Again:
cmpbyteptr[bx],‘$’;注意byteptr不能省,
Jzdone
Next:
inal,80h;查询
Testal,80h
Jnznext
Moval,[bx]
Out80h,al;输出一个字节
Incbx
Jmpagain
Done:
…….
第八章:
软件中断是异常,硬件中断才是真正的中断,硬件中断又分为可屏蔽中断(INTR)和不可屏蔽中断(NMI),中断的优先级,中断执行的流程(压栈顺序FLAG,CS,IP)。
中断向量表,中断向量是中断服务程序的入口地址。
8088开中断怎么表示(IF=1)。
8259的三大寄存器(ISR,IMR,IRR),中断级联(多片8259管理多少级中断:
8259片数*8-8259片数+1)。
8259结束中断的方式(把ISR相应位清0)。
了解8259工作方式(重点:
设置优先权方式,结束中断处理方式)。
了解8259的编程(主要是学习方法,没必要去记那些状态字)。
第九章:
根据PPT复习,填空选择题。
第十一章:
3个端口分为两组,A组:
端口A和端口C上部,B组:
端口B和端口C下部。
注意端口A,B,C可以工作在哪些方式(0,1,2)下。
初始化编程以及8255应用。
习题11.8分析:
学会看硬件图,从图上获知用8255的C口,上部输出,下部输入。
分析后初始化编程,注意写入控制端口。
分析题目,得知输入后需移位输出才能得到题目要求效果,输入需用IN指令读C口,读入后送入AL,逻辑左移把低四位移动到高四位。
然后用OUT指令写回C口进行控制。
注意IN,OUT指令的语法,如果端口地址超过i8,请用DX进行间接寻址。
总结:
分析用到哪些口,是做输入还是输出,接着就可以初始化,然后从做输入的口用IN指令读入至AL中,根据题意做操作,最后用OUT指令输出至做输出的端口。
8255非常重要,请大家认真完成模拟题8255相关大题。
模拟题大题答案:
第一套:
1.思路:
BLOCK是变量名,用OFFSET指令可以取BLOCK偏移地址,100个单元清空,肯定要考虑到循环结构,用LOOP指令实现,LOOP的计数器是CX。
MOVBX,OFFSETBLOCK
MOVCX,100
L1:
MOVBYTEPTR[BX],0(注意,立即数送存储器单元,一定要用PTR语句强制说明操作类型)
INCBX;BX加1,指向下一单元
LOOPL1
2.思路:
伪指令符DB定义一个字节,DW定义一个字,EQU或者“=”定义的符号常量不占用内存空间!
DUP重复数据定义。
注意内存中存放的全是二进制数,对于数值型数据用补码表示。
DW定义2个字符,存放方式还是低对低,高对高,注意与DB定义的字符串区别。
逻辑地址
内容
3000H:
0018H
FBH
3000H:
0017H
‘o’
3000H:
0016H
‘l’
3000H:
0015H
‘l’
3000H:
0014H
‘e’
3000H:
0013H
‘h’
3000H:
0012H
12H
3000H:
0011H
34H
3000H:
0010H
33H
。
。
31H
。
。
06H
。
。
06H
。
。
06H
。
。
-
。
。
01H
。
。
06H
。
。
06H
。
。
06H
。
。
-
。
。
01H
。
。
10H
3000H:
0003H
0AH
3000H:
0002H
43H
3000H:
0001H
42H
3000H:
0000H
41H
3.RAM容量:
12根地址线,4根数据线,4K*4bit,扩展到8KB,一共需要4片芯片。
一组需要2片(位扩展),一共2组(字扩展)。
起始地址D1000H,空间是8K,终止地址通过计算可得:
D2FFFH
最小组态:
RD*(表示低电平有效,最好写成上划线形式),WR*,IO/M*
A0~A11低12位片内译码,高位A12~A19全译码做片选
地址展开:
11010001000000000000
11010010111111111111
A12~A14(001,010)作为3-8译码器的CBA三位连接,说明Y1*,Y2*输出片选2组芯片,IO/M*选中低电平使能端E2*,A19连接E1,剩下的A15~A184根地址线做门电路并成一路输出使能E3*(注意A15,A17低电平输入,A16.A18高电平输入)。
位扩展绘制时,注意把数据线绘制成D0~D3,和D4~D7,参照图P140,图5-26
绘图前合理布局。
4.思路:
译码电路一定要弄懂,1100100100~1100100111324H~327H
A:
324HB:
325HC:
326H控制口:
327H
分析硬件图:
A口输出,B口输入,C上半口输入
工作方式:
方式0(因为方式1和2都会征用C口的数据线作为控制线,例如假定A口工作在方式1作为输出口,就会征用PC3,PC6和PC7,但题目中没出现PC3,PC6)
控制字:
10001010B=8AH
程序流程:
初始化8255(对控制口写入控制字),判断总开关KC是否闭合(用IN指令读C口,在用TEST判断PC7是否为0),闭合再去读入B口数据,最后写出到A口控制发光二极管。
(开关闭合0,断开1,二极管共阳极,输出0二极管亮)
Movdx,327H
Moval,8AH
Outdx,al;写控制字
Decdx;指向C口
Again:
Inal,dx;读C口
Testal,80H
Jnzagain;判断开关是否闭合,断开重读C口,直到闭合为止
DECDX;开关闭合,指向B口
InAL,DX
DECDX
OUTDX,AL;写A口
第二套:
简答题1.无论任何指令都存放在存储器中,所以读取指令必定产生存储器读周期,本题机器码占用3个字节,所以读取时产生3个存储器读周期。
执行指令:
分析功能,ADD指令是把目的操作数取出来与AX相加后再用相应存储单元,注意是字操作,所以先取【3000H】单元内容,再取【3001H】单元内容,产生2个存储器读周期,接下来与AX相加后送回去,当然会产生2个存储器写周期。
3.
偏移地址
内容
000CH
‘o’
000BH
‘l’
000AH
‘l’
0009H
‘e’
VAR30008H
‘H’
0007H
00H
Var20006H
32H
0005H
00H
0004H
00H
0003H
E2H
0002H
28H
0001H
1EH
VAR10000H
14H
LE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习 提纲 部分 模拟 课后 习题 答案