第1章 进制及码元
1、进制转换
129= 81H= 10000001B=201Q 298= 12AH= 100101010B=452Q 1000= 3E8H= 1111101000B= 1750Q 5DH= 1011101 B= 135 Q= 93 D 3E8H= 1111101000 B= 1750Q= 1000 D; 357Q=11101111 B= 0EF H= 239 D 2、进制计算 10010110 2FE3 F7,-119 FFF7,-32759 4 7 3、数据表示范围:
一个字节的无符号数表示范围为0~255,有符号数补码表示范围为-l28—+127。
两个字节的无符号数表示范围为0~65535,有符号数补码表示范围为—32768~+32767。
N位二进制数的无符号数表示范围为0~(2N-1),有符号数(补码)表示范围为-2N-1~(2N-1-1). 4、35H代表的ASCII字符为'5',代表十六进制数时等价的十进制值为53 ,代表压缩8421BCD码等价的十进制值为35 ,代表非压缩8421BCD码等价的十进制值为5。
5、FFH代表无符号数时等价的十进制值为255 ,代表补码有符号数时等价的十进制值为 一1 ,代表反码有符号数时等价的十进制值为 一0 ,代表原码有符号数时等价的十进制值为一l27。
6、—20的8位二进制补码为 ECH ,原码为 94H ,反码为 EBH 。 158的16位二进制补码为009EH,原码为009EH ,反码为 009EH 。 7、英文字符一般在计算机内占用(1)个字节,每个字节的最高位一定为 0 ,全角英文字符在计算机内占用 2个字节,一个汉字在计算机内占用 2 个字节,每个字节最高位为 1 。 8、设阶码用8位补码表示,尾数部分用16位补码表示,则—(1/32+1/128+1/512)的尾数部分及阶码分别为多少?
第2章 微机硬件基础
1、请画出计算机系统硬件图。
2、8086/88CPU为什么要分为BIU和EU两大模块? 答:为了使取指和分析、执行指令可并行处理,提高CPU的执行效率。8086/88CPU有两大模块总线接口单元BIU和执行单元EU组成。
3、简述8086/88 CPU的两大模块BIU和EU的主要功能及组成。 答:如下图所示:
4、简述8086/88 CPU的14个寄存器的英文名、中文名及主要作用。
答:AX(Accumulator)(AH、AL)累加器,它是汇编编程中最常用的一个寄存器,主要用于乘除运算、BCD运算、换码、I/O操作、串操作、中断调用等。 BX(Base)(BH、BL)基址寄存器,主要用于存放地址、基址(默认相对于DS段)等。
CX(Counter)(CH、CL)计数器,主要用于循环计数、串操作计数、移位计数(CL)等。
DX(Data)(DH、DL)数据寄存器,主要用于l6位乘除、问接I/O、中断调用等。
BP(Base Pointer)基址指针,主要用于存放地址、基址(默认相对于SS段)等。 SP(Stack Pointer)堆栈指针(栈顶指针),主要用于存放栈顶地址。
SI(Source Index)源变址寄存器,用于存放地址、变址、串操作源变址。 DI(Destination Index)目的变址寄存器,用于存放地址、变址、串操作目的变址。
CS(Code Segment)代码段寄存器(代码段),用于存放正在或正待执行的程序段的起始地址的高l6位二进制数据,即程序段的段地址。 ,
DS(Data Segment)数据段寄存器(数据段),用于存放正在或正待处理的一般数据段的起始地址的高l6位二进制数据,即一般数据段的段地址。
ES(Extra Segment)附加数据段寄存器(附加段),用于存放正在或正待处理的附加数据段的起始地址的高l6位二进制数据,即附加数据段的段地址。
SS(Stack Segment)堆栈数据段寄存器(堆栈段),用于存放正在或正待处理的堆栈数据段的起始地址的高l6位二进制数据,即堆栈数据段的段地址。
IP(Instruction pointer)指令指针,它的内容始终是下一条待执行指令的起始偏移地址,与CS一起形成下一条待执行指令的起始物理地址。CS:IP的作用是控制程序的执行流程。IP一般会自动加l(逻辑加1、实际随指令长度变化)移向下一条指令实现顺序执行;若通过指令修改CS或IP的值,则可实现程序的转移执行。
PSW(Program Status word)程序状态字,它其中有三个控制标志(IF、DF、TF)和6个状态标志(SF、PF、ZF、OF、CF、AF)。控制标志是用于控制CPU某方面操作的标志,状态标志是部分指令执行结果的标志。 5、请画出8086/88 CPU的内部结构图。 答:如下图所示:
6、请说明8086/88 CPU的标志位的英文名、中文名及填充方法。
答:IF(Interrupt Enable Flag)中断允许标志,用于控制CPU能否响应可屏蔽中断请求,IF=1能够响应,IF=0不能响应。 DF(Direction Flag)方向标志,用于指示串操作时源串的源变址和目的串的目的变址变化方向,DF----1向减的方向变化,DF=0向加的方向变化。
TF(TrapFlag)陷阱标志(单步中断标志),TF=1程序执行当前指令后暂停,TF=0程序执行当前指令后不会暂停。
SF(Sign Flag)符号标志,指令执行结果的最高二进制位是0还是l,为0,则SF=0,代表正数;为l,则SF=1,代表负数。我们一般是用十六进制数表示,则可以根据十六进制的最高位是落在O~7还是落在8~F之间,若落在0~7之间则SF=0.否则SF=1。
PF(Parity ChECk Flag)奇偶校验标志,指令执行结果的低8位中1的个数是奇数个还是偶数个,若为奇数个则PF=0,若为偶数个则PF=1。 ZF(Zero Flag)零标志,指令执行结果是不是为0,若为0则ZF=1,否则ZF=0。 OF(Overflow Flag)有符号数的溢出标志,指令执行结果是否超出有符号数的表示范围,若超过则0F=1,否则OF=0。我们可以通过判断是否出现以下四种情况之一:正加正得负,正减负得负,负加负得正,负减正得正。若出现则0F=1.否则OF=0.
CF(Carry Flag)进位/借位标志无符号数的溢出标志),指令执行结果的最高位是否有向更高位进位或借位,若有则CF=1,同时也代表无符号数溢出;若无则CF=0,也代表无符号数未溢出。
AF(Auxiliary Carry Flag)辅助进位/借位标志,低4位二进制是不是有向高位进位或借位,若有则AF=1,否则AF=0,其主要用于BCD修正运算。 7、内存分段组织的优缺点是什么? 答:优点如下:
(1)8086/8088 CPU中的寄存器只有16位,如果采用它们直接寻址,则寻址能力势必限制在64 KB范围内,而采用分段组织可以较好地实现扩展CPU的寻址能力。每段的大小可达64 KB,不同段的组合则可寻址更大的范围。 (2)使程序与数据相对独立,不同存取方式的数据也相对独立。 程序:存放于代码段CS中
堆栈方式:存放于堆栈段SS中
数据:随机方式:存放于数据段DS及附加段ES中
(3)便于程序和数据的动态装配,从一个地方挪到另外一个地方只要更改一下段寄存器的值即可,段内偏移可以不用改变。
缺点:内存地址采用分段组织增加地址计算的复杂度,降低了CPU的执行效率。
8、1MB内存最多可以有(64K)个不同的段地址,若不允许重叠的话最多可有(16)个不同的段地址。不同的段间(可以)重叠。
9、设DS=26FCH,BX=108H,SI=9A8H,试求出使DS:BX与ES:Sl指向同一物理地址的ES值。 答:即DS:BX=ES:SI DS:BX=DS× l6+BX=26FCH×16+108H=270C8H ES:SI=ES×16+SI=ES×16+9A8H
ES=(270C8H一9A8H)÷l6=2672H
10、接口、端口以及端口地址之间的对应关系如何?
答:一个计算机系统内有很多接口,一个接口内一般有多个端口,一个端口可以有多个端口地址与其对应(这叫重叠地址),一个端口地址可以对应多个端口(但需要继续区分才能访问,如读写顺序、读写信号、数据位、索引区分)。所以通过端口传输信息首先需要区分端口,区分端口可通过端口地址不同来区分。 11、访问端口有哪些方法? 答:(1)用I/O指令实现信息传输;(2)通过BIOS中断调用实现信息传输;(3)通过DOS中断调用实现信息传输。
12、请根据图2.3说明ADD AX, BX指令的取指及执行过程。 自己看书
13、8086/88 的20位物理地址是怎样形成的?当CS=2000H, IP=0100H, 下一条待执行指令的物理地址等于多少?
答:20位物理地址由段地址左移4位加偏移地址形成,下一条待执行指令等于CS*10H+IP得到20100H。
14、已知当前数据段位于存储器的B1000H到BF0FFH范围内,请指出DS段寄存器的取值范围。
答:DS段寄存器的取值范围:AF10H~B100H
第3章寻址方式及指令系统
1、指令是CPU可以理解并执行的操作命令,指令由操作码和操作数两部分组成,指令有两个级别,即机器级和汇编级。 2、请画出程序执行流程示意图。
3、指令主要有哪些分类方式及其主要类别是什么? 答:指令分类有不同的方式。按操作数的个数将指令分为零地址指令(无操作数)、一地址指令(只有一个操作数)、二地址指令(有两个操作数)、多地址指令(多于两个操作数);按指令级别分为机器指令和汇编指令:按是否转移分为转移指令和顺序指令;按功能分为七大类:传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;按指令长度(即指令占用的字节数)分为l字节指令、2字节指令等,8086/8088指令长度是不同的,叫变字长,不同的指令有不同的指令长度,从1~6字节均有;按指令执行期间取操作数是否需要与总线打交道分为内部指令(不需)和外部指令(需要),类似功能的指令内部指令比外部指令执行速度快,所以在编程时尽量采用内部指令即多用寄存器优化程序。 4、操作数的寻址方式有哪些?并举例说明其主要特点。
答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式4类。
(1)立即寻址方式:操作对象是这个操作数本身,MOV AL,5 (2)寄存器寻地址:操作对象是寄存器中的内容MOV AX,BX
(3)存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容,MOV AX [2000H]
(4)端口寻址方式:操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象IN AX,46直接寻址。
5、内存寻址中段寄存器与段内偏移地址对应关系如何?
6、设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H,则①下一条待执行指令的物理地址为多少?②当前栈顶的物理地址为多少?③[BX]代表的存储单元的物理地址为多少?④[BP]代表的存储单元的物理地址为多少?⑤ES:[BX+SI]代表的存储单元的物理地址为多少?
答:①下一条待执行指令的物理地址=CS×16+IP=1000H×16+IOOH=10100H。 ②当前栈顶的物理地址=SS×16+SP=4000H×16+200H=40200H。 ③[BX]代表的存储单元物理地址=DS×16+BX=2000H X l6+300H=20300H。 ④[BP]代表的存储单元物理地址=SS X l6+BP=4000H×16+400H-----40400H。
⑤ES:[BX+SI]代表的存储单元物理地址=ES×16+BX+SI=3000H×16+300H+500H=30800H 7、试根据以下要求,分别写出相应的汇编语言指令。
(1)以寄存器BX和DI作为基址变址寻址方式把存储器中的一个字送到DX寄存器。
答:MOV DX,[BX+DI]
(2)以寄存器BX和偏移量VALUE作为寄存器相对寻址方式把存储器中的一个字和AX相加,把结果送回到那个字单元。 答:ADD VALUE[BX],AX
(3)将1字节的立即数0B6H与以SI作为寄存器间接寻址方式的字节单元相比较。 答:CMP BYTE PTR[SI],0B6H (4)将BH的高4位与低4位互换。 答:MOV CL,4 ROR BH,CL ;或者ROL BH,CL (5)测试BX的第3、7、9、12、13位是否同时为0。 答:TEST BX,3288H ;0011001010001000B (6)将存放了0~9数值的DL寄存器中的内容转化为相应的‘0’~‘9’的字符。 答:ADD DL,30H ;或者OR DL,30H
(7)将存放了?A?~?F?字符的AL寄存器中的内容转化为相应的数值。 答:SUB AL,37H
8、写出清除AX寄存器的多种方法并比较(要求单指令实现)。 答:
(1)AND AX,0 ;可以对AX清零,还可以清除进位位和影响到SF、
ZF、PF标志位。
(2)MOV AX,0 ;此条指令占用3个字节。
(3)SUB AX,AX ;减法指令, 该条指令只占用2个字节。 (4)XOR AX,AX
9、分别用存储器的5种寻址方式实现将以A为首址的第5个字(注意:从第0个算起)送AX的指令序列。
10、指出下列指令错误的原因。
答:(1)MOV CL,300 ;300超过字节数据表示范围 (2)MOV CS,AX ;CS不能作为目的操作数 (3)MOV BX,DL ;数据类型不匹配
(4)MOV ES,1000H :立即数不能送给段寄存器 (5)INC [BX] ;数据类型不明确 ? (6)ADD AX,DS :段寄存器不能参加运算
(7)TEST BX,[CX] ;存储器间接寻址只能使用BX、Sl、Dl、BP四个之一
(8)SUB [BX],[BP+SI] ;加减两个操作数不能同时为存储操作数 (9)JC [SI] ;条件转移只有短转移寻址方式
(10)SHL BX ;少给一个表明移位次数的操作数,l或CL 11、(1)CS=(1000)IP=(0155) (2)CS=(1000)IP=(176F) (3)CS=(1000)IP=(17C6) (4)CS=(2000)IP=(0146) (5)CS=(1000)IP=(1770) (6)CS=(2000)IP=(0146)
12、分别说明下列各组指令中的两条指令的区别。 答:(1)MOV AX,TABLE LEA AX,TABLE
假设TABLE为字变量名,则:左为将TABLE单元的内容送AX,右为将TABLE单元的偏移地址送AX。
假设TABLE为字节变量名,则:左为错误指令,右为将TABLE单元的偏移地址送AX
假设TABLE为常量名,则:左为将TABLE的内容送AX,右为错误指令 (2)AND BL,0FH OR BL,0FH
左为将BL的高4位清0,右为将BL的低4位置1
(3)JMP SHORT Ll JMP NEA RPTR Ll 左为短转移,2字节的指令,转移范围为一l28~+127
右为近转移,l字节的指令,转移范围为--32 768+32 767 (4)MOV AX,BX MOV AX,[BX] 左为将BX的值送AX
右为将BX的值作为相对DS段的内存单元偏移地址,取出字单元值送AX (5)SUB DX,CX CMP DX,CX 左为减法,并将DX-CX的值存入DX中
右为比较,做减法,但不会将DX-CX的值存入DX中
(6)MOV [BP][SI],CL MOV DS:[BPIESI],CL
左边第~操作数默认为相对于SS段偏移的存储器操作数
右边第一操作数采用段超越,指定为相对于DS段偏移的存储器操作数 13、写出判断AL为正为负的程序段(请至少用三种方法)。
答:方法一:CMP AL,80H ;而后用JAE代表负数转移,JB代表正数转移
方法二:CMP AL,00H ;而后用JGE代表正数转移,JL代表负数转移
方法三:TEST AL,80H ;而后用JNZ代表负数转移,JZ代表正数转移
方法四:OR AL,AL ;而后用JNS代表负数转移,JS代表正数转移
方法五:AND AL,AL ;而后用JNS代表负数转移,JS代表正数转移
方法六:SUB AL,00H ;而后用JGE代表正数转移,JL代表负数转移
方法七:TEST AL,80H :而后用JNS代表正数转移,JS代表负数转移
14、思考题:试比较以下几条指令的功能。 答:MOV BX,SI ;将SI的值送给BX
MOV BX,[SI] ;将SI的值作为偏移地址找到对应的内存单元中的值送给BX
MOV BX,OFFSET[SI] ;将Sl的值作为偏移地址找到对应内存单元的偏移地址送给BX,即SI的值送给BX
LEA BX,[SI] ;将Sl的值作为偏移地址找到对应内存单元的偏移地址送给BX, 即Sl的值送给BX
LDS BX,[SI] ;将Sl值作为偏移地址找到对应内存单元中的第一个字值送给BX, 第二个字值送DS
LES BX,[SI] :将SI值作为偏移地址找到对应内存单元中的第一个字值送给BX, 第二个字值送ES
15、设B、D为字节变量,A、C为字变量,且A除B可能会溢出,试编写无符号数或有符号数A/B商送C,余数送D。 答:可能会溢出则要考虑扩展数据表示能力。
;无符号数除法 . ;有符号数除法 MOV AL,B MOV AL,B XOR AH,AH CBW
MOV BX,AX MOV BX,AX MOV AX,A MOV AX,A
XOR DX,DX ;无符号扩展 CWD ;有符号扩展 DIV BX IDIV BX MOV C,AX MOV C,AX MOV D,DL MOV D,DL
16、编写程序段实现DX、AX中32位二进制数*l0 (设不溢出)。 答:;X*10=X*8+X*2,用移位指令实现
SHL AX,1
RCL DX,1 :DX,AX=(DX,AX)*2 MOV BX,DX
MOV BP,AX ;BX,BP转存2倍值 SHL AX,l
RCL DX,l ;再乘2 SHL AX,l
RCL DX,1 :再乘2 ADD AX,BP
ADC DX,BX ;8倍+2倍=10倍 17、请编写程序段实现如图3.33所示功能。
MOV SI,BX LDS BX,[SI] 18、设已有定义 STR DB “Sdfikjwsmfw893040pYUIUKLHGUkjdshf8” N EQU $ - STR1
试编写实现在STR中查找是否存在非‘A’的功能程序段。即表示STR串中大部分是‘A’,若其中存在不是‘A’的字符则查找成功,若STR全部为‘A’则不成功。
19、程序理解执行。
(1) MOV AH,一l ;AH=FFH MOV AL,180 ;AL=B4H MOV BL,15 ;BL=0FH
IDⅣ BL ;AX/BL即:-76/15,商-5,余数-l 程序段执行后,AX=0FFFBH。
说明:关键是要知道谁除以谁,特别注意是有符号除还是无符号除。 (2) MOV AL,0CH ;AL=0CH
OR AL,AL ;AL=0CH,CF=0 SBB AL,0F0H ;AL=lCH
NEG AL ;AL=E4H,CF=1 ADC AL,0D4H ;AL=B9H
TEST AL,35H ;AL=B9H,CF=0 程序段执行后,CF= 0 ,AL=B9H。
说明:第(1)、(2)小题只要理解每条指令功能及对标志位的影响,逐步进行即可完成。
(3) MOV AL,08H
MOV AH,一l ;AX=FF08H MOV BX,0F8H ;BX=00F8H CMP AX,BX
程序段执行后SF⊕OF=1 ,CF= 0 。
(4) MOV AX,?中? ;AX的二进制高位为1,即落在负数范围 MOV BX,?AB? ;BX的二进制高位为0,即落在正数范围 CMP AX,BX
程序段执行后SF⊕OF=1 ,CF= 0 。
说明:第(3)(4)小题实质是考查有符号数和无符号数大小的比较。 (5) MOV AX,?58? ;AX=3538H AND AX,0F0FH ;AX=0508H
AAD ;AX=58=003AH 程序段执行后AX= 003A H,即58。
程序段的功能是:将两位非压缩BCD码转化为其对应的十六进制数。 说明:可用AAD指令实现将十位和个位数值拼装还原为0~99的十六进制数。反之将0~99的数值分离成十位和个位可用AAM指令实现,教材《汇编语言、微机原理及接口技术(第2版)》例5.10和例5.13中均有应用。 20、程序语句填空。
(1)下列是完成1~20之间的奇数累加和存于AL中的程序段: XOR AL,AL
MOV CX,10 ;循环次数 MOV BL,1 AGAIN:ADD AL.BL
ADD BL,2 ;步长,参数改变 LOOP AGAIN
(2)下列是在串长为N的串STR中查找是否有?M?字符的程序段: MOV DI,SEG STR MOV ES,DI LEA Dl,STR CLD
MOV CX,N MOV AL,7M7
REPNE SCASB ;串查找核心指令 JZ FOUND ;转到找到分支
(3) 下列是完成1位十六进制数X显示的程序段: MOV DL,X AND DL,0FH
ADD DL,30H ;或OR DL,30H CMP AL,?9? JBE NEXT ADD DL,7 NEXT:MOV AH,02H INT 21H
(4) 将DH中的二进制数看成压缩BCD码并送出显示的程序段如下: MOV DL,DH
MOV CL,4 ;获取十位 SHR DL,CL ADD DL,30H
MOV AH,2 ;2号功能调用显示十位 INT 21H
MOV DL,DH
AND DL,0FH ;获取个位 OR DL,30H INT 21H 21、图略
22、假定AX和BX中的内容为带符号数,CX和DX的内容为无符号数,请用比较指令和转移指令实现以下条件转移:
(1)若DX的内容超过CX的内容,则转到Ll。 答:CMP DX,CX JA Ll
(2)若BX的内容大于AX的内容,则转到L2。 答:CMP BX,AX JG L2
(3)若DX的内容未超过CX的内容,则转到L3。 答:CMP DX,CX JNA L3
(4)判断BX与AX相比较是否产生溢出,若溢出则转到L4。 答:CMP BX,AX JO L4
(5)若BX的内容小于等于AX的内容,则转到L5。 答:CMP BX,AX JLE L5
(6)若DX的内容小于等于CX的内容,则转到L6。 答:CMP DX,CX JBE L6
23、假设BX=0A69H,VALUE变量中存放的内容为1927H,写出下列各条指令执行后的BX的寄存器中和CF、ZF、SF与OF的值:
(1) XOR BX,VALUE (2) AND BX,VALUE (3) OR BX,VALUE (4) SUB BX,VALUE (5) CMP BX,VALUE (6) TEST BX,VALUE
答: BX CF ZF SF OF (1) 134EH 0 0 0 0 (2) 0821H 0 0 0 0 (3) 186FH 0 0 0 0 (4) Fl42H 1 0 1 0 (5) 0A69H 1 0 1 0 (6) 0A69H 0 0 0 0
第4章 MASM汇编语言
1、名词解释
指令 伪指令 宏指令 汇编语句 汇编语言 汇编源程序 汇编程序 汇编 连接程序 连接
答:指令:是CPU可以理解并执行的操作命令。
伪指令:是用于为汇编程序编译时理解程序框架、分配空间(数据定义)等的汇编语句。
宏指令:实质上就是有多条指令打包而成的一组指令的集合。
汇编指令:一行只能写一条汇编语句,一条汇编只能写在一行内。
汇编语言:语句中的表达式是在汇编过程中完成计算的,即翻译之后的机器语言程序中
是不包含表达式的。
汇编源程序:主要有四步,录入源程序、汇编、连接、运行、调试运行。(不准确)
汇编程序:编写汇编程序实质上就是在记住程序框架的基础上填写两空,即数据定义部
分和功能程序部分。
汇编:格式:MASM [[盘符][路径]程序基本名[.ASM]] 建议程序基本名不要省略.
连接程序: 编译器和汇编程序都经常依赖于连接程序,它将分别在不同的目标文件中编译或汇编的代码收集到一个可直接执行的文件中。连接程序还连接目标程序和用于标准库函数的代码,以及连接目标程序和由计算机的操作系统提供的资源
连接:LINK [[盘符][路径]程序基本名[.OBJ]]建议程序基本名不要省略。 2、写出三种汇编语句的基本格式并进行说明。
教材P50
3、由用户取名的名字项有哪些?名字项的取名规则如何?
教材P50
4、请计算下列表达式的值。
答(1) 3+6/3*4 mod 3 ;注意运算优先级,值为5
(2) (M GT N) AND N OR M LE N AND M ;M,N中的较小值
(3) 5 GT 3 (作为8位和16位二进制数各为多少) ;0FFH和0FFFFH (4) 20 AND 77(作为8位和16位二进制数各为多少) ;04H和0004H (5) 5 AND-1 :5 (6) 5 OR-1 ;-l (7) NOT 5 (作为8位和16位二进制数各为多少) ;0FAH和0FFFAH,均为-6
(8) 设有定义如下:
A DB 2,4,6,8 B DW 2,4,6,8
C DW 5 DUP(2,4,6,8)
则TYPE A、TYPE B和TYPE C分别为多少? ;1,2,2 LENGTH A、LENGTH B和LENGTH C分别为多少? ;1,1,5 SIZE A、SIZE B和SIZE C分别为多少? ;1,2,10 5、汇编语言中的数据类型与其他高级语言的数据类型相比较有哪些特点?
6、设有如下定义:
A DB 1101B,34,56Q,78H,4 DUP (?),'ABCD?
请画出内存分配示意图并将其改成内存中存放次序相同的DW及DD的等价定义语句。
答:图自己画。
A DW 220DH,782EH,2 DUP(?),4241H,4443H B DD,782E220DH,?,44434241H
7、一个汇编源程序最多可以定义多少个段?段寄存器与所定义的段之间的对应关系是怎样实现的? 答:最多4个段,通过段对应伪指令ASSUME 段寄存器名:段名来实现的对应。 8、设置一个数据段DATA,其中连续存放6个变量,用段定义语句和数据定义语句写出数据段:
(1)A1为字符串变量:?Example?。
(2)A2为数值字节变量:l00,127,-l,80H,35Q,1101110B。 (3)A3为4个0的字变量。 (4)A4为A3的元素个数。 (5)A5为A3占用的字节数。
(6)A6为Al,A2,A3,A4,A5占用的总字节数。 答:DATA SEGMENT
A1 DB ?Example?
A2 DB l00,127,一l,80H,35Q,ll0111013 A3 DW 4 DUP(0)
A4 DW LENGTH A3
A5 DW A4一A3 ;或SIZE A3 A6 DW $一Al DATA ENDS
9、指出下列每一小题中的伪指令表达的操作哪些是错误的?错误在哪里? 自己做。
10、指令OR AX, 0FC8H OR 563FH中,问两个OR操作分别在什么时候进行?有什么区别?用立即数写出此等价指令。
答:第一个OR是CPU执行指令时完成的操作,第二个OR是汇编程序汇编时完成的操作。
用立即数写出的等价指令是OR AX, 5FFFH。 11、指出下列每一对伪指令语句的区别 自己做。
12、请进行宏与子程序的比较。
教材P60
13、请用流程图表示完整汇编程序的上机过程。
教材P61
14、请默写两段程序的基本框架。
教材P60
15、请写出两字节数据相乘保存于字中的宏定义。 答:参考代码如下:
ABM MACRO OPR1,OPR2,OPR3 ;宏定义,三个形参
PUSH AX PUSH BX
MOV AL,OPR1
MOV BL,OPR2 MUL BL
MOV OPR3,AX POP BX POP AX
ENDM ;宏定义结束
第5章 汇编程序设计
1、程序的三种基本结构是什么?请分别画出各自核心部分的流程图。 P66
2、请画出将1字节二进制数据转化成十六进制数显示的流程图。 自己画
3、编程实现两个字节变量相乘送字变量的程序。 答:DATA SEGMENT
A DB l2H B DB 34H C DW ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,A MUL B
MOV C,AX :C=A×B MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START
4、编程实现从键盘接收2个一位十进制数并计算和显示它们的积。(如输入7和9则显示为:7*9=63) 答:CODE SEGMENT
ASSUME CS:CODE
AGAINl:MOV AH,1 ;录入第一位
INT 2lH CMP AL,'0' JB AGAINl CMP AL,'9' JA AGAINl MOV DH,AL SUB DH,30H
MOV DL,'*? ;显示”*” MOV AH,2 INT 21H
AGAIN2:M0V AH,1 ;录入第二位
INT 21H
CMP AL,?0? JB AGAIN2 CMP AL,?9? JA AGAIN2
SUB AL,30H
MUL DH ;相乘
AAM ;分离十位和个位 MOV DH,AL ;暂存个位 MOV DL,AH :显示十位 ADD DL,30H MOV AH,2 INT 21H
MOV DL,DH ;显示个位 ADD DL,30H INT 21H
MOV AH,4CH INT 21H CODE ENDS
END AGAINl
5、编程实现从键盘接收两位十六进制数并将其转化为等值的十进制数显示出来(如输入7CH=124,要求至少设计一个子程序)
自己写
6、编程实现三个变量值的排序(分别用无符号数和有符号数处理)。 答:实现A、B、C三个变量从小到大排序的程序如下。 DATA SEGMENT
A DB l2H B DB 34H C DB 23H DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX MOV AL,A CMP AL,B
JBE NEXTl ;无符号,有符号用JLE XCHG AL,B MOV A,AL NEXTl:CMP AL,C
JBE NEXT2 :无符号,有符号用JLE XCHG AL,C MOV A,AL NEXT2:MOV AL,B
CMP AL,C
JBE NEXT3 ;无符号,有符号用JIE XCHG AL,C MOV B,AL
NEXT3:MOV AH,4CH ;返回DOS
INT 21H CODE ENDS
END START
7、编程实现任意个有符号字节数据之和(和要求用字变量存放)。 答:DATA SEGMENT
A DB …………. ;任意个字节数据 N EQU $-A ;元素个数 SUM DW ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA STAR:MOV AX,DATA MOV DS,AX LEA SI,A XOR DX,DX MOV CX,N
AGAIN:MOV AL,[SI】
CBW
ADC DX,AX LOOP AGAIN MOV SUM,DX
MOV AH,4CH :返回DOS INT 21H CODE ENDS
END START
8、编写一个菜单选择处理程序。 自己写
9、编写一子程序实现从某字数组中选出最大值。
答: 求数组元素最大值过程名MAX,数组首址为Sl,元素个数为CX,最大值由AX带出。
MAX PROC NEAR PUSH SI PUSH CX
MOV AX,[S1]
AGAIN:CMP AX,[SI]
JGE NEXT ;有符号数,若为无符号数则JAE MOV AX,[SI] NEXT:INC SI INC SI
LOOP AGAIN POP CX POP SI RET MAX ENDP
10、编写一子程序实现从某字数组中求出平均值(设其和不会超出范围)。 答:;求数组元素之和函数SUM,数组首址为Sl,数组元素个数为CX,和由AX带出。
SUM PROC NEAR PUSH SI PUSH CX
XOR AX,AX AGAIN:ADD AX,[S1]
INC Sl INC SI
LOOP AGAIN POP CX POP Sl RET SUM ENDP
11、从键盘接收一串字符,并另起一行逆序显示该字符串。 答:DATA SEGMENT
BUF DB 81,0,81 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,BUF
MOV AH,l0 ;接收一串字符 INT 2lH
MOV DL,0DH ;显示回车换行 MOV AH,2 INT 21H
MOV DL,0AH MOV AH,2 INT 21H
MOV CL,BUF+1 ;取接收的字符数 XOR CH,CH LEA BX,BUF+1
ADD BX,CX ;BX指向串尾 AGAIN:MOV DL,[BX] ;逆向显示
MOV AH,2 TNT 21H DEC BX
LOOP AGAIN MOV AH,4CH INT 2lH CODE ENDS
END START
12、假设密码为“123456”,从键盘接收密码并验证,若正确则显示“欢迎使用本系统”,否则显示“密码错误,您无权使用!”。 自己写 13、从键盘输入1字节的两位十六进制数据,并分别用二进制、八进制、十进制、十六进制显示出来其等价的值。 自己写
第6章 Intel 8086/88微处理器
1、8086/88 和传统的8位计算机相比在执行指令方面有什么不同?有什么优点? 答:总线接口部分和执行部分是分开的,每当EU执行一条指令时,造成指令队列空出2个或空出一个指令字节时 ,BIU马上从内存中取出下面一条或几条指令,以添满他的指令队列。这样,一般情况下,CPU在执行完一条指令后,便可马上执行下一条指令,不像以往8位CPU那样,执行完一条指令后,需等待下一条指令。即EU从指令队列中取指令、执行指令和BIU补充指令队列的工作是同时进行的。这样大大提高了CPU利用率,降低了系统都对存储器速度的要求。
2、8086有哪两种工作模式?其主要区别是什么?
答:答:8086有最大和最小两种工作模式,最小工作模式是指MN/MX引脚为高电平,系统中只有8086/8088微处理器,系统中的所有控制信号都直接由CPU产生。最大工作模式是指MN/MX引脚为低电平,它是相对于最小模式而言的,系统中除了8086/8088作为处理器外,还包含数值运算协处理器8087、输入/输出协处理器8089,以及总线控制器8288和总线仲裁控制器8289等支持芯片,从而可以完成更复杂的运算或控制任务。 3、请画出8086/88 CPU功能模块图
4、请说明8088与8086的主要区别。 答:教材P81、P82和P91
5、请画出8088CPU最小模式核心示意图。
参考P85图6.8最小模式的8086CPU子系统图 6、请画出8088CPU最大模式核心示意图。
参考P87图6.10最大模式的8086CPU子系统
7、8284时钟发生器的功能是什么?它产生哪些信号?这些信号有何作用? 教材P83
8、8086/8088的基本总线周期由几个时钟周期组成?IBM PC/XT机中CPU的时钟周期包括多少?一个输入或输出总线周期包括多少个时钟周期?
答:8086/8088的基本总线周期由4个时钟周期组成。mM PC/XT机中CPU的时钟周期是210 nS,一个输入或输出总线周期至少是4个时钟周期。
说明:总线周期——CPU的BIU取指令和传送数据需要的时间。一个基本的总线周期由4个时钟周期(T状态)组成,即T1、T2、T3、T4状态。
(1)在T1状态,CPU向地址/数据复用线(ADl5~ADO)和地址/状态复用线(AldS6~A1dS3)上发送地址信息,产生本次操作的地址。
(2)在T2状态,CPU从总线上撤销地址信息,并向地址/状态复用线(A19/S6~AldS3)上发送本次操作的状态信息(S6~S3);在读操作下,地址/数据复用
线(ADl5~ADO)浮空(高阻),为接收数据做准备;在写操作下,地址/数据复用线出现本次操作的数据。
(3)在T3状态,地址,状态复用线仍为状态信息,地址/数据复用线出现本次操作的数据(读或写数据)。
(4)在有些情况下,外设或存储器数据传输的速度跟不上CPU,则向CPU发出“未准备好\信号(READY=0),CPU在T3状态后自动插入1个至多个等待周期TW,直至READY=1为止,进入T4状态。
(5)在T4状态,总线周期结束。
(6)若CPU不执行总线操作(不访问存储器或I/O),系统总线则执行空闲周期Ti;在执行空闲周期时,总线高4位保留前一个总线周期的状态信息;若前一个总线周期为写操作,则地址/数据复用线仍保留写数据,若为读操作,则地址/数据复用线浮空。
9、在T1状态下,8086/8088数据/地址线上传送的是什么信息?用哪个信号可将此信息锁存起来?数据信息是在什么时候送出的?在IBMPC/XT机中是怎样使系统地址总线和系统数据总线同时分别传送地址信息和数据信息的? 答:在T1状态下,8086/8088数据/地址线上传送的是地址信息Al5~A0,地址锁存信号ALE引脚为高电平时,地址被锁存。数据信息是在DEN信号有效的时候送出,即主要在T2至乃期间。地址数据分时复用主要是用到地址锁存器(ALE有效)锁存地址送上数据总线,DEN有效数据缓冲器开通实现数据总线与CPU相通。
10、简述读内存的基本过程。
答:读内存的过程其实就是取指令(或取数)的过程,具体如下:
(1)CPU先将待取指令(数据)的地址送上地址总线并译码指定到对应的内存单元。
(2)CPU再发出读信号。
(3)内存单元内容的送出指令到数据总线。 (4)指令(数据)通过数据总线送到CPU。
(5)因为是取指令,CPU内部存入指令队列(取指特有)。 11、简述写内存的基本过程。 教材P90
12、根据8086内存读/写时序图,回答如下问题: (1)地址信号在哪段时间内有效?
T1周期
(2)读操作与写操作的区别?
教材P89、P90
(3)内存读写时序与I/O读写时序的区别?
读写控制引脚有效性不同,要给出具体引脚。 (4)什么情况下需要插入等待周期TW? 教材P89
13、请画出8088最大模式读内存时序图。
参考P90图6.13 8086读总线周期时序图(最大模式),根据地址引脚和数据引脚的区别进行修改(8088只有8个数据引脚) 14、请画出8088最小模式写IO时序图。 参考P91图6.14 8086写总线周期时序图(最小模式),根据下面提到的8088
和8086的最小模式读写内存或者IO时序的区别进行修改。 15、总线响应的条件是什么? 教材P92
16、简述总线请求/响应的基本过程。 教材P92
17、RESET信号来到后,8086/8088系统的CS和IP分别为什么内容?复位时执行的第一条指令的物理地址是多少? 答:RESET信号来到后,8086,8088系统的CS和IP分别为0F'FFFH和0000H。 18、编写使计算机软启动的功能程序段。
第7章 内存组成、原理与接口
1、存取周期是指(C)。
A.存储器的读出时间 B.存储器的写入时间
C.存储器进行连续读和写操作所允许的最短时间间隔 D.存储器进行连续写操作所允许的最短时间间隔
2、某计算机的字长是16位,它的存储器容量是64KB,若按字编址,那么它的最大寻址范围是(B)。
A.64K字 B.32K字 C.64KB D.32KB 3、某一RAM芯片的容量为512×8位,除电源和接地线外,该芯片的其他引脚数最少应为(D)。
A.25 B.23 C.21 D.19
注:地址线9根,数据线8根,控制线2根。 4、EPROM是指(D)。
A.随机读写存储器 B.只读存储器
C.可编程的只读存储器 D.可擦除可编程的只读存储器 5、下列RAM芯片各需要多少个地址引脚和数据引脚?
(1)4K×8位 (2)512K×4位 (3)1M×l位 (4)2K×8位 答:SRAM:(1)12和8 (2)19和4 (3)20和1 (4)11和8
DRAM:(1)6和16 (2)5和8 (3)10和2 (4)6和16 。 6、下列ROM芯片各需要多少个地址引脚和数据引脚?
(1)16×4位 (2)32× 8位 (3)256×4位 (4)512× 8位 答:(1)4和4 (2)5和8 (3)8和4 (4)9和8
7、存储器按功能、性质和信息存取方式分别可分为哪些类型?
教材P95
8、计算机的内存和外存有什么区别?
答:内存用于存放当前正在运行的程序和正在使用的数据,CPU可以直接对它进行访问。相对于外存而言,内存主要特点是存取速度快、存储容量较小、成本较高,通常使用半导体存储器组成。外存用于存放当前暂不使用的或需要永久性保存的程序、数据和文件,在需要重用时才成批地调入,调出内存。外存的主要特点是存储容量大、成本较低、存取速度较慢,必须使用专门的设备(如磁盘驱动器、光盘驱动器、磁带机)才能访问,一般使用磁性介质如磁盘、磁带)或光介质(如光盘)实现。
9、微机中为什么要使用层次结构的存储系统? 教材P97
10、简要回答以下问题:
(1)按信息存储的方式,RAM可分为哪三种? 只读、直接存取、顺序存取
(2)只读存储器按功能可分为哪四种? 教材P96
(3)SRAM和DRAM主要有哪些区别? SRAM特点:
SRAM的基本存储单元是6管双稳态触发电路存储信息。
每个基本存储元存储二进制数一位,许多个基本存储元形成行列存储矩阵。 SRAM一般采用“字结构”存储矩阵: 每个存储单元存放多位(4、8、16等) 速度快(<5ns),不需刷新,外围电路比较简单,但集成度低(存储容量小,约1Mbit/片),功耗大。
在PC机中,SRAM被广泛地用作高速缓冲存储器Cache DRAM特点:
DRAM的存储元主要由电容构成;
存储信息不稳定,需要“读出再生放大电路”定时刷新。 每次同时对一行的存储单元进行刷新 DRAM一般采用“位结构”存储体: 每个存储单元存放一位 存储容量高(集成度高),功耗低,存取速度较低,价格便宜,主要用作主内存。
(4)闪存Flash ROM的主要优点是什么? 教材P96
11、用下列芯片构成存储系统,各需要多少个RAM芯片?需要多少位地址作为片外地址译码?设系统为20位地址线,采用全译码方式。
(1)512×4位RAM构成l6KB的存储系统。 (2)1024×1位RAM构成l28KB的存储系统。
(3)2K×4位RAM构成64KB的存储系统。 (4)64K×1位RAM构成256KB的存储系统。
答:(1)需要64片RAM和11位地址作为片外地址译码。
(2)需要l024片RAM和10位地址作为片外地址译码。 (3)需要64片RAM和9位地址作为片外地址译码。 (4)需要32片RAM和4位地址作为片外地址译码。 12、已知某微机控制系统中的RAM容量为4K×8位,首地址为4800H,求其最后一个单元的地址。
答:最后一个单元地址=起始地址+容量一1
4800H+1000H一1=57FFH 、
13、某微机系统中内存的首地址为3000H,末地址为63FFH,求其内存容量。 答:容量=最后一个单元地址一起始地址+1
63FFH~3000H+1=3400H=13KB 14、某微机系统中ROM为6KB,最后一个单元的地址为9BFFH,RAM为3KB。已知其地址为连续的,且ROM在前,RAM在后,求该内存系统的首地址和末地址。 答:9BFFH--1800H+1=8400H,所以ROM的首地址为8400H、末地址为9BFFH。RAM的首地址为9C00H,末地址为9C00H+C00H一1=A7FFH。
15、用半导体存储器芯片组成内存子系统时需注意哪些问题?三总线AB、DB、CB的一般接法?
教材P110
16、内存系统的芯片选择通常有哪几种形式,各有何特点?
答:有全译码法、部分译码法和线选法三种。在内存译码电路中,系统的全部地址总线都参与地址译码,对应存储器芯片中的每一个存储字都有唯一的确定地址,
称之为“全译码”法。如果仍使用集成译码器,但片外地址中有一部分不参加对内存的片选译码,称为“部分译码”法。如果只使用一些基本的逻辑门电路——与门、或门和非门的组合,对若干位片外地址译码实现对内存的片选,称为“线选法”。 17、相对于SRAM,DRAM需要解决哪些特殊问题? 教材P113
18、在图7.23中,如果将片选控制信号从。。。。。依次改接到。。。。。,各芯片的地址范围为多少?
注:高位地址没变,只有地位片内译码地址变了,列表画出来各芯片的地址表即可找出地址范围。 19、使用2732、6116和74LSl38构成一个存储容量为12KB ROM(地址00005H~02FFFH)、8KB RAM地址(03000H 04FFFH)的内存系统。设系统地址总线20位,数据总线8位,全译码。请画出原理图。
答:习题l9的内存连接原理图下图所示。
第8章 输入输出(I/O)系统
1、简述I/O接口的基本功能。
答:I/O接口是主机和外设的通信桥梁,主要有数据的寄存和缓冲功能、对外设的控制和监测功能、设备选择功能、信号转换功能、中断管理或DMA管理功能、可编程功能。
2、数据信息有哪几类?CPU和输入输出设备之间传送的信息有哪几类?相应的端口称为什么端口? 答:数字信息有数字量、模拟量和开关量三种。CPU和外设主要传送数据信息、状态信息和控制信息,相应的为数据端口、状态端口和控制端口。 3、简述I/O端口独立编址方式和存储器映射方式的特点及优缺点。 教材P123
4、CPU和外设之间的数据传送方式有哪几种?各种传送方式通常用在什么场合? 答:CPU和外设之间的数据传送方式有以下几种:无条件传送方式、查询传送方式、中断传送方式、DMA(直接存储器存取)方式、lOP(输入输出处理机)方式。 无条件I/O:适合于外设总是处于准备好或准备好时间相对固定的设备。 查询I/O:在传送前先查询一下外设的状态,当外设准备好了才传送;若未准备好,则CPU等待。适合较复杂且准备好时间相对较短的设备。
中断I/O:采用中断方式则可以免去CPU的查询等待时间,当外设没有准备好时,CPU可以去做自己其他的工作;当外设准备好时,主动向CPU提出请求。故在中断方式中,CPU和外设以及外设与外设之间是并行工作。适合较复杂且准备好时间相对较长的设备。
DMA方式I/O:直接用硬件控制数据在外设和存储器之间的传送,适合快速且成块的数据传输。
IOP方式:IOP可以和CPU并行工作,提供高速的DMA处理能力,实现数据的高速传送,但成本较高,适合要求I/O速度很高的场合,如3D图形显示等。
5、何为全译码方式?何为部分译码方式?其优缺点各是什么?
答:全译码方式:CPU的全部地址总线都参与地址译码,因此一个端口对应唯一的一个地址,使用的地址线比较多,电路比较复杂。部分译码方式:CPU输出的地址信号只有部分参与地址译码,另一部分(一般为高位或低位地址)未参与,因此一个译码输出对应若干个端El地址,这就是地址重叠现象。这种方法使用地址线少,电路简单。
6、分析下图所示的译码电路,当地址信号Al5~A7是多少时,74LSl38才能允许工作?Y0~Y7有效(为低电平)时对应的地址各是什么?
答:分析译码电路采用逆向分析的方法:或门输出无效,则输入必须全无效;与
门输出有效,则输入必须全有效。
译码器74LSl38要工作,两低一高控制端必须同时有效,所以Al5~A7的数值为010001100。A6、A5、A4作为译码输入,A3~A0未参加译码,所以74LSl38的译码地址为010001100000XXXX~010001100111XXXX,即Y0至Y7分别对应端口地址4600H~460FH、4610H~461FH、4620H~'462FH、4630H~463FH、4640H~464FHl 4650H~465FH、4660H~466FH、4670H~467FH。 7、设计一个外设端口地址译码器,使CPU能寻址四个地址范围:(1)240~247H,(2)248~24FH,(3)250~257H,(4)258~25FH。
答:如果是重叠地址则译码电路如图8.2所示,如果是可变译码则译码电路如图8.3所示。
8、试用74LS244作为输入接口,读取三个开关的状态,用74LS273作为输出接口,点亮红、绿、黄三个发光二极管,示意图如图8.23所示。请画出PC/XT机系统总线的完整接口电路(包括端口地址译码的设计),端KI地址如图中所示(340H和348H),并编写能同时实现以下三种功能的程序: (1)K0、Kl、K2全部合上时,红灯亮; (2)K0、Kl、K2全部断开时,绿灯亮; (3)其他情况黄灯亮。 答:程序如下:
AGAIN:MOV DX,340H
IN AL,DX ;开关采样 AND AL,07H ;屏蔽无效位 CMP AL,0
JE RED ;全合上,转红灯亮 CMP AL,07H
JE GREEN ;全合上,转绿灯亮 MOV AL,01H ;否则,黄灯亮
JMP NEXT
RED:MOV AL,04H JMP NEXT
GREEN:MOV AL,02H NEXT:MOV DX,348H OUT DX,AL
JMP AGAIN
9、图8.24为一个LED接口电路,写出使8个LED管自上至下依次发亮2S的程序,并说明该接口属于何种输入输出控制方式?为什么?
答:该接口驱动的是发光二极管,属始终准备好的简单外设,所以可用无条件I/O。程序如下:
MOV AL,07FH ;共阳接法,送0亮 MOV CX,8
AGAIN:OUT 20H,AL ROR AL,l
CALL DELAY2S ;调用延迟2S子程序 LOOP AGAIN
第9章中断技术
1、什么叫中断?简述一个中断的全过程。
答:中断是指CPU正在执行某个程序,因为某种原因被打断,转去为这种原因服务,服务完后返回继续执行被暂时中断的程序。中断过程主要有中断请求、中断判优及响应、中断服务和中断返回。
2、确定中断的优先级(权)有哪两种方法?各有什么优缺点?IBM PC系列微机中断判优用的是什么方法?
答:确定中断优先级方法主要有查询法、请求链队法、响应链队法、编码比较法等。
查询法主要由查询的先后次序决定其优先级。请求链队法主要由其排队的先后次序决定其优先级,只有级别高无请求时,级别低才可以提出请求。响应链队法主要由其排队的先后次序决定其优先级,均可提出请求,但只响应排在最前面的请求。编码比较法主要是用于中断嵌套,判断是否有比当前正在服务的中断请求更高级别的中断请求,有则响应,无则屏蔽。
IBM PC系列微机中断判优用的是中断控制器8259A,其内部集成了可编程改变的请求优先级电路及编码比较电路,既可以处理中断的优先级、也可以处理中断嵌套的优先级。
3.8086/8088的中断分类?什么是中断向量?什么是中断向量表?8086/8088总共有多少级中断?它们的中断类型号是多少?中断向量表设在存储区的什么位置?
答:中断分类如图所示。
中断向量是指中断服务程序的入口地址。所有指中断服务程序的入口地址依次存放的区域称为中断向量表。8086/8088总共有256级中断,中断类型号从0至255。中断向量表设在存储区最起始的1 KB位置,每个中断向量占用4字节。 4、什么是不克屏蔽中断?什么是可屏蔽中断?它们得到CPU响应的条件是什么? 答:屏蔽和非屏蔽是指CPU接收到中断请求后,能否不响应中断请求,可以不响应的请求称为可屏蔽中断,必须响应的称为不可屏蔽中断。
非屏蔽中断响应的条件是:A.无总线请求;B.当前指令执行完毕。 可屏蔽中断响应的条件是:A.无总线请求;B.无不可屏蔽中断请求;C.IF----1;D.当前指令执行完毕。
5、8086/8088 CPU怎样得到中断服务程序地址?
答:8086/8088 CPU依据中断号乘以4找到中断向量表的位置,即从0段偏移中断号乘以4处连续取两个字,低字是中断服务程序的偏移地址,高字是中断服务程序的段地址。 6、8259A的中断屏蔽寄存器IMR和8086/8088的中断允许标志IF有什么差别?在中断响应过程中,它们怎样配合起来工作?
答:8259A的中断屏蔽寄存器IMR设置的是中断请求线路上的屏蔽,即请求能否送出。8086/8088的中断允许标志IF是站在CPU的角度,即CPU接收到请求可否不去响应。
若IF=0,则CPU不会有中断响应过程,即不再理会8259A送给CPU的中断请求;若IF=1,CPU在合适的时候对8259A的中断请求给出响应,再由8259A内部去决定响应的哪个请求(8259A的排队电路及编码比较电路及屏蔽工作,IMR位为l的中断请求不参加排队),而后由8259A送可响应的最高级别请求的中断号给CPU。
7、简述8259A的主要功能。对8259A的编程有哪两类?它们分别在什么时候进行?
功能见书145页, ICW初始化编程,OCW操作控制,编程流程参考149~152页
8、8259A仅有两个端口地址,如何识别4条ICW命令和3条OCW命令? 教材P148表9.1和图9.15
9、有关优先级,8259A有哪几种操作方式?其含义是什么? 教材P153
10、8259A的特殊屏蔽方式和普通屏蔽方式相比,有什么不同之处?特殊屏蔽方式一般用在什么场合? 教材P154 11、8259A有几种结束中断处理的方式?各自应用在什么场合?在非自动结束中断方式中,如果没有在中断处理程序结束前发中断结束命令,会出现什么问题? 参考152页,中断结束方式
12、怎么用8259A的屏蔽命令字来禁止IR3和IR5引脚上的请求?又怎样撤销这一禁止命令?设8259A的端口地址为93H,94H,写出有关命令。 答:禁止IR3和IR5中断:
IN AL,93H OR AL,28H OUT 93H,AL
撤销禁止IR3和IR5中断:
IN AL,93H AND AL,D7H OUT 93H,AL
13、若8086系统采用单片8259A,其中断类型码为46H,则其中断向量表的中断向量地址指针是多少?这个中断源应连向瓜的哪一个输入端?若中断服务程序入口地址为0ABC00H,则其向量区对应的4个单元的数码依次为多少?
答:其中断向量表的中断向量地址指针是0:46H'4,即0:ll8H。这个中断源应连向IR的IR6输入端。若中断服务程序入口地址为0ABC00H,则其向量区对应的4个单元的数码依次为00、0C、00、AB,这只是其中一种方案,其实答案很多。
14、若8086系统采用级联方式,主8259A的中断类型码从30H开始,端口地址为20H,2lH,从8259A的INT接主片的IR7,从片的中断类型码从40H开始,端口地址为22H,23H。均不要ICW4。试对其进行初始化编程。 答:根据上述使用要求和硬件连接情况,对8259A的主片和从片分别编程如下。 (1)主8259A初始化
INTA00 EQU 20H ;8259A主片端口0 INTA01 EQU 21H ;8259A主片端口l
MOV AL,0001000B ;ICWl:边沿触发、级联、不要ICW4 OUT INTA00,AL
JMP SHORT $+2 ;I/O端口延时要求(下同)
MOV AL,0011000B ;ICW:设置中断类型号的高5位为00110B OUT INTA01,AL JMP SHORT $+2
MOV AL,10000000B ;ICW,主片的IR2接从片的INT OUT INT01,AL (2)从8259A初始化
INTB00 EQU 22H ;从8259A端口0 INTB01 EQU 23H ;从8259A端口l MOV AL,00010000B :ICWl OUT INTB00,AL JMP SHORT $+2
MOV AL,01000000B :ICW2:中断类型号的高5位为01000B OUT INTB01,AL JMP SHORT $+2
MOV AL,00000111B ;ICW3:从片的INT接主片的IR2
OUT INTB01,AL
15、自己定义一个软中断,中断类型码为79H 答案略
第10章 可编程接口芯片及其应用
1、8255A的三个端口的基本特点是什么?
答:PA口工作于三种工作方式(方式0、方式1、方式2),PB口可工作于两种工作方式(方式0、方式1),PC口只可工作于一种工作方式(方式0)或部分引脚作为PA口或PB口工作非方式0时的联系信号线。 2、请画出8255A的内部结构及引脚图。 教材P165图10.1和10.2
3、请简述8255A的三种工作方式的主要特点。 教材P166
4、请画出8255A PB口工作于方式1输入时的引脚连接图。 参考教材P168图10.7
5、请画出8255A PA口工作于方式2时的引脚连接图。 参考教材P170图10.14
6、请写出8255A的工作方式控制字及置位/复位控制字各位的含义。 参考教材P171 7、请用8255A及相关器件设计一个具有8个按键,依次按下各键对应指示灯亮,未按下键以跑马灯的方式显示,每个显示500 ms后下一个显示,设延时500 ms的子程序为DELAY500,并编程实现。 答:设计如图l0.1所示。