微机原理及接口设计试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

13年1月试卷一、填空题(16分,每小题2分)1.若X=-35H,Y=70H,则[X]反=11011100,[X-Y]补=10100101。2.8086地址总线中的AD0~AD15(低15位)位与数据总线公用。使用总线周期控制信号来锁存地址信号。3.8086的标志寄存器中有6个控制标志位和3个状态标志位。4.执行指令“JGDST”时,需判断标志位SF、OF、ZF的内容。5.中断向量表的地址范围是00000H~03FFFH(物理地址),中断类型码为35H的中断向量所占用的物理地址是000D4H~000D7H。6.8253的6种工作方式中,有2种能够自动重装计数初值,有2种是采用硬件方式启动计数过程。7.一直8255的端口地址为40H~43H,则“OUT43H,08H”所执行的操作是将C端口的PC4置0。8.某内存地址范围是A0000H~C7FFFH,其存储容量为160Kbyte,需要20片8K×8位的内存芯片才能构成该存储区。二、计算器1.某堆栈区地址为2000H:0000H~2000H:0100H,SP=0080H,计算:1)栈顶的物理地址为20080H,栈底的物理地址为20000H。2)执行“RET”指令(段间调用)后,栈顶的物理地址为20084H。2.MOVSI,0100HMOVAL,08HMOVCX,35HL1:MOV[SI],ALDECALINCSILOOPL1运行结果:AL=D3,SI=0135H,(DS:0105H)=03H3.MOVAX,6587HMOVBX,3412HNEGBXCBWIDIVBH执行结果:AX=F702H,BX=CBEEH。4.根据数据定义给出结果DATASEGMENTD1DB1,2,3,4,5DUP(0),’67’,89D2DB‘Thisisacomputer’,0DH,0AHCNTEQU$-D1LEABX,D2MOVAX,SIZED1CNT=26,BX=7,AX=7。三、程序设计编写完整的汇编程序,并使用三个子程序分别实现以下功能:1)从键盘输入一个32位(双字)的16进制无符号数,存储在变量NUM1中;2)将NUM1与16位数NUM2相乘,乘积存储在变量NUM3中;3)统计NUM3中16进制数字“0”的个数,并显示输出。答:我觉得2)太难了,应该不会考,从周明德的书上看到一道差不多的写了两大篇儿……DATASEGMENTNUM1DD?NUM2DB1AHNUM3DD?DATAENDSSTACKSEGMENTSTADB100DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACK,ES:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXMOVSP,TOPMOVSI,OFFSETNUM1MOVBX,OFFSETNUM2MOVDI,OFFSETNUM3;初始化MOVCX,04H;设定输入数字时循环的次数CALLENTN;调用输入数字子程序CALLMULT;调用乘法子程序MOVSI,OFFSETNUM3MOVCX,04HCALLDISPLAY;调用输出子程序MOVAH,4CHINT21H;输入子程序ENTNPROCNEARCLDADDSI,CX;从最高位开始输入LOP:MOVAH,1INT21H;高位输入CMPAL,40H;判断是0~9还是A~FJANEXT;若字母,则跳SUBAL,30H;减去30H转为16进制JMPFINISHNEXT:SUBAL,31H;若为字母则减去31H转为16进制FINISH:MOVBH,AL;暂存至BHMOVAH,1INT21H;低位输入CMPAL,40H;判断是0~9还是A~FJANEXT;若字母,则跳SUBAL,30H;减去30H转为16进制JMPFINISHNEXT:SUBAL,31H;若为字母则减去31H转为16进制FINISH:MOVBL,AL;暂存至BLMOV[SI],BX;将BX移至NUM1DECSI;偏移地址-1LOOPLOPRETENTNENDP;统计“0”的个数并输出子程序DISPLAYPROCNEARMOVBL,0;存在BL中AGAIN:MOVAX,[SI];取NUM3放在AX中TESTAL,0FFH;低八位判0JNZNEXT1INCBLNEXT1:TESTAH,0FFH;高八位判0JNZNEXT2INCBLNEXT2:INCSILOOPAGAINADDBL,30H;将BL转换为ASCII(小于等于8)MOVDL,ALMOVAH,02HINT21H;屏幕显示RETDISPLAYENDPCODEENDSENDSTART四、可编程接口芯片的应用技术8253的CLK0输入脉冲F=1MHz,8255的A口连接OUT1和按键,8255的B口接8个LED。要求:1.依据接线图写出8255的A口、B口、C口及控制寄存器的端口地址,8253的计数器CNT0,CNT1,CNT2及控制寄存器的端口地址。2.当PA0的按键按下,使B口的“LED0”点亮1秒后熄灭,下一次按键使“LED0”点亮0.5秒后熄灭,按以下顺序反复循环:“LED0”,“LED1”,……,“LED7”,“LED0”,“LED1”,……,如键盘有输入就结束循环并退出。试编写完整的汇编程序。答:1.8255:034CH~034FH;8253:0344H~0347H。2.我没看懂题,就都按亮1秒写了==DATASEGMENTMESDBENTERANYKEYEXITTODOS,0DH,0AH,‘$’DATAENDSSTACKSEGMENTSTADW100DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,TOPMOVDX,OFFSETMESMOVAH,09HINT21HMOVDX,034FHMOVAL,90HOUTDX,ALLOOPA:MOVDX,034CHINAL,DXNOTAX13年5月重修试卷一、填空题1.若[X]=35H,[Y]=F7H,则[X+Y]=。看不清原反补,反正会==2.8086/8088汇编语言中,操作数具有,和三种属性。没找到什么属性,倒是分立即数、寄存器、存储器三种类型……3.8086/8088的CPU有6个状态标识位和3个控制标志位。4.要把AL的D2~D5位置1,其他位保持不变,应使用的指令是:ORAL,3CH。5.将不带符号数进行比较是,应根据标志位ZF和CF来判断比较的结果。6.若某外部中断的类型码为1FH,则该中断向量(在中断向量表中)的物理地址是0007CH~00080H。7.一片中断控制器8259A可以管理8级外部中断,两片8259A通过主从方式可以管理15级外部中断。(这题蒙的……)8.某RAM芯片的存储容量是16K×8bit,则该芯片有8根数据线和14根地址线。二、计算题1.已知各寄存器内容,确定下列指令中存储器操作数的物理地址。DS=4000HSS=6000HBX=1000HBP=2000HDI=3000H1)MOVAX,[1234H]41234H2)MOVAX,[BX]41000H3)MOVAX,5678H[BP]67678H4)MOVAX,1000H[BX][DI]45000H5)MOVAX,[BP][DI]65000H2.MOVAX,6789HMOVBX,ABCDHNOTBXDIVBL执行结果:AX=6789H,BX=5432H(我算商大于FF,产生中断?)3.MOVAX,1234HMOVBX,5678HSUBAX,BXHLT执行后各标志位状态分别为:CF=1,SF=1,ZF=0,OF=0,PF=0。4.根据数据定义给出结果:DATASEGMENTD1DW230BH,1,2,3,4,4DUP(0)D2DB‘ABCD’,0ABHCNTEQU$-D1CNT=15LEABX,D2BX=10MOVAX,TYPED1AX=2三、程序设计1.数组BUF1中存放着100个字节的用原码表示的带符号数,要求:将BUF1中的正、负数分别复制到数组PLUS和MINUS中,并统计正、负数的个数,分别放在NUMP和NUMM中。答:DATASEGMENTBUFDBX1,…,X100PLUSDB100DUP(?)MINUSDB100DUP(?)NUMPDB?NUMMDB?DATAENDSSTACKSEGMENTSTADB100DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXMOVSP,TOPMOVSI,OFFSETBUF1MOVDI,OFFSETPLUSMOVBX,OFFSETMINUSMOVDX,00H;记录正负数个数清零MOVCX,64H;设置循环次数LOP:MOVAL,[SI];取一个数TESTAL,08H;判断正负JNZNEXT;负数跳MOV[DI],AL;正数挪到PLUSINCDIINCDH;正数个数+1NEXT:MOV[BX],AL;负数挪到MINUSINCBXINCDL;负数个数+1LOOPLOPMOVAX,OFFSETNUMPMOV[AX],DH;放正数个数MOVAX,OFFSETNUMMMOV[AX],DL;放负数个数MOVAH,4CHINT21HCODEENDSENDSTART2.数组NUM1中有10个非压缩BCD数,试编写完整的汇编程序,并使用子程序来实现上述两个功能:1)将其转换为压缩性BCD数,并存放到数组NUM2中;2)求数组NUM2的累加和存放在AX中。答:DATASEGMENTNUM1DBX1,…,X10NUM2DB5DUP(?)DATAENDSSTACKSEGMENTSTADB100DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK;ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXMOVSP,TOPMOVSI,OFFSETNUM1MOVDI,OFFSETNUM2MOVCX,05H;设置循环次数CALLTRNS;调用转换子程序MOVSI,OFFSETNUM2MOVCX,05H;设置循环次数CALLPLSS;调用加法子程序MOVAH,4CHINT21HTRNSPROCNEAR;转换子程序LOP:PUSHCX;保护CXMOVAL,[SI];取一个非压缩BCD码INCSIMOVAH,SI;再取一个INCSIMOVCL,04H;设置左移次数SHLAH,CL;第二个BCD码左移四位ORAL,AH;第二个与第一个相或MOV[DI],AL;存到NUM2INCDIPOPCX;恢复CXLOOPLOPRETTRNSENDPPLSSPROCNEAR;相加子程序MOVAX,00H;AX清零CLC;CF清零LOP:PUSHCX;保护CXMOVBL,[SI];取一个压缩BCD码INCSIMOVBH,BLANDBL,0FH;第一个取低四位ADCAL,BL;加到ALAAA;非压缩BCD码加法调整ANDBH,0F0H;第二个取高四位MOVCL,04HSHRBH,CL;右移四位ADCAL,BH;加到ALAAAPOPCXLOOPLOPRETPLSSPROCENDSCODEENDSENDSTART四、可编程接口芯片应用技术8253的CLK0输入脉冲F=500KHz,OUT1接8255的A口,8255的B口接6个LED。要求:1.依据接线图写出8255的A口,B口,C口及控制寄存器的端口地址,8253的计数器CNT0,、CNT1、CNT2及控制寄存器的端口地址。2.使B口的LED按以下

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功