微机原理期末考试复习课案
- 格式:doc
- 大小:32.00 KB
- 文档页数:10
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个相应的字节单元内容互换。
《微机原理及接⼝技术》课后习题详细解答(期末复习)第1章微型计算机系统概述〔习题1.3〕微型计算机主要由哪些基本部件组成?各部件的主要功能是什么?〔解答〕微机主要有存储器、I/O设备和I/O接⼝、CPU、系统总线、操作系统和应⽤软件组成,各部分功能如下:CPU:统⼀协调和控制系统中的各个部件系统总线:传送信息存储器:存放程序和数据I/O设备:实现微机的输⼊输出功能I/O接⼝:I/O设备与CPU的桥梁操作系统:管理系统所有的软硬件资源〔习题1.10〕简述计算机中“数”和“码”的区别,计算机中常⽤的数制和码制各有哪些?〔解答〕(1)数—⽤来直接表征量的⼤⼩,包括:定点数、浮点数。
(2)码—⽤来指代某个事物或事物的某种状态属性,包括:⼆进制、⼋进制、⼗进制,⼗六进制区别:使⽤场合不同,详见P16.〔习题1.12〕请写出与数据+37和-37对应的8位机器数原码、反码、补码和移码,并分别⽤⼆进制和⼗六进制表⽰出来。
〔解答〕原码反码补码+37 00100101/25H 00100101/25H 00100101/25H-37 10100101/A5H 11011010/DAH 11011011/DBH〔习题1.13〕请将上题中+37和-37的8位补码机器数分别扩充为16位和32位的形式,⽤⼗六进制表⽰出来。
〔解答〕+37 -3716位 32位 16位 32位00 25H 00 00 00 25H FF 5BH FF FF FF 5BH第2章微处理器指令系统〔习题2.1〕微处理器内部具有哪3个基本部分?8088分为哪两⼤功能部件?其各⾃的主要功能是什么?〔解答〕算术逻辑单元ALU、寄存器组和控制器;总线接⼝单元BIU:管理8088与系统总线的接⼝负责cpu对接⼝和外设进⾏访问执⾏单元EU:负责指令译码、执⾏和数据运算;8位CPU在指令译码前必须等待取指令操作的完成,8088中需要译码的指令已经取到了指令队列,不需要等待取指令。
微机原理期末复习第2章计算机的基本结构与工作过程1.计算机的基本组成及各个组成部件的基本功能运算器运算器是进行算术运算(如加、减、乘、除等)和逻辑运算(如非、与、或等)的装置。
通常由算术逻辑部件ALU、专用寄存器X、Y和Z、累加器、通用寄存器RO、R1、…、Rn-1以及标志寄存器F组成。
核心部件ALU用于完成算术运算和逻辑运算。
X、Y是ALU的输入寄存器,Z是ALU的输出寄存器。
X、Y、Z是与ALU不可分的一部分,通常称为ALU的数据暂存器。
X、Y中的数据可来自通用寄存器,也可来自存储器。
Z中的数据可送往通用寄存器,也可送往存储器。
F用于存放运算结果的状态,例如,结果是否为零,是正还是负,有无进位,是否溢出,等等。
控制器为了实现对计算机各部件的有效控制,快速准确地取指令、分析指令和执行指令, 控制器通常由下而几部分组成:指令寄存器IR一一用于存放正在执行或即将执行的指令。
程序计数器PC——用于存放下一条指令的存储单元地址,它具有自动增量计数的功能。
存储器地址寄存器MAR——用于在访存时缓存存储单元的地址。
存储器数据寄存器MDR——用于在访存时缓存对存储单元读/写的数据。
指令译码器ID——用于对IR屮的指令进行译码,以确定IR屮存放的是哪一条指令。
控制电路一一产牛时序脉冲信号,并在时序脉冲的同步下对有关的部件发出微操作控制命令(微命令),以控制各个部件的动作。
输入设备用来输入数据和程序的装置,其功能是将外界的信息转换成机内的表示形式并传送到计算机内部。
常见的输入设备有键盘、鼠标、图形数字化仪、图像扫描仪等等。
输出设备用来输出数据和程序的装置,其功能是将计算机内的数据和程序转换成人们所需要的形式并传送到计算机外部。
常见的输出设备有显示器、打印机.绘图机等等。
存储器计算机中的指令和数据都表现为二进制数码。
为了准确地对存储器进行读或写,通常以字节(或以字)为单位将存储器划分为一个个存储单元,并依次对每一个存储单元赋予一个序号,该序号称为存储单元的地址。
一、回答问题问题1:8086的存储器为什么要进行分段?答:8086的地址总线AB有20根地址线,意味着存储器每个存储单元的地址由20位二进制数构成。
而8086内部用来存放地址信息的寄存器只有16位,出现了矛盾,为解决这个问题,8086采取了存储器分段的方式。
由于16位二进制地址可寻址范围是64KB而1MB的存储空间可以在逻辑上分为16个段每段大小是64KB,因此可以用段地址(也称为段基址)给每个段编号,每个段内的地址单元用偏移地址编号。
问题2:什么是物理地址?什么是逻辑地址?请说明二者的关系。
答:物理地址共有20位,对应一个存储单元的实际地址,物理地址与存储单元是一一对应关系。
逻辑地址则由段地址和偏移地址组成是指令中引用的形式地址。
一个逻辑地址只能对应一个物理地址,而一个物理地址可以对应多个逻辑地址。
(2000:0202H、2010:0102H、……)。
段地址——16位,即存储单元所在逻辑段的编号,通常存放在对应的段寄存器中,偏移地址为16位,存储单元在逻辑段内相对于该段第一个存储单元的距离。
20位物理地址= 段地址×16 + 偏移地址取指令操作CS ×16 + IP堆栈操作SS ×16 + SP 数据存储器操作DS/ES ×16 + 偏移地址问题3:请说明段寄存器与提供偏移地址寄存器的对应关系。
答:CS:IP对应代码段,DS:SI(或DI或BX)对应数据段,SS:SP(或BP)对应堆栈段。
问题4:8086的有最大和最小两种工作模式,请说明两种工作模式下的特点,并说明如何进行工作模式的设置。
答:8086微处理器有最小模式和最大模式。
最小模式为单处理器模式,最大模式为多处理器模式;最小工作方式下总线控制信号都直接由8086产生,系统中总线控制逻辑电路被减小到最小,这种方式适合于较小规模系统的应用。
最大工作方式用在需要利用8086CPU构成中等或较大系统时。
由MN/MX的电平高低进行工作模式的设置。
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。