微机原理期末考试习题选讲.doc_第1页
微机原理期末考试习题选讲.doc_第2页
微机原理期末考试习题选讲.doc_第3页
微机原理期末考试习题选讲.doc_第4页
微机原理期末考试习题选讲.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理习题选讲江苏大学机械学院测控系2011年9月存储器数据组织:VAR132H41HA42HB43HCVAR234H1234H12H40H0040H00H42HB41HA78H12345678H56H34H12H-预留的存储单元C3H11000011BARRY100H第一组字节方式的0,101H00H第二组字节方式的0,101HARRY2-第一组字方式的?,1-01H00H-第二组字方式的?,1-01H00H:例4-3VAR1 DB 32H, ABCVAR2 DW 1234H,40H, AB DD 12345678H DB ?,11000011BARRY1 DB 2DUP(0,1)ARRY2 DW 2DUP (?,1)本例所定义的数据存储器分配情况如图示。寻址方式与指令系统1. 已知(DS)=1000H,(ES)=2000H,(SS)=1100H,(SI)=1010H,(BX)=0200H,(BP)=0600H,请指出下列指令的源操作数字段是什么寻址方式?源操作数字段的物理地址是什么?(1) MOV AL,2400H(2) MOV AX,BP(3) ADD AX,ES:BP+10(4) MOV AL,BX+SI+25解:(1) 该指令的源操作数字段是直接寻址方式物理地址PA=(DS)16+2400H=1000H16+2400H=12400H(2) 该指令的源操作数字段是寄存器间接寻址方式物理地址PA=(SS)16+(BP)=1100H16+0600H=11600H(3) 该指令的源操作数字段是寄存器相对寻址方式物理地址PA=(ES)16+(BP)+10=2000H16+0600H+000AH=2060AH(4) 该指令的源操作数字段是寄存器相对基址变址寻址方式物理地址PA=(DS)16+(BX)+(SI)+25=1000H16+0200H+1010H+0019H=11229H2. 请指出下列指令中得错误:(1)MOV DS,12H (2)MOV AH,400(3)MOV BP,AL (4)MOV AX,SIDI(5)OUT 257H,AL (6)MOV BYTE PTRBX,1000(7)MOV BX,SI (8) MOV 4DI,02(9) MOV BX+SI+3,IP (10)PUSH BH解: (1)不能直接向DS中送立即数(2)400超过了一个字节的范围(3)寄存器类型不匹配(4)SI、DI不能同时使用(5)直接寻址的输出指令中,端口号只能在00FFH范围内(6)1000超过了一个字节的范围(7)源和目的操作数不能同时为存储器操作数(8)源操作数与目的操作数的类型不明确(9)IP不能作源和目的操作数(10)PUSH是字操作指令3. 请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF和AF的状态:MOV AX,7896HADD AL,AHADD AH,ALADD AL,0F2H解: (1)MOV AX,7896H执行后,AX=7896H,即AH=78H,AL=96H,各标志位保持不变。 (2)ADD AL,AH执行后,AH=78H ,AL=0EH,即AX=780EH,所以各标志位状态为:CF=1,ZF=0,SF=0,OF=0,AF=0,PF=0。 (3)ADD AH,AL执行后,AH=86H,AL=0EH,即AX=860EH,所以各标志位状态为:CF=0,ZF=0,SF=1,OF=1,AF=1,PF=0。 (4)ADD AL,0F2H执行后,AH=86H,AL=00H,即AX=8600H,所以各标志位状态为:CF=1,ZF=1,SF=0,OF=0,AF=1,PF=1。4. 、均为16位带符号数,请编写一个程序段计算表达式(X*Y+Z-1000)/70的值。解:假设X、Y和Z分别存放在名为DATAX、DATAY和DATAZ的变量单元中。计算结果保存在AX中,余数保存在DX中,则程序段如下: MOV AX,DATAX IMUL DATAY ;计算X*Y MOV CX,AXMOV BX,DX ;积保存到BX:CXMOV AX,DATAZCWD ;将DATAZ扩展成32位ADD AX,CX ;计算和ADC DX,BXSUB AX,1000 ;计算差SBB DX,0MOV CX,70 ;计算商和余数IDIV CX汇编程序基本设计方法简单(顺序)程序例4-25 有X,Y两个16位数3456H和0ABCDH,求两数之和,并将结果送到Z单元。程序清单:被加数 AX被加数 +加数 AX初始化取段基址 DS源操作数指针 SI目的操作数指针DI 开始结果送Z结束DATA SEGMENTX DW 3456HY DW 0ABCDHZ DW 00DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS ,AXLEA SI,XLEA DI,YMOV AX,SIADD AX,DIMOV Z,AXMOV AH,4CHINT 21HCODE ENDSEND START 取BCD码 AL高4位清零初始化取段基址 DS源操作数指针 SI目的操作数指针DI 开始清零后的数加30H转换成ASCII码低位数送低位内存再取BCD码AL右移4位,高位补零加30H转化ASCII码高位数送高位内存结束例4-26把压缩BCD码表示的数M,转换为两个相应的ASCII码,结果存在紧跟M后的两个内存单元,低位在前,高位在后。程序清单:DATA1 SEGMENT M DB ? N DB 2DUP(00)DATA1 ENDSCODE1 SEGMENT ASSUME DS:DATA1,CS:CODE1START:MOV AX, DATA1 MOV DS,AX LEA SI,M LEA DI,N MOV AL,SI AND AL,0FH ADD AL,30H MOV DI,AL MOV AL,SI MOV CL,4 SHR AL,CL ADD AL,30H MOV DI+1,AL MOV AH,4CH INT 21H CODE1 ENDSEND START分支程序例4-27内存单元M有一个16位带符号数,求其绝对值,并将结果放回原处。程序清单:DATA2 SEGMENT M DW ?将带符号数送AX初始化取段基址送DS取操作数指针送SI开始将求绝对值的数送回原内存结束求补小于零吗?YNDATA2 ENDSCODE2 SEGMENT ASSUME DS:DATA2,CS:CODE2START:MOV AX, DATA2 MOV DS,AX LEA SI,M MOV AX,SI AND AX,AX JNS DONE NEG AXDONE: MOV SI,AX MOV AH,4CH INT 21H CODE2 ENDSEND START例4-28编写实现下列函数的程序。将X的值送AX初始化取段基址送DS取X的指针送SI开始AX0?YNY=-1Y=0AX0?YN结束Y=1Y=1 (当X0)0 (当X=0)-1 (当X0)程序清单如下:DATA3 SEGMENT X DW ? Y DW ?DATA3 ENDSCODE3 SEGMENTASSUME CS:CODE3,DS:DATA3START:MOV AX, DATA3 MOV DS,AX LEA SI,X MOV AX,SI AND AX,AX JNS LP1 MOV Y,0FFH JMP END1LP1: JNZ LP2 MOV Y,00H JMP END1LP2: MOV Y,01H END1:MOV AH,4CH INT 21HCODE3 ENDSEND START循环程序取加数送AL初始化取段基址送DS取操作数指针送SI累加器DX清零累加次数10送循环计数器开始保存结果结束DX+AXDXCX-1CX=0?YN带符号数扩展成16位数送AX修改数据指针SI+1SI例4-29 以ARRY开始的字节数组有10个带符号数,求出它们的和,并将和送到SUM字单元中。程序清单如下:DATA4 SEGMENT ARRAY DB a1,a2,a3,.a10 SUM DW ?DATA4 ENDSCODE4 SEGMENT ASSUME CS:CODE4,DS:DATA4START:MOV AX, DATA4 MOV DS,AX LEA SI,ARRAY XOR DX,DX MOV CX.10DONE: MOV AL,SI CBW ADD DX,AX INC SI LOOP DONE MOV SUM,DX MOV AH,4CH INT 21HCODE4 ENDSEND START例子4-30 统计数据段string字符串的字符个数,将统计值存入count单元,字符串是由字符$值为结束符的,统计时$不统计在内。程序清单如下:DATA5 SEGMENT STRING DB How are you!,$取字符送AL初始化取段基址送DS设置数据块指针SI设置字符计数器CX=0开始统计值CX送COUNT结束CX+1CXAL=$?NYSI+1SI COUNT DW ?DATA5 ENDSCODE5 SEGMENT ASSUME CS:CODE5,DS:DATA5START:MOV AX, DATA5 MOV DS,AX MOV SI,OFFSET STRING XOR CX,CXAGAIN:MOV AL,SI CMP AL,$ JZ DONE INC CX INC SI JMP AGAINDONE: MOV COUNT,CX MOV AH,4CH INT 21HCODE5 ENDSEND START例4-31 数据段buffer数组有100个字数据,统计该数组中所有为“1” 的位的个数,统AX右移1位外循环初始化设置计“1”计数器BX,初值=0设置地址指针SI设置外循环次数CH=100开始CF=1?YNBX+1BXYN结束将统计结果BX送RESULT内循环初始化取字数据送AX设置内循环次数CL=16CL-1CL修改字指针SI+2SICH-1CHCH=0?CL=0?NYLOP1LOP2计结果存入result单元。程序清单如下:DATA6 SEGMENTBUFFER DW a1,a2,a3,.,a100COUNT EQU 100RESULT DW ?DATA6 ENDSCODE6 SEGMENT ASSUME CS: CODE6, DS:DATA6START: MOV AX, DATA6 MOV DS, AX MOV SI, OFFSET BUFFER MOV CH, COUNT MOV BX, 00HLOP1: MOV AX, SI MOV CL, 16LOP2: SHR AX, 1 JNC NEXT INC BXNEXT: DEC CL JNZ LOP2 INC SI INC SI DEC CH JNZ LOP1 MOV RESULT, BX MOV AH, 4CH INT 21HCODE6 ENDSEND START子程序例4-32 子程序SUM的功能是对字节数组求和,用寄存器传送参数,主程序两次调用子程序,对不同的数组求和。程序清单如下:DATA7 SEGMENT; ARRYA DB a1,a2,a3,.,am COUNTA EQU $-ARRYA SUMA DW ?; ARRYB DB b1,b2,b3,.,bn COUNTB EQU $-ARRYB SUMB DW ?DATA7 ENDS STACK1 SEGMENT STAK DB 100 DUP(?) TOP EQU 100STACK1 ENDSCODE7 SEGMENT ASSUME CS:CODE7,DS:DATA7,SS:STACK1MAIN: MOV AX, DATA7 MOV DS,AX MOV AX,STACK1 MOV SS,AX MOV SP,TOP LEA SI,ARRYA LEA DI,SUMA MOV CX,COUNTA CALL SUM MOV SI,OFFSET ARRYB MOV DI,OFFSET SUMB MOV CX,COUNTB CALL SUM MOV AH,4CH INT 21HCODE7 ENDS;子程序名为SUM,对字节数组求和;SI=数组起始地址;CX=数组长度;DI=有效数组和目的地址SUM PROC NEAR PUSH AX PUSH BX MOV AX,00HAGAIN:MOV BL ,SI MOV BH,0 ADD AX,BX INC SI LOOP AGAIN MOV DI,AX POP BX POP AX RETSUM ENDP END MAIN存储器地址及其分配例5-1图为某一8088系统的存储器连接图,试确定其中各芯片的地址空间。片选:选中所用芯片(高位地址线)字选:选中所用存储单元(低位地址线)分析:对于芯片的使用 1、若使74LS138起作用,需满足:A17=1;A19=A18=0;A16=A15=A14=0时选中 Y0 A16=1,A15=A14=0时选中Y4 2、若选中27128(16K EPROM,需14根地址线A13A0)需满足:1)Y0=0 (A16=A15=A14=0)A19A18A17A16A15A14A13A12A1127128:20000H23FFFHA0001000000011113、若选中1#6264(8K SRAM,需13根地址线A12A0)需满足:1)A13=0;2)Y4=0 (A16=1,A15=0,A14=0)A19A18A17A16A15A14A13A12A111#6264:30000H31FFFHA000110000001114、若选中2#6264需满足:需满足:1)A13=1; 2)Y4=0 (A16=1,A15=0,A14=0)A19A18A17A16A15A14A13A12A112#6264:32000H33FFFHA00010001000111例5-2 设计某一16位微处理器系统,要求存储容量位8K的EPROM,采用2764芯片,地址为FE000HFFFFFH;RAM容量为16K,选用6264芯片,地址为F0000HF3FFFH。采用全译码方式。分析:1)2764 EPROM 8K8 (需1片);6264 SRAM 8K8 (需2片)2)对于2764: 地址范围FE000HFFFFFH,当A15=A14=A13=1时, 选中Y7,2764片选端 CE使能。CBAA19A18A17A16A15A14A13A12A11A0111111100011111111113)对于6264:地址范围F0000HF3FFFH,(8K需13根地址线0000H1FFFH)2#6264:F0000H+1FFFH=F1FFFH(F0000HF1FFFH)1#6264:F2000H+1FFFH=F3FFFH(F2000HF3FFFH)当A15=A14=A13=0时,选中 Y0,2#6264片选端 CE使能当A15=A14=0,A13=1时,选中Y1,1#6264片选端 CE使能CBAA19A18A17A16A15A14A13A12A11A02#111100000011110001111#11110010001111001111例5-3 用存储器芯片SRAM 6116构成一个4KB的存储器,要求其地址范围在78000H78FFFH之间。 001111分析::记住:210=1K (A9A8A7A0: .00 0000 0000 11 1111 1111 )1K:0000H03FFH3K:0000H0BFFH (1K+2K)2K:0000H07FFH4K:0000H0FFFH8K:0000H1FFFH题目要求:地址范围为78000H78FFFH的4KB内存空间,而6116为2K8故需2片。2K:78000H787FFH (78000H+07FFH=787FFH)2K:78800H78FFFH (78800H+07FFH=78FFFH)CBAA19A18A17A16A15A14A13A12A11A10A001111000000Y00111100001101111000100Y101111000111思考:首地址为42000H,组成6K空间,末地址是多少?(答案:437FFH 提示:6K=4K+2K)8255的应用例7-3 利用8255作为打印机的连接接口,并通过该打印机接口打印字符串,字符串长度放在DS段的COUNT单元中,要打印的字符存放在从DATA单元开始的数据区中。8255与打印机的连接CPU通过8255接口将数据传送到打印机的D0D7端,然后利用一个负脉冲STROBE(宽度1s)将数据锁存在打印机内部,以便打印机进行处理。同时,打印机的BUSY端送出高电平信号,表示其正忙。仅当BU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论