四、程序分析1、已知数据段内有如下定义:BUFDB'THEQUICKBROWNFOX'L1EQU$-BUFSDB‘HELLO’L2EQU$-SL3EQU$-BUF分别写出(十进制数)L1=(1);L2=(2);L3=(3);2、执行如下指令后,请填写标志位的取值情况:MOVDX,4652HADDDX,0f0f0H执行后,ZF=(1);SF=(2);CF=(3);OF=(4)。3、检测AL中的最低位是否为1,若为1则转移。MOVAL,data(1)AL,01H(2)Next......Next:MOVBL,0......4、在STRBUF为首地址的数据区中,查找‘#’字符。若查到,将其偏移地址送ADRBUF;若未找到,向ADRBUF单元送-1。请填空完善程序DATASEGMENTSTRBUFDB‘……’COUNTEQU___(1)___ADRBUFDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:……MOVDI,(2)STRBUFMOVCX,COUNTMOVAL,___(3)___CLDREPNZSCANSBJZFOUND……FOUND:__(4)__MOVADRBUF,DICODEEDNSENDSTART5、以下代码是利用MOV指令来为中断类型1CH设置中断向量,请将指令补充完整。MOVAX,0MOVES,AXMOVBX,(1);;中断入口地址MOVAX,(2);MOVES:WORDPRT[BX],AX;设置中断处理程序INTHAND的入口地址MOVAX,SEGINTHAND;MOVES:(3),AX┆INTHAND:;中断处理程序┆IRET五、综合应用题1、采用8254作定时/计数器,其接口地址为180H~183H。要求计数器0每5ms输出一个CLK脉冲宽的负脉冲;用计数器1产生10KHz的连续方波信号,计数器2在定时10ms后产生输出高电平。输入8254的时钟频率为2MHz。写出每个计数器的工作方式、计数初值及控制字,并编写初始化程序。方式命令的具体格式计算计数初值:CNT0:5ms/0.5μs=10000;CNT1:2MHz/10kHz=200;CNT2:10ms/0.5μs=20000确定控制字:CNT0:方式2,16位计数值,控制字:34HCNT1:方式3,低8位计数值,控制字:56HCNT2:方式0,16位计数值,控制字:B0H初始化程序:CNT0:MOVDX,0183HMOVAL,34HOUTDX,ALMOVDX,0180HMOVAX,10000OUTDX,ALMOVAL,AHOUTDX,ALCNT1:MOVDX,0183HMOVAL,56HOUTDX,ALMOVDX,0181HMOVAL,200OUTDX,ALCNT2:MOVDX,0183HMOVAL,B0HOUTDX,ALMOVDX,0182HMOVAX,20000OUTDX,ALMOVAL,AHOUTDX,AL2、8255A的A口和B口工作在方式0,A口为输入端口,接有四个开关。B口为输出端,接有一个七段发光二极管,连接电路如图所示,7段数码管编码如下表。试编一程序要求七段发光二极管显示开关所拨通的数字,数码管显示采用查表法。注:8255A工作方式控制字格式如下:agDPfedbc……Tabdb06H,5Bh,4Fh,…………moval,90h;设置8255方式字movdx,ctrl_portoutdx,almovdx,a_portinal,dx;取键盘信息andal,0fh;屏蔽高4位movbx,offsettab1;取段码表首地址xlat;查表得段码movdx,b_port;输出显示outdx,al