您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 求职简历 > 广东工业大学微机上机实验程序4~6
STACKSEGMENTSTACK;实验4.1DW64DUP(?)STACKENDSDATASEGMENTDATA1DB'InputtwonumbersA&B:$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXA1:MOVDX,OFFSETDATA1MOVAH,09HINT21HMOVCX,02HMOVAL,00HA2:MOVBL,ALMOVAH,01HINT21HCMPAL,0DHJZA3DECCXJNZA2ADDAL,BL;求和MOVAH,00HAAA;转换为ASCII码ADDAL,30HMOVBL,ALADDAH,30HMOVBH,AHMOVAH,02H;显示结果MOVDL,BHINT21HMOVAH,02HMOVDL,BLINT21HMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HJMPA1A3:MOVAH,4CHINT21HCODEENDSENDSTARTSTACKSEGMENTSTACK;实验4.2DW64DUP(?)STACKENDSDATASEGMENTDATA1DB'InputdataA:$'DATA2DB'InputdataB:$'DATA3DB'AB$'DATA4DB'AB$'DATA5DB'A=B$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXA0:MOVDX,OFFSETDATA1;输入数据AMOVAH,09HINT21HMOVCX,02HMOVAL,00HA1:MOVBH,ALMOVAH,01HINT21HCMPAL,0DH;判断是否输入回车JZA6LOOPA1MOVBL,ALMOVSI,BXCALLA5;调用子程序:回车换行MOVDX,OFFSETDATA2;输入数据BMOVAH,09HINT21HMOVCX,02HA2:MOVBH,ALMOVAH,01HINT21HCMPAL,0DH;判断是否输入回车JZA6LOOPA2MOVBL,ALMOVDI,BXCALLA5;调用子程序:回车换行CMPSI,DI;比较ABJAA3CMPSI,DIJBA4MOVDX,OFFSETDATA5;A=BMOVAH,09HINT21HCALLA5JMPA0A3:MOVDX,OFFSETDATA3;ABMOVAH,09HINT21HCALLA5JMPA0A4:MOVDX,OFFSETDATA4;ABMOVAH,09HINT21HCALLA5JMPA0A5:MOVAH,02H;子程序:回车换行MOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HRETA6:MOVAH,4CH;退出INT21HCODEENDSENDSTARTSTACKSEGMENTSTACK;实验4.3DW64DUP(?)STACKENDSDATASEGMENTORG0100HDATA1DB'00000000'ORG0108HDATA2DB'00000001'ORG0110HDATA3DB'00000010'ORG0118HDATA4DB'00000011'ORG0120HDATA5DB'00000100'DATA6DB'Inputabinarynumbers:$'DATA7DB'Found$'DATA8DB'NoFound$'DATAENDSDATAS1SEGMENTDATA0DB8DUP(?)DATAS1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATAS1START:MOVAX,DATAMOVDS,AXMOVAX,DATAS1MOVES,AXA0:MOVDX,OFFSETDATA6;输出“Inputabinarynumbers:”MOVAH,09HINT21HMOVCX,08H;输入8位二进制数,存于ES:DATA0MOVDI,OFFSETDATA0A1:MOVAH,01HINT21HCMPAL,0DHJZA5MOVES:[DI],ALINCDILOOPA1;输入8位二进制数,存于ES:DATA0MOVBX,05H;比较MOVSI,OFFSETDATA1MOVAX,SIA2:MOVDI,OFFSETDATA0MOVCX,08HCLDREPZCMPSBJZA3MOVSI,OFFSETDATA1ADDAX,0008HMOVSI,AXDECBXJNZA2;比较CALLA4MOVDX,OFFSETDATA8;NotFoundMOVAH,09HINT21HCALLA4JMPA0A3:CALLA4MOVDX,OFFSETDATA7;FoundMOVAH,09HINT21HCALLA4JMPA0A4:MOVAH,02H;子程序,回车换行MOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HRETA5:MOVAH,4CHINT21HCODEENDSENDSTARTSTACKSSEGMENT;实验4.4DW64DUP(?)STACKSENDSDATASSEGMENTDATA1DB'Inputadata:$'DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXA0:MOVAH,09HMOVDX,OFFSETDATA1;显示'Inputadata:'INT21HMOVCX,02H;输入两位16进制数A1:MOVBH,AL;∨MOVAH,01H;∨INT21H;∨CMPAL,0DH;∨JZA2CMPAL,39HJAA11SUBAL,30HJMPA13A11:CMPAL,60HJAA12SUBAL,37HJMPA13A12:SUBAL,57HA13:LOOPA1XCHGAL,BH;转换为十进制MOVAH,00HMOVBL,10HMULBLADDAL,BHMOVAH,00HMOVBL,0AHDIVBLMOVBH,AHMOVAH,00HMOVBL,0AHDIVBLMOVDH,AHMOVAH,02H;输出数字ADDAL,30HMOVDL,ALINT21HMOVAH,02HADDDH,30HMOVDL,DHINT21HMOVAH,02HADDBH,30HMOVDL,BHINT21HMOVAH,02H;回车换行MOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HJMPA0;返回A0A2:MOVAH,4CHINT21HCODESENDSENDSTARTSTACKSSEGMENT;实验4.5DW64DUP(?)STACKSENDSDATASSEGMENTDATA1DB'Inputastring:$'DATASENDSDATASEGMENTDATA2DB64DUP(?)DATAENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS,ES:DATASTART:MOVAX,DATASMOVDS,AXMOVAX,DATAMOVES,AXA0:MOVDX,OFFSETDATA1MOVAH,09HINT21HMOVSI,OFFSETDATA2MOVCX,0AH;输入10个数A1:MOVAH,01HINT21HCMPAL,0DHJZA4MOVES:[SI],ALINCSILOOPA1MOVDI,OFFSETDATA2;判断是否为#MOVAL,23HMOVCX,0AHCLDREPNESCASBJZA2MOVAH,02H;输出NMOVDL,20HINT21HMOVAH,02HMOVDL,4EHINT21HCALLA3JMPA0A2:MOVAH,02H;输出YMOVDL,20HINT21HMOVAH,02HMOVDL,59HINT21HCALLA3JMPA0A3:MOVAH,02H;回车换行MOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HRETA4:MOVAH,4CHINT21HCODESENDSENDSTARTSTACKSSEGMENT;实验4.6DW64DUP(?)STACKSENDSDATASSEGMENTDATA1DB'Inputfirststring:$'DATA2DB'Inputsecondstring:$'DATA3DB64DUP(?)DATA4DB'Match$'DATA5DB'NoMatch$'DATASENDSDATASEGMENTDATA6DB64DUP(?)DATAENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS,ES:DATASTART:MOVAX,DATASMOVDS,AXMOVAX,DATAMOVES,AXMOVAH,09H;输出'Inputfirststring:'MOVDX,OFFSETDATA1INT21HMOVBL,00H;输入若干字符,以回车结束MOVSI,OFFSETDATA3A0:MOVAH,01HINT21HMOV[SI],ALINCSIINCBLCMPAL,0DHJNZA0MOVAH,09H;输出'Inputsecondstring:'MOVDX,OFFSETDATA2INT21HMOVBH,00H;输入若干字符,以回车结束MOVDI,OFFSETDATA6A1:MOVAH,01HINT21HMOVES:[DI],ALINCDIINCBHCMPAL,0DHJNZA1CMPBL,BH;比较字符数JNZA2MOVSI,OFFSETDATA3;比较每个字符MOVDI,OFFSETDATA6MOVCL,BLMOVCH,00HCLDREPZCMPSBJNZA2MOVAH,09H;输出'Match'MOVDX,OFFSETDATA4INT21HJMPA3A2:MOVAH,09H;输出'NoMatch'MOVDX,OFFSETDATA5INT21HA3:MOVAH,4CHINT21HCODESENDSENDSTARTSTACKSEGMENTSTACK;实验5.1DW32DUP(?)STACKENDSDATASEGMENTDATA1DB'6GOOD$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXPUSHDSMOVAX,0000HMOVDS,AXMOVAX,OFFSETMIRQ6MOVSI,0038HMOV[SI],AXMOVAX,CSMOVSI,003AHMOV[SI],AXMOVAX,OFFSETSIRQ1MOVSI,00C4HMOV[SI],AXMOVAX,CSMOVSI,00C6HMOV[SI],AXCLIPOPDSMOVAL,11H;初始化主片8259OUT20H,ALMOVAL,08HOUT21H,ALMOVAL,04HOUT21H,ALMOVAL,01HOUT21H,ALMOVAL,11H;初始化从片8259OUT0A0H,ALMOVAL,30HOUT0A1H,ALMOVAL,02HOUT0A1H,ALMOVAL,01HOUT0A1H,ALMOVAL,0FDH;开放中断OUT0A1H,ALINAL,21HANDAL,0BFHOUT21H,ALSTIA1:NOP;循环JMPA1MIRQ6:CALLDELAY;中断服务程序MOVAH,09HMOVDX,OFFSETDATA1INT21HMOVAL,20HOUT20H,ALIRETSIRQ1:CALLDELAYMOVAX,0133HINT10HMOVAX,0153HINT10HMOVAX,0120HINT10HMOVAL,20HOUT0A0H,ALOUT20H,ALIRETDELAY:PUSHCX;延时子程序MOVCX,1E00HA0:NOPLOOPA0POPCXRETCODEENDSENDSTA
本文标题:广东工业大学微机上机实验程序4~6
链接地址:https://www.777doc.com/doc-4240397 .html