微机原理期末考试复习课案.docx
《微机原理期末考试复习课案.docx》由会员分享,可在线阅读,更多相关《微机原理期末考试复习课案.docx(15页珍藏版)》请在冰豆网上搜索。
微机原理期末考试复习课案
1、统计出某数组中相邻两数之间符号变化的次数
DATASEGMENT
ARRAYDB20DUP(?
)
NUMDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTUP:
LEASI,ARRAY;
MOVAL,[SI]
MOVBL,0
MOVCX,19
AGAIN:
INCSI
XORAL,[SI]
JNSNEXT
INCBL
NEXT:
MOVAL,[SI]
LOOPAGAIN
MOVNUM,BL
MOVAH,4CH
INT21H
CODEENDS
ENDSTARTUP
2、乘法指令实现32位二进制数与16位二进制数相乘
MODELSMALL
.8086
.DATA
N1DW1234H
N2DW5678H
N3DW4444H
M1DW0
M2DW0
M3DW0
CODE
.STARTUP
MOVAX,N2
MULN3
MOVM3,AX
MOVM2,DX
MOVAX,N3
MULN1
ADDM2,AX
ADCM1,DX
.EXIT
END
3、设有3个自变量的变量名及其内容如下:
VAR13C46H,VAR2F678H,VAR30059H
设计一个数据段定义这三个变量及其地址表变量DDRTABL
DATASEGMENT
VAR1DW3C46H
VAR2DWF678H
VAR3DW0059H
ADDRTABL
DDVAR1
DDVAR2
DDVAR3
DATAENDS
4、设有一个符号数组,共M个,求其中最大的数,如需要求绝对值最大应如何修改,如为无符号数,程序如何修改。
DATASEGMENT
MEQU10
DATDWMDUP(?
)
MAXDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARUP:
MOVAX,DAT
MOVMAX,AX
CLD
LEASI,DAT
MOVCX,M
L1:
LODSW
CMPAX,MAX
JNGLAB
MOVMAX,AX
LAB:
LOOPL1
MOVAH,4CH
INT21H
CODEENDS
ENDSTARTUP
绝对值修改:
需要在LODSW插入
ANDAX,AX
JNSLAB1
NEGAX
LAB1:
CMPAX,MAX
程序初始化时MAX应送入0
无符号数程序修改:
判别条件CMPAX,MAX
JNGLAB
修改为CMPAX,MAX
JBELAB
5、编制一个程序将20个字节的数组分为正数和负数组,并计算两个数组中数据的个数
DATASEGMENT
DATDB20DUP(?
)
PDATDB20DUP(?
)
PDATDB?
PLENDB?
NDATDB20DUP(?
)
NLENDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTUP:
XORBX,BX
LEASI,DAT
XORDI,DI
CLD
MOVCX,20
LOOP0:
LODSB
CMPAL,0
JGELOOP1
MOVNDAT[BX],AL
INCBX
JMPLAB
LOOP1:
MOVPDAT[DI],AL
INCDI
LAB:
DECCX
JNZLOOP0
MOVPLEN,DI
MOVNLEN,BX
MOVAH,4CH
INT21H
CODEENDS
ENDSTARTUP
6、把从A开始的8个字节单元内容依次和从B开始的8个相应的字节单元内容互换。
DATASEGMENT
ADB'ABCDEFGH'
BDB'12345678'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,A
LEADI,B
MOVCX,8
LP:
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
INCSI
INCDI
LOOPLP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
7、计算BUF开始的数组中的100个元素中非零元素的个数,并将其存入COUNT单元,补全指令
BUFDB100DUP(?
)
COUNTDB0
..............
STARTUP:
MOVAX,DATA
MOVDS,AX
LEASI,
(1)________
MOVCX,
(2)______
CON:
MOVAL,[SI]
CMPAL,(3)_______
.JZNEXT
INC(4)_____
NEXT:
INCSI
LOOP(5)______
HLT
答案:
BUF1000COUNTCON
8、程序执行后寄存器的值:
MOVAX,01H
MOVBX,02H
PUSHBX
PUSHAX
POPBX执行后BX=
(1)___
POPAX执行后AX=
(1)____
MOVAX,3F5FH执行后AL=(3)______
MOVCX,4
RORAL,CL执行后AL=(4)____
ANDAL,0FH执行后AL=(5)_______
答案:
01H02H5FH0F5H05H
9、分支程序设计实验
(1)显示AL中两位十六进制数程序:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,3EH
MOVBL,AL
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBENEXT1
ADDDL,7
NEXT1:
ADDDL,30H
MOVAH,2
INT21H
MOVDL,BL
ANDDL,0FH
CMPDL,9
JBENEXT2
ADDDL,7
NEXT2:
ADDDL,30H
MOVAH,2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(2)显示键入字符
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
CMPAL,0DH
JZDONE
CMPal,'0'
JBnext
CMPAL,'9'
JACHRUP
MOVDL,AL
MOVAH,2
INT21H
JMPSTART
CHRUP:
CMPAL,41H
JBNEXT
CMPAL,5AH
JACHRDN
DISPC:
MOVDL,'C'
MOVAH,2
INT21H
NEXT:
JMPSTART
CHRDN:
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
JMPDISPC
DONE:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
10、实验四:
偶校验程序
DSEGSEGMENT
STRNDB'ABCDEfghijkLMNOPQuvw','$'
NDB?
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG
START:
MOVAX,DSEG
MOVDS,AX
LEASI,STRN
MOVDL,0
AGAIN:
MOVAL,[SI]
CMPAL,'$'
JEDONE
TESTAL,0FFH
JPENEXT
ORAL,80H
MOV[SI],AL
INCDL
NEXT:
INCSI
JMPAGAIN
DONE:
MOVN,DL
MOVAH,4CH
INT21H
CSEGENDS
ENDSTART
(2)加法程序
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
START:
MOVAX,CS
MOVDS,AX
LEASI,DAT1
LEADI,DAT2
LEABX,DAT3
MOVCX,10
XORAL,AL
AGAIN:
MOVAL,[SI]
ADCAL,[DI]
MOV[BX],AL
INCSI
INCDI
INCBX
LOOPAGAIN
MOVAH,4CH
INT21H
DAT1DB70H,80H,90H,0A0H,0A1H,0A2H,0A3H
DB74H,65H,56H
DAT2DB45H,67H,89H,1AH,2BH,3CH
DB4DH,5EH,6FH,04H
DAT3DB10DUP(?
)
CODEENDS
ENDSTART
12、设有两个等字长,字节型字符串,试编写一程序,比较他们是否完全相同,如相同则讲字符Y送入AL中,否则将字符N送入AL中
DATASEGMENT
STRING1DB'ASdAS'
STRING2DB'ASASd'
DATAENS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTUP:
MOVAX,DATA
MOVDS,AX
MOVES,AX
LEASI,STRING1
LEADI,STRING2
MOVCX,5
REPZCMPSBSTRING1,STRING2
JNZLABNE
MOVAL,'Y'
MPEXIT
LABNE:
MOVAL,'N'
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTARTUP
11、填空题:
1、输入输出指令间接寻址必须通过DX寄存器
2、20根地址线最大内存容量是220
3、标志寄存器有9位标志位,其中3位控制标志位,6位状态标志位
4、BIU和EU两个单元并行工作在CPU中
5、SP和BP是指针寄存器,SP指示堆栈段段顶的偏移地址
6、零标志位ZF=1时,结果全为0
7、对于5片8259A形成的级联共有36级中断
8、debug跟踪执行命令是t命令
9、中断矢量表存放在存储器最低位
10、存储器是分段的,每段最大长度是64KB
11、段内偏移地址从0000到FFFFH
12、8259AA0与地址总线A1相连
13、取指令时,段地址由CS寄存器提供,偏移地址由IP寄存器提供
14、16位有符号二进制补码范围为-32768~32767
15、8086可访问偶数存储体的选择信号是A0
16、中断矢量表可以容纳256个中断向量,每个中断向量有4个字节
17、DOS功能调用功能号在AH寄存器里面
18、条件转移指令多路分支,输入5路分支需要3条件转移指令
8、大题:
若8086系统中采用单片8259A作为外部可屏蔽中断的优先级管理,正常全嵌套方式,边缘触发,非缓冲连接,非自动终端结束,端口地址为20H和21H,其中,某中断源的中断类型码为4AH,其中断服务子程序名为SUBROUTINE,且已知其地址为2000.3A40H
(1)请问本题中的中断源应与8259A的哪个IR输入端相连?
其中断矢量地址是多少,矢量区对应的4个单元内容是什么?
答:
与IR2相连,地址为0000.0128H,矢量对应的4个单元内容依次为40H,3AH,00H,20H
(2)请为8259A设置正确的初始化命令,并编写程序:
ICW1=00010011,单片,边缘触发,必须设置ICW4;ICW2=48H,终端类型码基值为48H;无ICW3,单片8259A系统,无需设置ICW3;ICW4=00000001,正常全嵌套方式,非缓冲连接,非自动中断结束,8086CPU,初始化程序如下:
MOVAL,13H
OUT20H,AL
MOVAL,48H
OUT21H,AL
MOVAL,01H
OUT21H,AL
(3)请编写程序片段,设置该中断源的中断矢量
MOVAX,0
MOVES,AX
MOVDI,4AH*4
MOVAX,OFFSETSUBROUTINE
CLD
STOSW
MOVAX,SEGSUBROUTINE
STOSW
13可屏蔽中断响应和处理过程:
(1)中断允许标志IF置1,没有异常,没有非屏蔽中断NMI=0,没有总线请求,CPU响应可屏蔽中断请求;
(2)外部设备向8259A发出中断请求信号,经过8259A处理后得到相应的中断矢量号,并同时向CPU申请中断INT=1
(3)如果指令不是HLT或者WAIT,则CPU执行完当前指令后便向8259A发出中断信号INTA=0,表明CPU响应该可屏蔽中断请求
若指令是HLT,则中断请求信号INTR的产生使处理器退出暂停状态,响应中断,进入中断处理程序
若指令是WAIT。
且TSET引脚加入低电平信号,则中断请求信号INTR产生后,使处理器脱离等待状态,进入中断处理程序
处理过程包括四部分:
保护现场、中断服务程序、恢复现场、中断返回。
14,8259A的中断处理过程:
(1)当中断请求输入线IR0~IR7中有一条或多条变高时,则中断请求寄存器IRR的相应位置“1”。
(2)若中断请求线中至少有一条是中断允许的,则8259A由INT引脚向CPU发出中断请求信号。
(3)如CPU是处于开中断状态,则在当前指令执行完后,用信号作为响应。
(4)8259A在接收到CPU的信号后,使最高优先级的ISR位置“1”,而相应的IRR位清“0”。
但在该中断响应周期中,8259A并不向系统总线送任何信息。
(5)CPU(8086/8088和80X86)输出第二个信号,启动第二个中断响应周期。
在此周期中,8259A向数据总线输送一个8位的中断类型号(也叫指针或向量号);CPU读取此类型号后将它乘以4(左移2位),即可从中断服务程序向量表(即入口地址表)中取出中断服务程序的入口地址,包括段地址和段内偏移地址。
据此CPU便可转入中断服务程序。
(6)如8259A工作在AEOI(AutomaticEndOfInterrupt)模式,则在第二个脉冲信号结束时,将使被响应的中断源在ISR中的对应位清“0”;否则,直至中断服务程序结束,发出EOI命令,才使ISR中的对应位清“0”。