云南⼤学2009⾄2010学年上学期 物理学院物理系各专业2007级《微机原理》期末考试(闭卷)A 卷
满分100分 考试时间120分钟 任课教师:陈永康、杨先楚 学院 专业 学号 姓名
⼀、
计算并填写结果:(除标明分数的题外,每空1.2分,共 30分)
1、通常所说的CPU ⼀般包括 运算 器、 控制 器和寄存器组。
2、调⽤DOS 软件中断的要点是:⾸先根据要调⽤的功能确定⼦功能号并存⼊寄存器 AH 中,然后设置
各个⼊⼝参数的寄存器,再通过 INT 21H 指令调⽤该DOS 中断功能,最后如果有出⼝参数的还要处理出⼝参数。3、8086CPU 是⼀个16位的微处理器,具有 16 位数据总线,20位地址总线,可寻址空间为 1M 字节。
4、指令⼀般都由操作码和操作数来构成,指令MOV AL ,6[BX][DI]的源操作数的寻址⽅式 是 基址变址相对寻址 。5、数制转换(⼩数部分保留位数:⼆进制8位,16进制2为,7进制3位):
[124.719]10=[ 1111100.10111000 ]2=[ 7C.B8 ]16=[ 235.5014 ]7 =[ 000100100100.011100011001 ]BCD
6、⼋位⼆进制代码转换:[-104]10=[ 11101000 ]原=[ 10010111 ]反=[ 10011000 ]补 设(SS )=4000H ,(DS )=3E00H ,(ES )=3800H ,(BP )=0800H ,(SP)=010EH ,(AX)= 7AE4H ,(BX )=2912H ,(DI )=0003H ,BUF=0111H ,(4090EH)=0FH, (4090FH)=75H, (40910H)=93H, (40911H)=22H, 下列7-11题的各条指令都分别在此环境下执⾏,请在下列各⼩题的空格中填⼊执⾏结果:7、ADD AH, [BP+BUF] ;(AH)= 9C H
8、SHR BYTE PTR [BX-DI],1 ; CF= 1 ,(4090FH)= 3A H 9、POP AX ;(SP )= 0110 H
12、模拟运算器,⽤⼀字节补码加法实现⼗进制数-67-79=?的计算。(6分)其⼆进制补码加法算式为 CF= 1 ,SF = 0 ,
ZF= 0 ,OF = 1 ,
PF= 0 ,AF = 0
⼆、 程序阅读与分析。(每⼩题3分,共18分)
三、 在空⽩处添上适当的指令,使下⾯的程序段能实现既定功能:(每空2分,共12分)
1、把DA1数据区的⾮压缩BCD 码依次转换为对应的ASCII 码,存放在ASC 开始的数据区。
DA1 DB 03H, 01H, 09H, 08H, 04H, 07H, 06H, 02H, 00H, 09H CNT EQU ASC-DA1 ASC DB 10 DUP (?) ┇LEA SI, DA1 ;初始化4、MOV BL, 02HMOV AL, 07H
MUL BL ; AX=_000E _H AAMAH=__01__H, AL=___04___HLEA DI, ASC _ MOV CX,CNT
L1: MOV AL, [SI] ;实现转换 ADD AL,30H MOV [DI], AL INC SI INC DI_ LOOP L1
2、以BUF 为⾸址的字节单元中,存放了COUNT 个⽆符号数,下⾯程序段是找出其中最⼤数并送⼊MAX 单元中。DA TA SEGMENT
BUF DB 5,6,7,58H,13H ……. COUNT EQU $-BUF MAX DB ? DA TA ENDS ┇MOV BX ,OFFSET BUF ;初始化 MOV CX,OUNT-1 MOV AL,[BX]LOP1: INC BX ;完成最⼤数查找 __ CMP AL,[BX]_JAE NEXT MOV AL,[BX] NEXT:DEC CX__JNZ LOP1_ MOV MAX,AL
四、根据下⾯的数据段定义,填写数据区的存储分配图给出各变量对应的偏移地址与初始值:(8分)
DA TA SEGMENT
V AR1 DB ‘A ’, 0A3H,98H V AR2 DW 20ADH MISS DB ‘NO:$’ COUN EQU $-MISS SUM DW ?CC DB 4 DUP(0) DA TA ENDS
V AR1的偏移地址= 0000H ,初始值= ‘A ’ , V AR2的偏移地址= 0003H ,初始值= 20ADH , SUM 的偏移地址= 0009H ,CC的偏移地址= 000BH , MISS 的偏移地址= 0005H ,COUN= 0004H
五、论述与问答题:(共20分,第1、2题为必做题,其余为选做题,选做第6题的不做3、4、5题,反之亦然)
1、画出冯.诺依曼结构图;给出计算机结构的三⼤要点;简述其基本⼯作原理:(5分)1、计算机由运算器、控制器、存储器、输⼊设备和输出设备五部分组成;
2、程序和数据以⼆进制形式不加区分地依次存放在存储器中,存放位置由地址确定;
3、控制器根据存放在存储器中的指令序列(即程序)⼯作,并由⼀个程序计数器(PC )控制指令的执⾏。
控制器主要由指令计数器PC 、指令译码器、PAL 等组成;通过pc 控制,⾃动、周⽽复始地完成取指、译码、执⾏的周期过程,从⽽实现对存放在存储器中的指令代码V 的顺序⾃动执⾏控制。
2、⽐照⾼级语⾔编程来讨论汇编语⾔编程,总结归纳出两者之间三个以上的不同点或共同点(要是独⽴点,有对照,描述清楚)。(3分)答题要点:
1、完成⼀个具体功能模块的算法,两者是相同的。
2、通过定义数据区,分配存储地址来定义变量,存储地址的符号名就是⾼级语⾔中的变量。
3、寄存器可以作为临时变量使⽤,⽤完后⼜可以重新定义,这样可以不占⽤内存地址,⽽且执⾏速度快,这是⾼级语⾔不具备的。
4、汇编语⾔程序需要对寄存器进⾏分配使⽤,⽽且有⼀些特定⽤法,如乘除法的默认寄存器,循环计数器CX 等。寄存器⼀次定义使⽤未结束前不能再做另外⽤途,否则需要⽤堆栈保护。⽽⾼级语⾔编程不需要。
5、汇编语⾔可以直接控制和检测计算机的硬件电路,最⼤限度的发挥硬件的功能,⽽且速度快、效率⾼,常⽤于硬件底层驱动程序和实时控制,这是⾼级语⾔⽆法做到的。
6、汇编语⾔可以最⼤限度的发挥编程的灵活性,编制出效率最⾼、速度最快的程序,所以常⽤于硬件底层驱动程序和系统核⼼程序,这是⾼级语⾔难于做到的。7、......
3、(选做6题的同学不做此题)运算器在进⾏有符号数运算时,判断是否发⽣了算术溢出,⼀般采⽤哪三种⽅法判别?在进⾏⽆符号数运算时,则使⽤什么标志判别⽆符号数运算是否溢出?(4分)答题要点:
1、 采⽤双符号法,双符号位不⼀致时,发⽣算术溢出
2、 次⾼位向最⾼位的进位与最⾼位向前进位不⼀致时,发⽣算术溢出3、 同号数运算前符号与结果符号不⼀致时,发⽣算术溢出
在进⾏⽆符号数运算时,使⽤进位标志进⾏判别,CY=1表⽰有溢出,CY=0表⽰没有有溢出。
4、(选做6题的同学不做此题)通过简述CPU 控制执⾏⼀条指令的过程及步骤,诠释程序存储原理。(4分)答题要点:
机器语⾔、指令指针、指令地址、地址总线、存储器、数据总线、操作码、操作数、取指、译码、控制信号序列、时序、执⾏、结果处理、下⼀操作、完成启动下⼀指令周期
控制器主要由指令计数器PC、指令译码器、PAL等组成;通过pc控制,⾃动、周⽽复始地完成取指、译码、执⾏的周期过程,从⽽实现对存放在存储器中的指令代码的顺序⾃动执⾏控制。
5、(选做6题的同学不做此题)总线的功能和作⽤是什么?它的⼯作原则是什么?(4分)答题要点:
总线是⼀组同类信号传送的公共数据通道,通常是同类信号并⾏同时传送,它按分时共⽤原则为多种设备分别服务
6、(选做本题的同学不做3、4、5题)编写⼀段程序,从键盘读⼊⼀个⼗六进制数(使⽤1号DOS功能调⽤,在AL中返回键盘按键的ASCII码),判断其合法性(0-9,A-F,不考虑a-f),不合法重读,合法将其转换成对应的⼆进制数,存放在AL中(0-F)。参考程序:INHEX PROCL1: MOV AH,01HINT 21HSUB AL,30HJB L1CMP AL,9JBE DONESUB AL,7HJB L1
CMP AL,0FHJBE DONEJMP L1DONE: RETINHEX ENDP
六、如果已经有以下数据区定义:DA1 SEGMENT
TXTB DB “This a Story about ……”;⼀篇英语⽂章NUM DW $- TXTB ;⽂章字节数CHA DB ‘#’;查找字符CHB DB ‘$’;替换字符COUN DW ?DA1 ENDS
编写⼀段程序,将这篇英语⽂章中的‘#’号⽤‘$’号进⾏替换,并统计替换个数,存⼊COUN 中(能编成⼀个通⽤⼦程序更好)。参考程序:LEA BX,TXTBMOV CX,NUMMOV DX,0MOV AL,’#’MOV AH,’$’
AGAIN: CMP AL,[BX]
JNZ NEXT MOV [BX],AH INC DXNEXT: INC BX
LOOP AGAIN MOV [COUN],DX
云南⼤学2009⾄2010学年上学期 物理学院物理系各专业2007级《微机原理》期末考试(闭卷)B 卷 参考答案
满分100分 考试时间120分钟 任课教师:陈永康、杨先楚 学院 专业 学号 姓名
四、
计算并填写结果:(除标明分数的题外,每空1.2分,共 30分)
1、8086CPU 从功能上可分为 EU/执⾏单元部件 和 BIU/总线接⼝部件 两个独⽴的功能部件。2、8086CPU 采⽤引脚复⽤技术,即 地址 线和 数据 线是复⽤的。3、每⼀条指令代码⼀般都由 操作 码和操作数来构成。
4、指令MOV AL ,6[BX][SI]的源操作数的寻址⽅式是基址变址相对寻址,⽬的操作数寻址⽅式为 寄存器寻址 。
5、循环指令LOOPZ 终⽌循环的条件是 CX=0 或者 ZF=0 。6、数制转换(⼩数部分保留位数:⼆进制8位,16、7进制3位):
[135.489]10=[ 1000 0111.0111 1101 ]2=[ 87.7D ]16=[ 252.326 ]7 =[ 0001 0011 0101.0100 1000 1001 ]BCD7、⼋位⼆进制代码转换:[-126]10=[ 11111110 ]原=[ 10000001 ]反=[ 10000010 ]补
设(SS )=4000H ,(DS )=3E00H ,(BP )=0800H ,(SP)=0110H ,(AX)= 7A34H ,(BX )=2912H , (DI
)=0003H ,BUF=0111H ,(4090EH)=0FH, (4090FH)=57H, (40910H)=93H, (40911H)=20H, 下列8-10题3条指令都在此环境下执⾏,下列各⼩题的空格中填⼊执⾏结果: 8、SUB AH, [BP+BUF] ;(AH)= 5A H9、SHR BYTE PTR [BX-DI],1 ; CF= 1,(4090FH)= 2B H 10、POP AX;(SP )= 0112 H设开始时(AL)= 34H
,填写11-12题的程序段执⾏结果: 13、模拟运算器,⽤⼀字节补码加法实现⼗进制数-78-53=?的计算。(6分)其⼆进制补码加法算式为CF= 1 ,SF = 0 ,ZF= 0 ,OF = 1 ,
PF= 1 ,AF = 0 五、
程序阅读与分析。(每⼩题3分,共18分)
六、 在空⽩处添上适当的指令,使下⾯的程序段能实现既定功能:(每空24、MOV BL, 03HMOV AL, 07H
MUL BL ; AX=_0015_H AAMAH=__02__H, AL=___01___H
分,共12分)
1、下⾯⼦程序实现:将AL中的⼀位16进制数(0~F)转换为相应的ASCII
HECA PROC FARCMP AL,10
JC KKADD AL,7
KK: ADD AL,30HMOV DL,AlMOV AH,2
INT 21H ;功能调⽤显⽰字符RETHECA ENDP
2、从D1开始的N个单元中存放着N个整数,统计出这些数中正数的个数并存⼊RS中。DA TA SEGMENT
D1 DB -1,-3,7,9,0AH,………N EQU $-D1RS DW ?DA TA ENDSCODE SEGMENT:
LEA BX,D1;初始化MOV CX,NMOV DX,0
NEXT: MOV AL,[BX]CMP AL,0JS PP / JL PPINC DXPP: INC BXLOOP NEXT;循环MOV RS,DX
四、根据下⾯的数据段定义,填写数据区的存储分配图给出各变量对应的偏移地址与初始值:(8分)DA TA SEGMENT
V AR1 DB ‘F ’, 035H V AR2 DW 0FF12H MISS DB ‘NO:$’ COUN EQU $-MISS SUM DW ?CC DB 2 DUP(0) DA TA ENDS
V AR1的偏移地址= 0000H ,初始值= ‘F ’ , V AR2的偏移地址= 0002H ,初始值= 0FF12H , SUM 的偏移地址= 0008H ,CC的偏移地址= 000AH , MISS 的偏移地址= 0004H ,COUN= 0004H五、论述与问答题:(共20分,第1、2⼩题为必做题,其余为选做题,选做
第6题的不做3、4、5题,反之亦然)
1、 通过简述CPU 控制执⾏⼀条指令的过程及步骤,诠释程序存储原理。(4分) 答题要点:
机器语⾔、指令指针、指令地址、地址总线、存储器、数据总线、操作码、操作数、取指、译码、控制信号序列、时序、执⾏、结果处理、下⼀操作、完成启动下⼀指令周期
控制器主要由指令计数器PC 、指令译码器、PAL 等组成;通过pc 控制,⾃动、周⽽复始地完成取指、译码、执⾏的周期过程,从⽽实现对存放在存储器中的指令代码的顺序⾃动执⾏控制。2、画微型计算机结构图;简述主要部件功能。(6分)
答案要点:中央处理单元CPU (Control Processing Unit )是微型计算机的核⼼部件,包含有运算器、控制器、寄存器组的⼀块⼤规模集成电路芯⽚;主存储器是微型计算机中存储程序、原始数据、中间结果和最终结果等各种信息的部件;系统总线是CPU 与其他部件之间传送数据、地址和控制信息的公共通道;输⼊输出接⼝电路是微型计算机外部设备交换信息的桥梁。
3、(选做6题的同学不做此题)归纳总结汇编语⾔编程的特点,指出它与⾼级语⾔编程的不同点,给出汇编语⾔编程中AX,BX ,CX ,DX ,SI ,DI ,BP 的通常⽤途。(4分) 答题要点:
1、特点与不同点:变量定义、数据区、伪指令、寄存器分配与使⽤、⾯对硬件、灵活性等 AX :累加器,功能强,常⽤作最重要的⽤途 BX :常⽤作基址指针 CX: 常⽤作循环控制变量DX:乘法运算时存乘积的⾼位,I/O指令中作外设端⼝地址寄存器SI,DI: 变址寻址时作地址指针⽤BP:堆栈寻址时作基址指针⽤
4、(选做6题的同学不做此题)运算器在进⾏有符号数运算时,要知道是否发⽣了算术溢出,可采⽤哪三种⽅法判别?(共3分)答题要点:双符号位法;
同号数相加减,结果不同号,溢出;
数位向符号位的进位与符号位向前进位不同,即Cn不等于Cn-1,溢出。
5、(选做6题的同学不做此题)请归纳总结汇编语⾔编程的特点,以及它与⾼级语⾔编程的不同点?(3分)
不同点与特点:需要对变量定义、设计数据区、分配使⽤寄存器、直接⾯对硬件,功能低级但编程灵活,程序短⼩,快捷等等6、(选做3、4、5题的同学不做此题)内存中有⼀个100字节的数组,da1为开始地址。编⼀段程序统计其中⼤于2FH,⼩于7DH的元素个数,⽤寄存器DL统计这些字符的个数。(10分)参考程序:
String db ‘…………. ‘Sbu1 proc near
Mov bx, offset da1Mov cx,100Mov dl, 0
Again: Mov al, [bx]Cmp al,2fhJl nextCmp al,7dhJg nextInc dlnext: Inc bxLoop againDone: retSub1 endp
六、将⼀个字符串中的所有⼤写字母改为⼩写字母,字符串以0结尾。(String db ‘xxxxxxxxxxxxxxxxxx’,0Data endscode segment
assume cs:code,da:datamov bx,offset stringagain: mov al,[bx]or al,aljz donecmp al,'A'jb nextcmp al,'Z'ja nextor al,20hmov [bx],alnext: inc bxjmp againdone:mov ah,4chint 21hend
云南⼤学2008⾄2009学年上学期物理学院物理系各专业2006级A⼀、计算并填写结果:(除标明分数的题外,每空1.2分,共 30分)
12分)Array Data segment1、8086CPU从功能上可分为 EU/执⾏单元部件和 BIU/总线接⼝部件两个独⽴的功能部件。2、每⼀条指令⼀般都由操作码和操作数来构成。
3、数制转换(⼩数部分保留位数:⼆进制8位,16、7进制3位):[146.417]10=[ 1001 0010.0110 1010 ]2=[ 092.6AC ]16=[ 266.263 ]7=[ 0001 0100 0110.0100 0001 0111 ]BCD
4、⼋位⼆进制代码转换:[-124]10=[ 11111100 ]原=[ 10000011 ]反=[ 10000100 ]补5、指令MOV AL,6[BX][SI]的源操作数的寻址⽅式是基址变址相对寻址。6、使⽤DOS功能调⽤时,⼦程序的编号应放在 AH 寄存器中。7、循环指令LOOPNZ终⽌循环的条件是 CX=0 或者 ZF=0 。
设(SS)=4000H,(DS)=3E00H,(ES)=3800H,(BP)=0800H,(SP)=010EH,(AX)= 7A34H,(BX)=2912H,(DI)=0003H,BUF=0111H,(4090EH)=0FH, (4090FH)=57H, (40910H)=93H, (40911H)=20H, 下列8-12题各条指令都在此环境下执⾏,在下列各⼩题的空格中填⼊执⾏结果:8、SUB AH, [BP+BUF] ;(AH)= 5A H
9、SHR BYTE PTR [BX-DI],1 ; CF= 1 ,(4090FH)= 2B H10、POP AX ;(SP)= 0110 H
13、模拟运算器,⽤⼀字节补码加法实现⼗进制数-71-59=?的计算。(6分)其⼆进制补码加法算式为: CF= 1 ,SF = 0 ,ZF= 0 ,OF = 1 ,PF= 1 ,AF = 0得分
⼆、程序阅读与分析。(每⼩题3分,共18分)得分
三、在空⽩处添上适当的指令,使下⾯的程序段能实现既定功能:(每空2分,共12分)1、把DA1数据区的⾮压缩BCD码依次转换为对应的ASCII码,存放在ASC开始的数据区。DA1 DB 03H, 01H, 09H, 08H, 04H, 07H, 06H, 02H, 00H, 09HCNT EQU ASC-DA1ASC DB 10 DUP (?):
LEA SI, DA1LEA DI, ASC_ MOV CX,CNTL1: MOV AL, [SI]ADD AL,30HMOV [DI], ALINC SIINC DI_ LOOP L1
2、从D1开始的N个单元中存放着N个整数,统计出这些数中负数的个数并存⼊RS中。DATA SEGMENT
D1 DB -1,-3,7,9,0AH,………N EQU $-D1RS DW ?DATA ENDSCODE SEGMENT:
LEA BX,D1 ;初始化MOV CX,NMOV DX,0
NEXT: MOV AL,[BX]CMP AL,0JNS PPINC DXPP: INC BXLOOP NEXT ;循环MOV RS,DX得分
四、若数据区定义如下,在右图中画出数据依次存放的⽰意图,填充数据,标注各个变量的位置及其地址偏移量。 (8分)DATA SEGMENT‘Y’‘X’‘Z’‘4’‘N’0EFH5AH00H1AH‘$’0AH0DH
CRLF DB 0DH,0AH,‘$’RESULT DB 0
DA DW 1AH,0EF5AHN EQU $- DASTR1 DB “N4ZXY”DATA ENDS若执⾏:MOV CL, NLEA SI, STR1MOV DX, DA+2MOV AL, CRLF
后,填写:CL= 04 H , SI= 0008 H ,AL= 0D H , DX= 0EF5A H得分
五、论述与问答题:(共20分,第1、2⼩题为必做题,其余为选做题,选做第6题的不做3、4、5题,反之亦然)1、通过简述CPU控制执⾏⼀条指令的过程及步骤,诠释程序存储原理。(4分)答题要点:
机器语⾔、指令指针、指令地址、地址总线、存储器、数据总线、操作码、操作数、取指、译码、控制信号序列、时序、执⾏、结果处理、下⼀操作、完成启动下⼀指令周期
控制器主要由指令计数器PC、指令译码器、PAL等组成;通过pc控制,⾃动、周⽽复始地完成取指、译码、执⾏的周期过程,从⽽实现对存放在存储器中的指令代码的顺序⾃动执⾏控制。
2、画出冯.诺依曼结构图;给出计算机结构的三⼤要点;简述其基本⼯作原理:(6分)1、计算机由运算器、控制器、存储器、输⼊设备和输出设备五部分组成;
2、程序和数据以⼆进制形式不加区分地依次存放在存储器中,存放位置由地址确定;
3、控制器根据存放在存储器中的指令序列(即程序)⼯作,并由⼀个程序计数器(PC)控制指令的执⾏。
3、(选做6题的同学不做此题)归纳总结汇编语⾔编程的特点,指出它与⾼级语⾔编程的不同点,给出汇编语⾔编程中AX,BX,CX,DX,SI,DI,BP的通常⽤途。(4分)答题要点:
1、特点与不同点:变量定义、数据区、伪指令、寄存器分配与使⽤、⾯对硬件、灵活性等AX:累加器,功能强,常⽤作最重要的⽤途BX:常⽤作基址指针CX: 常⽤作循环控制变量
DX:乘法运算时存乘积的⾼位,I/O指令中作外设端⼝地址寄存器SI,DI: 变址寻址时作地址指针⽤BP:堆栈寻址时作基址指针⽤
4、(选做6题的同学不做此题)何谓总线?总线的⼯作原则是什么?CPU引脚给出哪三⼤总线?(3分)答题要点:
总线是⼀组同类信号传送的公共数据通道,通常是同类信号并⾏同时传送,它按分时共⽤原则为多种设备分别服务。常⽤数据总线、地址总线、控制总线
5、(选做6题的同学不做此题)运算器在进⾏有符号数运算时,要知道是否发⽣了算术溢出,可采⽤哪三种⽅法判别?(共3分)
答题要点:双符号位法;
同号数相加减,结果不同号,溢出;
数位向符号位的进位与符号位向前进位不同,即Cn不等于Cn-1,溢出。
6、(选做3、4、5题的同学不做此题)假设内存中从DA1开始存放着M个字节的有符号数据项,试编⼀个⼦程序,将这些数据项进⾏升序排序(排序算法不限),给出的数据区定义如下:(10分)DATA SEGMENT
DA1 DB 10,45,81,17,46,……M EQU $-DA1DATA ENDS参考程序:program segmentmain proc far
assume cs:program,ds:data,ss:st_segstart: push dssub ax,axpush axmov ax,datamov ds,axmov dx,m-1next: mov cx,dxlea si,da1mov al,[si]inc sik1: cmp al,[si]jc k2xchg al,[si]k2: inc siloop k1xchg al,[si-1]mov [da1],aldec dxjnz nextretmain endpprogram ENDS
END START得分
六、编写⼀个在某项⽐赛中计算每⼀位选⼿最终得分的程序。计分⽅法如下:① 10名评委,在0~10的整数范围内给选⼿打分。
② 10个得分中,除去⼀个最⾼分(如有同样两个以上最⾼分也只除⼀个),除去⼀个最低分(如有同样两个以上最低分也只除⼀个),剩下的8个得分总和为该选⼿的最终得分。(12分)DATA SEGMENT
SCORE DB 7,8,9,8,10,10,9,8,7,10N EQU $-SCORESUM DB ?MAX DB ?MIN DB ?DATA ENDS参考程序:
CODE SEGMENT 'CODE'ASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DL,SCOREMOV MAX,DLMOV MIN,DLMOV CX,N-1MOV BX,1
CYCLE: MOV AL,SCORE[BX]ADD DL,ALCMP AL,MAXJLE CMPMINMOV MAX,AL
CMPMIN: CMP AL,MINJGE NEXTMOV MIN,ALNEXT: INC BXLOOP CYCLESUB DL,MAXSUB DL,MINMOV SUM,DL
MOV AH,4CHINT 21HCODE ENDSEND START
云南⼤学2008⾄2009学年上学期物理学院物理系各专业2006级《微机原理》期末考试(闭卷)B卷参考答案满分100分考试时间120分钟任课教师:陈永康、杨先楚学院专业学号姓名
七、计算并填写结果:(除标明分数的题外,每空1.2分,共 30分)
1、堆栈是内存中⼀个专⽤存储区域,其存取规则是先进后出 ;在8086系统中,当执⾏CALL指令时,CPU会将IP/当前地址/⼦程序返回地址的内容压⼊堆栈。
2、8086通过数据总线对____存储器___进⾏⼀次访问所需的时间为⼀个总线周期,⼀个总线周期⾄少包括___4___个时钟周期。
3、数制转换(⼩数部分保留位数:⼆进制8位,16、7进制3位):[137.416]10=[ 10001001.01101010 ]2=[ 89.6A7 ]16=[ 254.262 ]7=[ 100110111.010********* ]BCD
4、⼋位⼆进制代码转换:[-113]10=[ 11110001 ]原=[ 10001110 ]反=[ 10001111 ]补5、指令MOV AL,6[BX][SI]的源操作数的寻址⽅式叫做基址变址相对寻址寻址。6、在汇编过程中不产⽣指令码,只⽤来指⽰汇编程序如何汇编的指令叫做伪指令。7、循环指令LOOPNZ的循环条件是CX不为0 且ZF为0。
假设下列8-12题的各条指令在执⾏前的运⾏环境为:(SS)=4000H,(DS)=3E00H,(BP)=0800H,(SP)=0100H,(AX)= 7A34H,(BX)=290EH,(DI)=0002H,BUF=010EH,存储器地址(4090EH)=0FH, (4090FH)=58H,(40910H)=93H, (40911H)=20H,请将下列各⼩题的独⽴执⾏结果填⼊空格中:8、ADD BYTE PTR [BX+DI],8AH ;CF= 1,(40910H)=1D H9、PUSH DI ;(SP)= 00FE H
10、TEST AH, BYTE PTR [DI+290DH] ;PF=0H
13、模拟运算器,⽤⼀字节补码加法实现⼗进制数-91-68=?的计算。(6分)其⼆进制补码加法算式为CF= 1,SF = 0,ZF= 0,OF = 1,PF= 0,AF = 1
⼋、程序阅读与分析。(每⼩题3分,共18分)九、
⼗⼀、在空⽩处添上适当的指令,使下⾯的程序段能实现既定功能:(每空2分,共12分)
1、下⾯⼦程序实现:将AL中的⼀位16进制数(0~F)转换为相应的ASCII码并在屏幕上显⽰该字符。HECA PROC FARCMP AL,104、MOV BL, 02HMOV AL, 06H
MUL BL ; AX=_000C_HAAM
AH=__01__H, AL=___02___HJC KKADD AL,7
KK: ADD AL,30HMOV DL, AlMOV AH,2INT 21HRETHECA ENDP
2、下⾯程序段完成从键盘输⼊10个字符,然后⽤2号功能调⽤以相反的顺序显⽰输出这10个字符。请在空⽩处添上适当的指令(每⼀空⽩处只添⼀条指令)。MOV CX,10
LOP1:mov ah,1INT 21HPUSH AXLoop lop1MOV CX,10LOP2:POP _ dxMOV AH,2INT 21H
LOOP LOP2 四、若数据区定义如下,在右图中画出数据依次存放的⽰意图,填充数据,标注各个变量的位置及其地址偏移量。
DATA SEGMENT
CRLF DB 13,10,‘$’ R E S U L T D B 0 DADW 1AH ,0F033HN EQU $- D A
S T R 1 D B “4A B C D ” DATA ENDS 若执⾏:MOV CL, NLEA SI, RESULTMOV DX, DA+2MOV AL, CRLF
后,填写:CL= 04 H , SI= 0003 H ,AL= 0D H , DX= 0F033 H
五、论述与问答题:(共20分,第1、2⼩题为必做题,其余为选做题,选做
第6题的不做3、4、5题,反之亦然)
1、画微型计算机结构图;简述主要部件功能。(6分) 答案要点:中央处理单元CPU (ControlProcessing Unit )是微型计算机的核⼼部件,包含有运算器、控制器、寄存器
组的⼀块⼤规模集成电路芯⽚;主存储器是微型计算机中存储程序、原始数据、中间结果和最终结果等各种信息的部件;系统总线是CPU 与其他部件之
间传送数据、地址和控制信息的公共通道;输⼊输出接⼝电路是微型计算机外部设备交换信息的桥梁。2、通过简述CPU 控制执⾏⼀条指令的过程及步骤,诠释程序存储原理。(4分) 答题要点:
机器语⾔、指令指针、指令地址、地址总线、存储器、数据总线、操作码、操作数、取指、译码、控制信号序列、时序、执⾏、结果处理、下⼀操作、完成启动下⼀指令周期
控制器主要由指令计数器PC 、指令译码器、PAL 等组成;通过pc 控制,⾃动、周⽽复始地完成取指、译码、执⾏的周期过程,从⽽实现对存放在存储器中的指令代码的顺序⾃动执⾏控制。 3、(选做6题的同学不做此题)请说出8086CPU 有哪些引脚是分时复⽤引脚?如何分时复⽤?(4分)
解:8086的数据线和地址线是利⽤复⽤的,所以常把8086的总线称为多路总线,即某⼀时刻总线上出现的是地址,另⼀时刻,总线上出现的是数据。正是这种引脚的分时使⽤⽅法才能使8086⽤40条引脚实现20位地址、16位数据及众多的控制信号和状态信号的传输。
8086CPU 的分时复⽤的引脚有:地址/数据复⽤引脚是:AD 15~AD 0,在总线周期的T 1状态,传送地址信息,在其它状态则传送数据信息;
地址/状态复⽤引脚是:A 19/S 6~A 16/S 3,这些引脚在总线周期的T 1状态输出地址的⾼4位,在总线的T 2、T 3、T W 和T4状态时,⽤来输出状态信息。
4、(选做6题的同学不做此题)在8086/8088中,RESET 信号来到后,CPU 的寄存器状态有哪些特点?3
答案要点:Flags,DS,ES,SS 等内容为0;指令队列为空;(CS )=FFFFH ,(IP )=0000H ,开始从FFFF0单元取指令执⾏。
000FH 000EH 000DH 000CH 000BH 000AH 0009H 0008H 0007H 0006H0005H 0004H 0003H 0002H 0001H0000H
5、(选做6题的同学不做此题)EU与BIU各⾃的功能是什么?如何协同⼯作?(共3分)
答:EU是执⾏部件,主要的功能是执⾏指令。BIU是总线接⼝部件,与⽚外存储器及I/O接⼝电路传输数据。EU经过BIU进⾏⽚外操作数的访问,BIU为EU提供将要执⾏的指令。EU与BIU可分别独⽴⼯作,当EU不需BIU提供服务时,BIU可进⾏填充指令队列的操作。
6、(选做3、4、5题的同学不做此题)(本题10分)编写⼀个程序,从键盘依次接收输⼊的字符(字符数不超过80个,输⼊回车符0dh则停⽌输⼊),然后将这些字符加密后存⼊内存缓冲区buffer。加密⽅法为字符的ascii码左移1位后再加1。buffer db 80 dup(‘$’) …mov cx,80lea bx, bufferinput: mov ah,01int 21hcmp al,0dh
jz exitrol al,1inc almov [bx],alinc bxloop inputexit: ret
六、内存中有⼀个N字节的字符串,以string为开始地址。编⼀段程序检查:每⼀个字符必须⼤于20H,⼩于7FH,否则算出错,⽤寄存器DL统计这些出错字符的个数,并将其存放在errnum中。(12分)假定数据区定义为:data segment
string db ‘When you see this link on……$’;字符串N dw $- string ;上条伪指令定义的字符串个数errnum db ?;存错误字节数data ends参考程序:program segmentmain proc far
assume cs:program,ds:data,ss:stack1start: mov ax,datamov ds,ax
mov bx,offset stringmov cx,Nmov dl,0
again:mov al,[bx]cmp al,20hjl err1cmp al,7fhjna next1err1: inc dlnext1:inc bxloop again
done:mov errnum,dlmov ah,4chint 21hmain endp
end start
因篇幅问题不能全部显示,请点此查看更多更全内容