MCS_8086习题7_答案(部分_第1页
MCS_8086习题7_答案(部分_第2页
MCS_8086习题7_答案(部分_第3页
MCS_8086习题7_答案(部分_第4页
MCS_8086习题7_答案(部分_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、习题7答案1.请编写完整8086汇编语言程序统计08010803班计算机原理考试成绩:l 假设成绩存放在数据段0000H开始的85个字节单元中;l 将成绩从高到低进行排序;l 统计最高成绩和最低成绩,分别存放在字节变量max和min单元中;l 统计不及格人数,存放在字节变量var1中;l 统计9099分人数,存放在字节变量var2中;l 计算85人平均成绩,存放在字节变量avg中;datasegment paraorg0056Hmaxdb0mindb0var1db0var2db0avgdb0sumdw0cntequ85dataendsss_segsegment stackdw100 dup(0

2、)ss_segendscodesegment paraassumecs:code, ds:data, ss:ss_segmainprocfarmovax, datamovds, axmovcx, cnt-1circle1:; sort the scorepushcxmovbx, 0movdx, 0circle2:moval, bxcmpal, bx + 1jaenextxchgal, bx + 1movbx, almovdx, 1next:incbxloopcircle2popcxcmpdx, 1jzmain1loopcircle1main1:moval, 0000H; get the max

3、movmax, almoval, 0054H; get the minmovmin, almovcx, cnt; calculate var1, var2 and avgmovbx, 0circle3:moval, bxmovah, 0addsum, ax; get the sum of scorecmpal, 90jaemain2cmpal, 60jbmain3jmpmain4main2:incvar2; 9099 numberjmpmain4main3:incvar1; 60 numbermain4:incbxloopcircle3movdl, cntmovax, sumdivdlmova

4、vg, al; get the average scoremovax, 4c00hint21h; return OSmainendpcodeendsendmain2 如图6-1所示,以IBM-PC/XT计算机为核心构成的炉温控制系统。其中8255的A组与B组工作在方式0,8253定时器0工作在方式3方波发生器方式,8253输入计数频率为100KHz。1) 试说明8259、8253、8255使用的端口地址;(3分)2) 芯片初始化(10分)l 单片8259工作在完全嵌套方式,中断非自动结束,中断申请输入IR0IR7为边沿触发,IR7对应中断类型码为0FH,编写8259初始化子程序,命名为INIT

5、_8259;l 8253每定时500ms向8259申请中断,计算8253定时常数,并编写8253初始化子程序,命名为INIT_8253;l 8255的A口和C口上半部作输出,B口及C口下半部作输入,编写8255初始化子程序,命名为INIT_8255; 3) 编写汇编程序,实现炉温的连续控制,要求包括主程序与中断服务程序:l 主程序完成中断向量的安装,8259、8253、8255初始化,以及开中断,并要求1个小时后,停止控温;(假设系统已经提供中断向量安装子程序INIT_INT,初始化时可直接调用INIT_INT、INIT_8259、INIT_8253、INIT_8255)l 中断服务程序完成保

6、护现场、中断处理、发EOI命令、恢复现场、中断返回等操作;其中,中断处理要求每500ms通过8255的PA口读入一次A/D数据,并启动下一次A/D转换,PC4平时为高电平,输出负脉冲到START端,则启动A/D,转换结束时EOC端由低电平变为高电平,要求每3秒通过PB口输出控制量给D/A转换器进行一次调节。(假设系统已提供控制算法子程序PROC_CTRL,该子程返回参数为AL,返回参数即是D/A需要输出的数字量)答案:1)8259端口地址范围20H 3FH8253端口地址范围80H 9FH8255端口地址范围0A0H 0BFH2)INIT_8259 procmoval, 13h;ICW1 ou

7、t20h, almoval, 08h;ICW2 out21h, almoval, 09h;ICW4 out21h, alretINIT_8259 endp3)INIT_8253 procmoval, 36h out83h, almovax, 50000out80h, almoval, ahout80h, alretINIT_8253 endpINIT_8255procmoval, 83hout0A3h, al;初始化8255retINIT_8255endp4)data segmentparaT_Valuedb0;记录AD数据CNTdw0;用于1小时定时CNT_DAdw0;用于3秒定时P8259

8、_A0EQU20HPORT_AEQU0A0HPORT_BEQU0A1HPORT_CEQU0A2HPCTRLEQU0A3Hdata endsss_segsegmentstackdw100 dup(0)ss_segendscodesegmentassume cs:code, ds:data, ss:ss_segISR_CTRL_Tprocfar;中断服务程序pushax;保护现场inal, PORT_A;读A/D转换数据movT_Value, alincCNTcallSTART_ADC;启动A/D转换incCNT_DAcmpCNT_DA, 6;判断3秒是否到jbISR_1callPROC_CTRL

9、;DA输出进行控制outPORT_B, almovCNT_DA, 0ISR_1:moval, 20h;发EOI命令out20h, alpopax;恢复现场iret;中断返回ISR_CTRL_TendpSTART_ADC proc;启动A/D转换moval, 08houtPCTRL, al;PC4 = 0nopnopnopnopmoval, 09h;PC4=1outPCTRL, alretSTART_ADC endpmainprocfarmovax, datamovds, axclicallINIT_8259callINIT_8253callINIT_8255callINIT_INT;安装中断向

10、量stimain1:cmpCNT, 7200jbmain1climovax, 4c00hint21hcodeendsendmain3. 如图6-1所示ADC0809与IBM-PC/XT机相连完成数据采集。ADC0809为8通道的8位逐次比较ADC,D7D0为三态输出数据线,OE为高电平时打开三态门读取数据;START为高电平时启动ADC开始工作;ADDC、ADDB、ADDA为8路模拟输入选择,由ALE锁存;ADC转换结束时EOC输出高电平,ADC0809的转换时间为100微秒。系统设计中,由8253定时器0定时,每隔10毫秒启动ADC0809工作,转换结束后,由EOC向8259发出中断请求,在

11、中断服务程序中读取转换结果。ADC0809的ADDC、ADDB、ADDA全部接地,总是选择第0通道,其余输入通道均接地。8259工作在普通全嵌套方式,中断申请输入IR0IR7为边沿触发,IR0的中断类型码为08H,中断为非自动结束。图中AEN为地址允许信号,低电平时选中端口,地址总线经译码后,8259占用端口地址20H和21H,8253占用端口地址40H43H,ADC0809占用端口地址160H。1) 8253定时器0工作在方式2,即分频模式,定时时间为10毫秒,请编写8253初始化程序段。(4分)2) 读取ADC0809转换结果的中断服务程序为New_Int0A,请编写程序段将New_Int

12、0A的入口地址安装到中断向量表中,并且要求在双字变量OldIntVect中保存原来的中断向量。(4分)3) 请编写一段程序设置IF以允许可屏蔽中断请求,并设置8259的中断屏蔽寄存器IMR以允许IR2引脚上的中断请求。(2分)4) 以下为读取ADC0809的中断服务程序New_Int0A,请根据注释在横线处补充8086汇编语句,使得程序完整。(10分)答案:1) moval, 34h;设置8253控制字out43h, almovax, 10000;设置计数初值,定时10ms,Fclk = 1MHzout40h, almoval, ahout40h, al2)moval, 0Ah;保存原来IRQ

13、2对应中断向量movah, 35hint21hmovword ptr OldIntVect, bxmovword ptr OldIntVect+2, esmovdx, offset New_Int0A;安装新的IRQ2中断向量movbx, seg New_Int0Amovds, bxmovah, 25hmoval, 0Ahint21h3)inal, 21handal, 0FBhout21h, alsti4)New_Int0A proc farpushdspushdx ;保护现场pushax mov ax, DataSeg2movds, ax;使DS指向新的数据段movdx, 160h ;读取A

14、DC0809转换结果inal, dx mov AdcData, al;将转换结果保存在内存变量AdcData中moval, 20h ;发EOI命令out20h, 20h popax ;恢复现场popdx popdsiret ;中断返回New_Int0A endp4. 利用PC机现有的硬件和软件资源设计程序,以实现在显示器上显示(选做题)XX(时):XX(分):XX(秒)(1)设计思路 PC机系统板上使用一片8253,其地址为40H43H,其通道0以方式3工作,每55ms向中断控制器8259A IRQ0端发一次中断请求。本设计题要求借用原有电路,重新设置8253的计数器0每10ms产生一次中断,100次中断后

温馨提示

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

评论

0/150

提交评论