您好,欢迎访问三七文档
1.阅读程序,并指出程序执行后,相应寄存器的内容是多少?STR1DW‘AB’STR2DB16DUP(?)CNTEQU$-STR1MOVCX,CNT;(CH)=(00H)(CL)=(12H)MOVAX,STR1;(AH)=(41H)(AL)=(42H)2.若有两个4字节的无符号数相加,这两个数分别存放在2000H和2010H开始的存储单元中,将所求的和放在2000H开始的内存单元中。编写程序。MOVBX,2000HMOVSI,3000HMOVCX,4CLCLP:MOVAL,[BX]ADCAL,[SI]MOV[BX],ALINCBXINCSILOOPLPOVER:3.将AX中两位非组合的BCD数转换成ASCII码,存放在2000H开始的存储单元中。MOVBX,2000HANDAX,0F0FHADDAX,3030HMOV[BX],AX4.100个单字节数存放于起始地址为2000H的内存单元,找出其中最大数送入BH中,最小数送入BL中。MOVCX,100MOVSI,2000HMOVBH,[SI]MOVBL,BHLP:CMPBL,[SI]JBENEXT1;小于等于转移MOVBL,[SI]JMPNEXT2NEXT1:CMPBH,[SI]JAENEXT2;大于等于转移MOVBH,[SI]NEXT2:INCSILOOPLPOVER:5.编程:写出从内存4200H单元开始,将连续100个字节清零的程序(只写代码段)。MOVBX,4200HMOVCX,100MOVAL,00HLP:MOV[BX],ALINCBXLOOPLPOVER:6.编程:写出统计一个字中的“0”的个数,假设数据已经存储在AX中,统计数据存储在BL寄存器中。(只写代码段)。MOVBL,00HMOVCX,16LP:SHLAX,1JCNEXTINCBLNEXT:LOOPLPOVER:7.若有两个4字节的无符号数相加,这两个数分别存在4600H和4700H开始的存储单元中,将所求的和数存放在4600H开始的内存单元中。编程时应考虑进位位。MOVBX,4600HMOVSI,4700HMOVCX,4CLCLP:MOVAL,[BX]ADCAL,[SI]MOV[BX],ALINCBXINCSILOOPLPOVER:8.统计一个字中的“1”的个数,假设数据已经存储在AX中,统计数据存储在BL寄存器中。(只写代码段)。MOVBL,00HMOVCX,16LP:SHLAX,1JNCNEXTINCBLNEXT:LOOPLPOVER:9.若有两个4字节的无符号数相加,这两个数分别存在2000H和3000H开始的存储单元中,将所求的和数存放在2000H开始的内存单元中。编程时应考虑进位位。(同第2题)10.ABC为首地址处有200个字节数据,今要求传送到CBA为首地址处,试编程。MOVSI,OFFSETABCMOVDI,OFFSET,CBAMOVCX,200LP:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPLPOVER:11.在BUF为首地址处存放40个字节的数据,设其中有一个以上的“$”字符,编程找到第一个“$”字符,并将它存于BH中。(相对BUF地址的相对距离)MOVSI,OFFSETBUFMOVBH,00HMOVCX,40MOVAL,’$’LP:CMP[SI],’$’JZOVERINCSIINCBHLOOPLPOVER:12.若AL寄存器中的内容为2位压缩的BCD数,即78H,试编程:①将其拆成非压缩的BCD码,高低位分别存入BH、BL中。②将上述已求出的2位BCD码,转换成对应的ASCII码,且存入CH、CL中。PUSHAXANDAL,0FHMOVBL,ALPOPAXMOVCL,4SHRAL,CLANDAL,0FHMOVBH,ALMOVCL,ALADDCL,30HMOVCH,AHADDCH,30H13.下段程序完成什么工作?DATASEGMENTDATX1DB300DUP(?)DATX2DB100DUP(?)DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVCX,100MOVBX,200MOVSI,0MOVDI,0NEST:MOVAL,DATX1[BX][SI]MOVDATX2[DI],ALINCSIINCDILOOPNESTINT20HCODEENDSENDSTART答:将数据段中从200地址开始的100个字节的数据转移到从300地址开始的内存单元中。14.下面程序段实现对两个存储区中的字进行比较。如找到一对不同的字,则退出,此时,ZF标志为0,DI指向此字;如果两个存储块中所有字均一一相同,则退出时,CX中值为0,ZF标志为1。阅读这一程序段,并根据提示,在空白处填写合适的指令。MATT:MOVSI,OFFSETSOURCE;源存储区首地址MOVDI,OFFSETTARGET;目的存储区首地址MOVCX,NUMBER;进行比较的字的个数JCXZEXIT;如果CX为0,则结束PUSHCX;保存有关寄存器(1.)PUSHDI(2.);设置方向标志REPECMPSW;比较(3.);ZF=1,则转移PUSHF;ZF=0,则DI指向此字SUBDI,2POPF(4.);再退出MATCH:POPDIPOPSI(5.)EXIT:RET答:1、PUSHSI2、CLD3、JZMATCH4、NOP.5、POPCX15.对8255A设置工作方式,其控制端口地址为243H。要求端口A工作在方式1,输入,B口工作在方式1,输出,PC7和PC6作为基本输出用。请写出相应的初始化编程。答:控制字:B4HMOVDX,243HMOVAL,0B4HOUTDX,AL16.假设在一个系统中,8255A工作在方式0,且A口作为输入,B口、C口作为输出,其端口地址为2F0H~2F3H。写出工作程序,要求把数据80H送B口输出,从A口读入输入数据。答:控制字:90HMOVDX,2F3HMOVAL,90HOUTDX,ALMOVAL,80HMOVAX,2F1HOUTDX,ALMOVDX,2F0HINAL,DX17.用8253A的通道0对外部事件进行计数,要求每计数到100时产生一个中断请求信号,设8253A的端口地址为200H-203H。答:控制字:30H,定时常数:0064H初始化程序:MOVDX,203HMOVAL,30HOUTDX,ALMOVDX,200HMOVAL,64HOUTDX,ALMOVAL,00HOUTDX,AL18.已知8253定时器中三个计数器和控制寄存器地址分别为340H、341H、342H和343H,要求对这三个计数器进行初始化编程,使得0#计数器设置为方式1,计数初值为2050H;2#计数器设置为方式3,计数初值为80H;答:控制字:0#:00110010B,32H,2#:10110110B,B6H初始化程序:MOVDX,343HMOVAL,32HOUTDX,ALMOVDX,340HMOVAL,50HOUTDX,ALMOVAL,20HOUTDX,ALMOVDX,343HMOVAL,B6HOUTDX,ALMOVDX,342HMOVAL,80HOUTDX,ALMOVAL,00HOUTDX,AL19、在一个系统中,8255A工作在方式0,A口输出,B口和C口输入,A口输出线连接到一组发光二极管LED0~LED7上,其连线如图所示。试问:(1)A口地址和控制寄存器端口地址是多少?二极管接高电平时就能够发光,如果要使LED7发光,而其他二极管不发光,那么如何编程?(包括初始化)答:1)A口的地址为:20CH控制口的地址为:20FH2)8255的控制字为:8BH初始化及控制程序:MOVDX,20FHMOVAL,8BHOUTDX,ALMOVAL,80HMOVDX,20CHOUTDX,AL20.IBMPC/XT微机的某扩展板上使用一片8253A,其与系统总线的连接如图所示,试问:(1)计数器0和控制寄存器端口地址分别为多少?(2)如何对其中两个计数器进行初始化编程,使得0#计数器设置为方式1,计数初值为2050H;1#计数器设置为方式3,计数初值为80H;答:1)计数器0的端口地址为:234H控制寄存器的端口地址为:237H2)T0控制字为:32H;定时常数为:2050HT1控制字为:76H,定时常数为:0080H初始程序:MOVDX,237HMOVAL,32HOUTDX,ALMOVDX,234HMOVAL,50HOUTDX,ALMOVAL,20HOUTDX,ALMOVDX,237HMOVAL,76HOUTDX,ALMOVDX,235HMOVAL,80HOUTDX,ALMOVAL,00HOUTDX,AL四、简答题1.8086的中断处理过程:当CPU在INTR引脚上接受一个高电平的中断请求信号并且当前的中断允许标志为1,CPU就会在当前指令执行完后开始响应外部的中断请求,具体如下:1、从数据总线上读取外设送来的中断类型码,将其存入内部暂存器中;2、将标志寄存器的值推入堆栈;3、将标志寄存器中IF和TF清零;4、将断点保护到堆栈中;5、根据中断类型获取中断向量转入中断处理子程序;6、处理完后恢复现场。响应后堆栈的顶部4个单元是IP,CS。2.接口的同步控制方式:CPU与外设之间的数据传输有以下三种方式:程序方式、中断方式、DMA方式。其中程序方式又分为无条件传送方式和条件传送方式两种方式。无条件传送方式用于简单外设,如LED显示器。条件传送方式用于外设较少的情形,接口简单,但CPU效率低。在实时系统以及多个外设的系统中,采用中断传送方式。这种方式CPU利用率高,速度快,但需要专门的中断控制电路。如果要求实现高速数据传输,采用直接存储器传输方式,即DMA方式。五、编程题:1.参考程序:CODESEGMENTASSUMECS:CODE,DS:CODEGO:MOVAX,DATAMOVDS,AXANDAL,0F0HEXIT:CODEENDSENDGO
本文标题:微机答案
链接地址:https://www.777doc.com/doc-5884959 .html