当前位置:文档之家› 微机原理期末考试复习课案

微机原理期末考试复习课案

1、统计出某数组中相邻两数之间符号变化的次数DATA SEGMENTARRAY DB 20 DUP (?)NUM DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTARTUP:LEA SI , ARRAY;MOV AL ,[SI]MOV BL,0MOV CX,19AGAIN: INC SIXOR AL ,[SI]J NS NEXTINC BLNEXT: MOV AL ,[SI]LOOP AGAINMOV NUM,BLMOV AH ,4CHINT 21HCODE ENDSEND STARTUP2、乘法指令实现32位二进制数与16位二进制数相乘MODEL SMALL.8086.DATAN1 DW 1234HN2 DW 5678HN3 DW 4444HM1 DW 0M2 DW 0M3 DW 0CODE. STARTUPMOV AX ,N2MUL N3MOV M3,AXMOV M2,DXMOV AX,N3MUL N1ADD M2,AXADC M1,DX.EXITEND3、设有3个自变量的变量名及其内容如下:V AR1 3C46H , V AR2 F678H , V AR3 0059H设计一个数据段定义这三个变量及其地址表变量DDRTABLDATA SEGMENTV AR1 DW 3C46HV AR2 DW F678HV AR3 DW 0059HADDRTABLDD V AR1DD V AR2DD V AR3DATA ENDS4、设有一个符号数组,共M个,求其中最大的数,如需要求绝对值最大应如何修改,如为无符号数,程序如何修改。

DATA SEGMENTM EQU 10DAT DW M DUP(?)MAX DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTARUP : MOV AX ,DATMOV MAX ,AXCLDLEA SI ,DATMOV CX ,ML1: LODSWCMP AX ,MAXJNG LABMOV MAX ,AXLAB : LOOP L1MOV AH ,4CHINT 21HCODE ENDSEND STARTUP绝对值修改:需要在LODSW插入AND AX ,AXJNS LAB1NEG AXLAB1: CMP AX ,MAX程序初始化时MAX应送入0无符号数程序修改:判别条件CMP AX ,MAXJNG LAB修改为CMP AX,MAXJBE LAB5、编制一个程序将20个字节的数组分为正数和负数组,并计算两个数组中数据的个数DATA SEGMENTDAT DB 20 DUP (?)PDAT DB 20 DUP(?)PDAT DB ?PLEN DB ?NDAT DB 20 DUP (?)NLEN DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTARTUP:XOR BX ,BXLEA SI ,DATXOR DI,DICLDMOV CX,20LOOP0 : LODSBCMP AL,0JGE LOOP1MOV NDAT[BX] ,ALINC BXJMP LABLOOP1:MOV PDAT[DI] ,ALINC DILAB: DEC CXJNZ LOOP0MOV PLEN ,DIMOV NLEN,BXMOV AH,4CHINT 21HCODE ENDSEND STARTUP6、把从A开始的8个字节单元内容依次和从B开始的8个相应的字节单元内容互换。

DATA SEGMENTA DB 'ABCDEFGH'B DB '12345678'DATA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTART: MOV AX ,DATAMOV DS,AXLEA SI ,ALEA DI ,BMOV CX,8LP:MOV AL ,[SI]XCHG AL ,[DI]MOV [SI], ALINC SIINC DILOOP LPMOV AH ,4CHINT 21HCODE ENDSEND START7、计算BUF开始的数组中的100个元素中非零元素的个数,并将其存入COUNT单元,补全指令BUF DB 100 DUP (?)COUNT DB 0..............STARTUP: MOV AX,DATAMOV DS,AXLEA SI, (1)________MOV CX ,(2)______CON:MOV AL,[SI]CMP AL ,(3)_______.JZ NEXTINC (4)_____NEXT: INC SILOOP (5)______HLT答案:BUF 100 0 COUNT CON8、程序执行后寄存器的值:MOV AX,01HMOV BX ,02HPUSH BXPUSH AXPOP BX 执行后BX=(1)___POP AX 执行后AX=(1)____MOV AX ,3F5FH 执行后AL=(3)______ MOV CX ,4ROR AL,CL 执行后AL=(4)____AND AL ,0FH 执行后AL=(5)_______ 答案:01H 02H 5FH 0F5H 05H 9、分支程序设计实验(1)显示AL中两位十六进制数程序:CODE SEGMENTASSUME CS:CODESTART: MOV AL,3EHMOV BL,ALMOV DL,ALMOV CL,4SHR DL,CLCMP DL,9JBE NEXT1ADD DL,7NEXT1: ADD DL,30HMOV AH,2INT 21HMOV DL,BLAND DL,0FHCMP DL,9JBE NEXT2ADD DL,7NEXT2: ADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(2)显示键入字符CODE SEGMENTASSUME CS:CODESTART: MOV AH,1INT 21HCMP AL,0DHJZ DONECMP al,'0'JB nextCMP AL,'9'JA CHRUPMOV DL,ALMOV AH,2INT 21HJMP STARTCHRUP: CMP AL,41HJB NEXTCMP AL,5AHJA CHRDNDISPC: MOV DL,'C'MOV AH,2INT 21HNEXT: JMP STARTCHRDN: CMP AL,61HJB NEXTCMP AL,7AHJA NEXTJMP DISPCDONE: MOV AH,4CHINT 21HCODE ENDSEND START10、实验四:偶校验程序DSEG SEGMENTSTRN DB 'ABCDEfghijkLMNOPQuvw','$' N DB ?DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEGMOV DS,AXLEA SI,STRNMOV DL,0AGAIN: MOV AL,[SI]CMP AL,'$'JE DONETEST AL,0FFHJPE NEXTOR AL,80HMOV [SI],ALINC DLNEXT: INC SIJMP AGAINDONE: MOV N,DLMOV AH,4CHINT 21HCSEG ENDSEND START(2)加法程序CODE SEGMENTASSUME CS:CODE,DS:CODESTART: MOV AX,CSMOV DS,AXLEA SI,DAT1LEA DI,DAT2LEA BX,DAT3MOV CX,10XOR AL,ALAGAIN: MOV AL,[SI]ADC AL,[DI]MOV [BX],ALINC SIINC DIINC BXLOOP AGAINMOV AH,4CHINT 21HDAT1 DB 70H,80H,90H,0A0H,0A1H,0A2H,0A3HDB 74H,65H,56HDAT2 DB 45H,67H,89H,1AH,2BH,3CHDB 4DH,5EH,6FH,04HDAT3 DB 10 DUP(?)CODE ENDSEND START12、设有两个等字长,字节型字符串,试编写一程序,比较他们是否完全相同,如相同则讲字符Y送入AL中,否则将字符N送入AL 中DATA SEGMENTSTRING1 DB 'ASdAS'STRING2 DB 'ASASd'DATA ENSCODE SEGMENTASSUME CS:CODE,DS:DATASTARTUP:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI , STRING1LEA DI ,STRING2MOV CX,5REPZ CMPSB STRING1 ,STRING2JNZ LABNEMOV AL ,'Y'MP EXITLABNE :MOV AL ,'N'EXIT : MOV AH ,4CHINT 21HCODE ENDSEND STARTUP11、填空题:1、输入输出指令间接寻址必须通过DX寄存器2、20根地址线最大内存容量是2203、标志寄存器有9位标志位,其中3位控制标志位,6位状态标志位4、BIU和EU两个单元并行工作在CPU中5、SP和BP是指针寄存器,SP指示堆栈段段顶的偏移地址6、零标志位ZF=1时,结果全为07、对于5片8259A形成的级联共有36级中断8、debug跟踪执行命令是t命令9、中断矢量表存放在存储器最低位10、存储器是分段的,每段最大长度是64KB11、段内偏移地址从0000到FFFFH12、8259A A0与地址总线A1相连13、取指令时,段地址由CS寄存器提供,偏移地址由IP寄存器提供14、16位有符号二进制补码范围为-32768~3276715、8086可访问偶数存储体的选择信号是A016、中断矢量表可以容纳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,正常全嵌套方式,非缓冲连接,非自动中断结束,8086 CPU,初始化程序如下:MOV AL ,13HOUT 20H, ALMOV AL ,48HOUT 21H,ALMOV AL,01HOUT 21H,AL(3)请编写程序片段,设置该中断源的中断矢量MOV AX ,0MOV ES ,AXMOV DI ,4AH*4MOV AX ,OFFSET SUBROUTINECLDSTOSWMOV AX,SEG SUBROUTINESTOSW13可屏蔽中断响应和处理过程:(1)中断允许标志IF置1,没有异常,没有非屏蔽中断NMI=0,没有总线请求,CPU响应可屏蔽中断请求;(2)外部设备向8259A发出中断请求信号,经过8259A处理后得到相应的中断矢量号,并同时向CPU申请中断INT=1(3)如果指令不是HLT或者W AIT,则CPU执行完当前指令后便向8259A发出中断信号INTA=0,表明CPU响应该可屏蔽中断请求若指令是HLT,则中断请求信号INTR的产生使处理器退出暂停状态,响应中断,进入中断处理程序若指令是W AIT。

相关主题