复习提纲及部分模拟题课后习题答案Word文件下载.docx
- 文档编号:18999724
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:18
- 大小:35.81KB
复习提纲及部分模拟题课后习题答案Word文件下载.docx
《复习提纲及部分模拟题课后习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《复习提纲及部分模拟题课后习题答案Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
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
第三章重点:
变量定义及在内存中的分布。
分支结构、循环结构程序设计。
第三章内存分布是重点,希望大家读懂书上例题,再动手做一些课后习题。
我再之后会给出较有代表性的习题答案,供大家参考。
3.10:
db为定义字节,变量名为byte_var,指向定义的内存空间的首地址。
字符是以ASCII码的形式存放在内存中的,注意区分字符串和数值的存放情况。
都是以二进制形式存放,只是为了表示方便写成了16进制。
绘制的内存地址由低到高,向上生成,注意这不是规定,你也可以绘制向下生成,但注意注明高低地址!
高地址低地址
04H
-
FFH
46H
45H
10H
0AH
43H
42H
41H
byte_var+1
byte_var
(2)dw为定义字,每个变量占两个字节(这里需注意字扩展问题,正数高位补0,负数高位补FFH),变量名为word_var,指向定义的内存空间的首地址。
注意负数以补码形式存放在内存中。
FBH
00H
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
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
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:
moval,80h;
从K7开始
lop2:
outdx,al
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:
testal,01h
jznext
decdx
mov[bx],al
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
0017H
‘o’
0016H
‘l’
0015H
0014H
‘e’
0013H
‘h’
0012H
12H
0011H
34H
0010H
33H
。
31H
06H
01H
0003H
0002H
0001H
0000H
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口
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
000BH
000AH
0009H
VAR30008H
‘H’
0007H
Var20006H
32H
0005H
0004H
E2H
28H
1EH
VAR10000H
14H
LE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习 提纲 部分 模拟 课后 习题 答案