2024年10月汇编语言程序设计大赛(用汇编语言 编密码程序设计 要求: 输入一个3位密码为123,正确时显示欢迎信息,错误时显示错误信息)

 更新时间:2024-10-12

  ⑴汇编语言程序设计大赛(用汇编语言编密码程序设计要求:输入一个位密码为,正确时显示欢迎信息,错误时显示错误信息

  ⑵用汇编语言编密码程序设计要求:输入一个位密码为,正确时显示欢迎信息,错误时显示错误信息

  ⑶;用汇编语言编密码程序设计要求:输入一个位密码为,正确时显示欢迎信息,错误时显示错误信息;用MASM.编译通过,运行结果如下:;E:masm》h;;Pleaseinput:****;Error!;Pressanykey...;E:masm》h;;Pleaseinput:***;Wele!;Pressanykey...;E:masm》h;;程序如下:datasegmentsDBdh,ah,’Pleaseinput:$’sDBdh,ah,’Wele!$’sDBdh,ah,’Error!$’sDBdh,ah,’Pressanykey...$’numdb;输入字符个数ddb,,dbdup(’’)dataendscodesegmentmainprocfarassumecs:codestart:pushdsmovax,pushaxmovax,datamovds,axleadx,s;Pleaseinputmovah,inthmovbx,offsetdNEXT:MOVAH,;输入字符(不回显INTHcmpal,dhjeinput_endinum;输入字符个数movcmpal,’’jneerrmovah,movdx,offsets;Wele!inthjmpdownerr:movah,movdx,offsets;Error!inthdown:movah,movdx,offsets;Pressanykey...inthmovah,inthretmainendp;============disp_starPROEARMOVDL,’*’MOVAH,INTHRETdisp_starENDP;=============codeendsendstart

  ⑷汇编语言顺序程序设计:从键盘输入一个字符串,讲其中的小写字母转换为大写字母,然后原样输出

  ⑸首先题目就有问题,不可能“接收从键盘输入的字符,以CTR+C结束”。对于命令提示符来说,按下CTRL+C,就会强行退出这个程序,所以不可能以CTRL+C结束的。应该是按回车结束输入。.DATA里有中文标点符号。.输入字符后,按下回车,在C语言里运行的时候会自动换行,但是在汇编里不会,所以你要自己换行。.用MOVAH,AH;INTH中断输入后,输入的有效字符数存放在BUF单元里,所以循环的时候应该把CX设置为BUF单元里的值,而不是COUNT.输入的有效字符从BUF单元开始存储,所以做大小写转换的时候,应该从BUF单元开始,而不应该从BUF单元开始.H和AH都是小写字母,所以跳转指令中不应该有E。同时,有符号、无符号不要混用,所以JBE改为JB,JGE改为JA。.输入字符时,是以回车符作为结束;而输出字符时,是以’$’作为结束,所以对输入的字符,你要把最后一个回车符转为‘$’。修改后的程序如下:DATASEGMENTMESSDB’INPUT:’,,,’$’?NEWLINEDB,,’$’;这行是专门用来换行的MESSDB’OUTPUT:’,,,’$’BUFDBBUFDB?BUFDBDUP(?)COUNTEQU$-BUFDATAENDSCODESEGMENT?ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX?MOVSI,LEADX,MESSMOVAH,HINTHMOVDX,OFFSETBUFMOVAH,AHINTHLEADX,NEWLINE;专门用来换行MOVAH,INTHMOVCL,BUFMOVCH,;BUF单元中存放的是有效输入字符数LOOP:MOVAL,BUF;从BUF单元开始才是有效字符CMPAL,HJBNEXT;JBE改为JBCMPAL,AHJANEXT;JGE改为JASUBAL,HMOVBUF,AL;从BUF单元开始才是有效字符NEXT:INCSILOOPLOOPMOVBUF,’$’;循环结束,把当前的字符修改为’$’LEADX,MESSMOVAH,HINTHMOVDX,OFFSETBUF;从BUF单元开始才是有效字符MOVAH,HINTHMOVAH,CHINTHCODEENDSENDSTART

  ⑹A.。增加BX,AX或ALADDBL,类型配对.MOVAXAH.MOVAX地址FH.MOVAX,HMOVAL,H.MOVAX,.MOVDS,AX;DS不能直接保存立即数量.ADD[BX对.PUSHAX;推不能直接推即时.INAL的DX.OUTHAL.MULAL;的MUL不能直接与即时.MOV,AX;MOV两个内存.ADDDIAX.MOVDS,AX,CS可以不改变.SUBSI],AX;SI二不能同时。SUBBX寄存器间接寻址模式;H;MOV[BX+DI,SI基址寻址模式;H;地址ES:[SI,DI寄存器相对寻址方式,H;MOVDI寄存器相对寻址模式;H;MOVDS:,BX相对基址变址寻址模式;H/》。H,H,H,H;。H,H,H,H,H,H,H,H。H,H,FFH,H,H,H,FFH,FFH,H,H,H,BH,H,BH,H,H,H(由左到右地址AX=H,BX=H六。。装配的语言(AssemblyLanguage面向机器的编程语言。总成:汇编语言翻译成机器语言被称为一个汇编程序。汇编编写汇编语言程序翻译成对应的机器语言翻译程序。输入汇编程序汇编语言编写的源代码,输出的是目标机器语言程序。大会语言为特定的计算机或计算机系列设计的面向机器的语言指令,汇编器和汇编指令的执行。汇编语言程序设计,虽然不是一个高层次的编程语言是简单的,直观的,但目标程序编译占用更少的内存和更高的工作效率,而且可以直接引用各种计算机设备资源。它通常用于书写系统的核心程序的一部分,或写作需要花费大量的运行时间和实时性要求块。。。独立的CMPSB是通过横向比较;耦合代表的周期比较,或比较。是指任何不寻常或意外的迫切需要处理的事件在计算机系统的执行过程中让CPU暂时中断当前正在执行的程序,从而执行相应的处理程序。要处理的,然后返回到原来的中断继续调度的过程中,一个新的流程执行。。宏和子程序是为了简化源代码编写的程序,以提高程序的可维护性的,但它们之间有以下本质的区别:,在源代码中,通过写宏名宏的CALL指令调用的子程序;,加入其定义体的宏扩展的宏汇编器,宏引用的次数,相应扩大的次数,使该宏会不会缩短目标程序的子程序代码在目标程序中只出现一次,调用子程序执行相同的数据块,因此,该计划的目标也得到了简化宏引用参数,以达到通过“的说法”替换“参数”灵活的参数化形式和子程序调用的参数传递通过寄存器,堆栈或约定存储单元;,扩展的宏引用语句,该计划的目标是不再宏引用语句,运行时,将没有额外的时间开销,和,子程序调用仍然存在,在目标程序中,子程序调用和返回需要一定的时间。总之,当程序片段长度,速度是关键因素,可以使用宏来简化源,但是当程序片段是更长的时间,所述存储空间是关键因素的子程序的方法可以用于简化源和目标的计划。。............

  ⑺电子设计大赛要准备哪些

  ⑻大赛最终提交、实验报告、硬件、程序。硬件课程主要有模电,数电;软件主要用到单片机编程。关于写程序的软件,我推荐两个,单片机(WAVE,PIC单片机(MPLAB),可用汇编语言或C语言编写。关于硬件,就要熟悉掌握相关绘图和仿真的软件,比如PROTEL(原理图绘制与PCB版图绘制,熟悉各类常用元器件

  ⑼~~~~~~~~~汇编能人进~~~~~·~~~~~·

  ⑽以下是汇编解决四则运算的源程序:B_PEQUBYTEPTRW_PEQUWORDPTRD_PEQUDWORDPTRCODESEGMENTASSUMECS:CODE,DS:CODEH;主程序开始NEWSTAR:JMPSTAREVENNUMDW,NUMDW,NUMDW,JGVDW,YSFLABELWORDYSFDBYSFDBJUVDBUVDB;使DS:SI指向第一有效字符OVERSLABELNEARCLDPUSHAXOVERS:LODSBCMPAL,’’JZOVERSCMPAL,JZOVERSDECSICMPAL,POPAXRET;输出一个制表符TABLABELNEARMOVAL,JMPSHORTDISP;输出一个回车换行符CRLFLABELNEARMOVAL,CALLDISPMOVAL,;显示一个字符DISPLABELNEARPUSHAXPUSHDXMOVAH,MOVDL,ALINTHPOPDXPOPAXRET;检查是否为运算符ISYSFLABELNEARCLDLODSBCALLISJJJZISYSFCALLISIIJZISYSFDECSIISYSF:RET;检查是否是加减运算ISJJLABELNEARCMPAL,’+’JZISYSFCMPAL,’-’RET;检查是否为乘除运算ISIILABELNEARCMPAL,’*’JZISYSFCMPAL,’/’JZISYSFCMPAL,’’RET;数据输出;CX=十进制;CX=十六进制DOUTLABELNEARPUSHAXPUSHBXPUSHDXPUSHBPXORBP,BPDOUT:INCBPPUSHAXMOVAX,DXXORDX,DXDIVCXMOVBX,AXPOPAXDIVCXPUSHDXMOVDX,BXORBX,AXJNZDOUTDOUT:POPAXADDAL,’’CMPAL,’’JBEDOUTADDAL,’A’-’’-DOUT:CALLDISPDECBPJNZDOUTPOPBPPOPDXPOPBXPOPAXRET;输入数据在DX:AX中返回;CX=数据为进制;CX#数据为进制DATELABELNEARPUSHBXPUSHBPPUSHDIXORAX,AXXORDX,DXDATE:MOVDI,AXLODSBCMPAL,’’JBDATECMPAL,’’JADATEDATE:ANDAX,FHSHLDI,RCLDX,MOVBX,DIMOVBP,DXSHLDI,RCLDX,SHLDI,RCLDX,JCXZDATESHLDI,RCLDX,JmpshortDATEDATE:ADDDI,BXADCDX,BPDATE:ADDAX,DIADCDX,JMPDATEDATE:ADDAL,JMPDATEDATE:JCXZDATECMPAL,’A’JBDATECMPAL,’F’JBEDATECMPAL,’a’JBDATECMPAL,’f’JBEDATEDATE:MOVAX,DIDECSIORDI,DXPOPDIPOPBPPOPBXRET;数据与数据根据YSF进行加减运算JSJJLABELNEARMOVAX,NUMMOVDX,NUM+CMPYSF,’+’JZJSJJSUBNUM,AXSBBNUM+,DXJMPSHORTJSJJJSJJ:ADDNUM,AXADUM+,DXJSJJ:RET;数据与数据根据YSF进行乘除运算JSIILABELNEARMOVBX,OFFSETNUMJMPSHORTJSII_;数据与数据根据YSF进行乘除运算JSIILABELNEARMOVBX,OFFSETNUMJSII_:DBHMOVAX,DBHMOVCX,CMPYSF,’*’JNZJSII_DBHIMULCXJMPSHORTJSII_JSII_:DBHCWDDBHIDIVCXCMPYSF,’/’JZJSII_DBHXCHGDX,AXJSII_:DBHMOV,AXRET;显示结果XUJGLABELNEARMOVAX,JGVMOVDX,JGV+MOVCX,CMPUV,JZXUJGMOVCX,XUJG:TESTDX,HJZXUJGCMPUV,JZXUJGCALLDOUTXUJG:NOTAXNOTDXADDAX,ADCDX,PUSHAXCMPUV,JZXUJGMOVAL,’’CALLDISPMOVAL,’(’CALLDISPXUJG:MOVAL,’-’CALLDISPPOPAXCMPUV,JZXUJGCALLDOUTMOVAL,’)’CALLDISPRETXUJG:CALLDOUTRET;计算结果放入DX:AX中JSJGLABELNEARCALLJSJJMOVAX,NUMMOVDX,NUM+RET;从DS:SI处取一个数据LOADATELABELNEARLODSBCMPAL,’(’JZLOADATEDECSIPUSHCXXORCX,CXCMPUV,JZLOADATEINX;取进制数LOADATE:CALLDATE;取数据放入DX:AX中POPCXRETLOADATE:PUSHNUM;保存数据数据及运算符PUSHNUM+PUSHNUMPUSHNUM+PUSHYSFINCJUVMOVJGV,;结果值清零MOVJGV+,;进行四则运算SZYSLABELNEARCALLISYSF;首字符是运算符?JZSZYSCALLLOADATE;不是,取数并保存MOVNUM,AXMOVNUM+,DXSZYS:XORAX,AX;数据清零MOVNUM,AXMOVNUM+,AXCALLISYSF;下个是运算符?JZSZYSJNZSZYSSZYS:PUSHAXMOVAX,JGV;将结果作为数据MOVNUM,AXMOVAX,JGV+MOVNUM+,AXPOPAXSZYS:MOVYSF,ALMOVYSF,ALCALLISJJ;是加减运算转JZSZYSCALLLOADATE;取数据MOVNUM,AXMOVNUM+,DXCALLJSII;数据与数据根据YSF进行乘除运算JMPSZYS;结果保存在数据中SZYS:CALLLOADATE;取数据并保存MOVNUM,AXMOVNUM+,DXSZYS_:CALLISYSFJNZSZYSCALLISJJ;运算符是加减运算?JNZSZYS;不是转PUSHAXCALLJSJJ;数据与数据根据YSF进行加减运算POPAX;结果保存在数据中MOVYSF,AL;保存新的运算符JMPSZYSSZYS:MOVYSF,AL;保存运算符CALLLOADATE;取数据MOVNUM,AXMOVNUM+,DXCALLJSII;数据与数据根据YSF进行乘除运算JMPSZYS_;结果保存在数据中SZYS:MOVCL,ALCMPAL,JNZSZYSSZYS:CALLJSJGCMPJUV,JZSZYSDECJUVPOPYSFPOPNUM+POPNUMPOPNUM+POPNUMRETSZYS:CMPCL,’)’JZSZYSMOVJGV,AXMOVJGV+,DXJNZSZYSSZYS:CMPAL,’)’JNZSZYSINCSIJMPSZYSSZYS:MOVNUM,AXMOVNUM+,DXJMPSZYSSZYS:STCRETSZYS:CLCRET;数制处理UVILLABELNEARPUSHSIUVIL:LODSBCMPAL,’’JZUVILCMPAL,JZUVILCMPAL,JZUVILJNZUVILUVIL:MOVBX,SICALLOVERSJZUVILLODSWCALLOVERSPOPSIJNZSZYSCMPAX,’’JNZSZYSPUSHSIMOVUV,UVIL:MOVAL,MOV,ALUVIL:POPSICLCRET;预置结果YVJGLABELNEARMOVAH,HINTHMOVAX,ES:MOVDS,AXMOVAX,DS:MOVCS:JGV,AXMOVAX,DS:MOVCS:JGV+,AXPUSHCSPOPDSPUSHCSPOPESRET;保存结果BCJGLABELNEARMOVAH,HINTHMOVAX,ES:MOVDS,AXMOVAX,CS:JGVMOVDS:,AXMOVAX,CS:JGV+MOVDS:,AXPUSHCSPOPDSPUSHCSPOPESRETSTAR:MOVSI,HCLDCALLOVERSJNZSTARSTAR:MOVDX,OFFSETMESSJMPSTARSTAR:CALLYVJGCALLUVILJBSTARMOVSAVESP,SPCALLSZYSMOVSP,SAVESPMOVDX,OFFSETMESSJBSTARCALLCRLFCALLXUJGCALLBCJGMOVDX,OFFSETMESSSTAR:MOVAH,INTHINTHSAVESPDWMESSDB,,’Syntax:’,,DB’JS《Expression》’,,,’$’MESSDB’Errorinexpression!$’MESSDB,,’$’CODEENDSENDNEWSTAR这是从网上下载下来的一个计算程序,能实现加、减、乘、除的计算。该程序接受的是进制数。执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:c:masm》js+c:masm》js*Ac:masm》js-:masm》js/

  ⑾汇编语言程序从设计到最后执行需经过哪几个步骤

  ⑿在纸上完成程序初稿;、在ide环境中录入程序;、编译程序并检查修改编译错误;、链接程序形成可执行文件,并继续修改可能影响生成可执行文件的错误;、运行程序并检查修改逻辑错误直至实现程序所需要的功能。

  ⒀汇编语言音乐动画程序设计(急用

  ⒁早期的PC系列机中有一个专门用于定时的集成电路,型号是/。它有三个通道,第一个通道用于控制系统时钟正常运转;第二个通道用于存储器刷新;这两个通道与我们现在讨论的问题无关。第三个通道是最有意思的,它通过一组电路与喇叭相联。图-所示即为PC机中完整的发声电路。定时器通道的G端与H端口的bit位相联,如果将H端口的bit位置成,那么定时器通道就被启动,此时将有一组信号从OUT端输出,信号的频率可以用程序控制;若H端口bit位为,则定时器被关闭,OUT端就会恒定为此电路用在这里相当一个“可控开关“,如果将H端口的bit、bit位都置成,则相当于既打开了定时器又打开了开关,这时候定时器产生的声音信号就会送到放大器推动喇叭发声;若将bit位置,则定时器关闭,此时OUT端为,这时候如果连续改变bit位的状态,也可以从喇叭中听到声音,这就是我们在第二章中所用的方法;若将bit位置,则开关关闭,此时即使打开定时器也不能听到声音。这一点可以通过DEBUG加以验证:进入DEBUG,在“-“后打入“O“,即可听到喇叭发出连续的叫声。(在纯DOS下实验向H端口输出““,相当于打开定时器和开关,此时将有连续的声音发出,这个声音的频率约是Hz,和我们刚开机时听到的蜂鸣音频率一样。有趣的是声音一旦发出就不会停止,而且不干扰用户的任何操作。停止这种声音的唯一方法就是进入DEBUG,打入命令“O(也可以是或“。之所以有这种现象是因为定时器的工作并不需CPU直接参与,CPU只要给定时设定好工作状态和频率值并打开定时器,此时定时器就会自主工作,CPU即可去做别的事情。这个特性十分有用,它是实现“背景音乐“的前提。那么如何改变声音的频率呢?请注意定时器的通道还有一个输入端CLK,这一端输入了一个固定的信号,频率是.Hz。输出信号与此信号具有如下关系:--------------------------------------------------------------------------------F(OUT)=F(CLK)/N--------------------------------------------------------------------------------其中N是一个bit数据,它的值可以由程序设定。方法很简单:将此位数据分成高、低两个位,先把低位送至H端口,紧接着再把高位送至H端口,输出信号的频率就会改变。我们可以试一下:C:ASM》DEBUG-O-O-O设定新的N值是H,对应的F(OUT是./H=Hz。声音马上变尖了。有一点必须说明,定时器具有多种工作状态,并非每种工作状态都能产生声音,所以当我们想通过定时器产生声音时,我们应首先“初始化“定时器,为其建立正确的工作状态。初始化定时器并不复杂,向端口H输出数据BH即可。这个数据的二进制形式是,有些书籍把这个数称为“幻数“(MAGICBYTE。有了上面介绍的这些知识,我们就可以编程控制定时器发出给定频率的声音。程序PROG可以使喇叭发出Hz的声音------------------------------------------------AE:MOVAL,B;AL寄存器装入定时器初始化设置码AE:OUT,AL;将设置码输出到H端口初始化AE:MOVAX,A;.Hz/=hz=AhexadecimalAX寄存器置入N值AE:OUT,AL;将N值分两次输出到H端口因为是位AE:MOVAL,AHAE:BOUT,ALAE:DINAL,;取得H端口的当前状态AE:FPUSHAX;入栈AE:ORAL,;AE:OUT,AL;打开定时器及电子开关AE:MOVAH,;AH=hReturn:AL=characterread等待输入;characterisechoedtostandardoutput(回显)AE:INTAE:POPAX;恢复HAE:OUT,ALAE:BRETAE:C我们已经讨论了如何通过定时器的通道发出确定频率的声音,这一节我们要一起学习怎样精确地定时,这样才能解决演奏音乐的问题。PC中的定时电路有三个通道,通道用于发声,通道用于控制系统内部的时钟。大家都十分清楚用DOS的“TIME“命令可以观察并修改系统内部的一个时钟,这个时钟之所以能连续运转主要依靠定时器的通道。通道的工作方式和通道一样,但是系统启动时设定其发出一个频率固定为.Hz的信号,这个信号直接送到系统中的“中断控制器“。每一个“Hz“都产生一个硬件中断,一般称这个硬中断为“IRQ“,对应的中断号是H。也就是说,当计算机启动后,我们的机器看上去十分平静,但实际上CPU非常忙碌。在定时器的控制下每隔毫秒就要执行一个H号中断,这个中断的主要工作就是连续地计数。在内存“H:CH“处有四字节的存储空间专门用于保存计数值,CPU每执行一次H中断,这四字节的计数值就被加,不难算出这个计数值每增加后时间恰好过了分钟,每增加后时间恰好过了小时。系统内部的时钟之所以能准确走时,靠得就是H中断和这四字节的计数值。因此我们要想精确的定时,必须依靠时钟计数值才行;---一个能准确发出Hz声音的程序,声音持续时间为秒钟---------------PORTBequHcodesegmentassumecs:code,ds:codehmainproearmoval,b;初始化定时器outh,almovax,ah;设置N值为AHouth,almoval,ahouth,alinal,PORT_B;打开定时器及与门oral,outPORT_B,al;------------------以下为定时部分---------------movah,;选择AH中断的号功能intah;调用AH中断取得当前时钟计数adddx,;在当前时钟计数上加---秒movbx,dx;保存定时终了时的计数值delay:intah;两次调用AH中断取得时钟计数值cmpdx,bx;到达定时终了时的计数值了吗?jnedelay;没有到达,则返回DELAY处继续;----------------------------------------------------inal,PORT_B;定时终止,关闭定时器及与门andal,fch;outPORT_B,alinth;结束程序mainendpcodeends参考资料:PC机汇编语言实践精解/李春生编著。datasegmentfreqdw,dw,,,,,,dw,,,,,,,dw,,,,,,dw,,,,,,,dw,,,,,dw,,,,,,,dw,,,,,dw,,dw,,,,,dw,,,,,,dw,,,,,dw,,dw,,,,,dw,,,,,,dw,,,,dw,,dw,,,,,dw,,,,,,dw,,,,dw,,dw,,,,,dw,,,,,,dw,,,,dw,,dw,,,,,dw,,,,,dwdw,,,,,,dw,-timedw,dw,,,,,,dw,,,,,,,dw,,,,,,dw,,,,,,,dw,,,,,dw,,,,,,,dw,,,,,dw,,dw,,,,,dw,,,,,,dw,,,,,dw,,dw,,,,,dw,,,,,,dw,,,,dw,,dw,,,,,dw,,,,,,dw,,,,dw,,dw,,,,,dw,,,,,,dw,,,,dw,,dw,,,,,dw,,,,,dwdw,,,,,,dwdataendscodesegmentassumecs:code,ds:datamainprocfarstart:movax,datamovds,axmovsi,offsetfreqmovdi,offsettimel:movcx,cmpcx,-jeexitmovbx,callgensoundaddsi,adddi,jmplexit:movax,chinthmainendpgensoundproearpushdxmoval,bhouth,almovdx,hmovax,hdivcxouth,almoval,ahouth,alinal,hmovah,aloral,outh,all:pushdxpushaxmovdx,hmovax,fhs:subax,sbbdx,jnzspopaxpopdxdecbxjnzlmoval,ahouth,alpopdxretgensoundendpcodeendsendstart

  ⒂汇编语言秒表程序设计

  ⒃主程序:pushds;保存数据段movax,movds,ax;数据段清零movax,offsetirq;取中断程序入口地址addax,;加装时IP=地址movsi,c;填中断中断矢量movw,ax;填偏移量矢量movax,;段地址CS=Hmovsi,emovw,ax;填段地址矢量popds;弹栈inal,;读中断屏蔽字andal,f;开中断out,almoval,b;的计数器为方式,采用二进制计数,先低后高写入计数值out,al;写入方式控制字movax,ecBDout,al;写入低字节计数值moval,ahout,al;写入高字节计数值moval,;的A口为方式输出,B口为方式输出,C口下部输入out,al;写方式控制字callfirst;调用first子程序,赋计数初值begi:hlt延时等待sti;开中断movah,int;检测是否按了键盘jzbegimovah,;读键值intcmpal,d;是否按了回车jnzAmovsi,not;偏移地址为的内存单元内容取反jmpbegiA:cmpal,b;是否按了ESC键jnzAcallfirst;重新赋初值,相当于清零A:jmpbegi中断程序:irq:calldisp;调用disp子程序,用来在数码管显示数据movsi,cmp,;判断是否按了第次回车键jeAcalladdn;调用addn子程序,用来计数A:moval,out,alcli;关中断iret;返回addn程序:addn:movsi,add,;百分之一秒加cmp,a;判断是否大于jzAjmpAA:mov,Add,;十分之一秒加cmp,a;判断是否大于jzAjmpAA:mov,add,;秒位加cmp,a;判断是否大于jzAjmpAA:mov,add,;十秒位加cmp,;判断是否大于jzAjmpAA:mov,;大于:重新开始A:ret赋初值程序:first:movsi,moval,mov,almov,almov,almov,almov,alret显示程序:disp:pushax;保存AXmovsi,;指向数据缓冲区movdl,f;指向数码管moval,dl;al=again:out,al;写端口Amoval,movbx,;指向数码缓冲区bx=andax,ff;ax=aladdbx,ax;得到显示代码bx=almoval,out,al;写端口Bcalldally:调用延时程序dallyincsimoval,dltestal,jzoutroral,;指向下一个数码管movdl,aljmpagainout:popax;弹出AXretdally:pushcx;延时程序pushaxmovcx,t:movax,tdecaxjnztlooptpopaxpopcxret数码缓冲区::f,,bf,,d,d,,f,f二、设计思想电子秒表要实现的功能:用键盘中断来控制整个程序,按一下回车键启动电子秒表,再按一下暂停,按一下ESC键清零,用七段数码管显示时间。整个程序涉及到、与三个芯片。的OUT,CLK分别连接的IRQ与PCLK,的GATE连接正伏电压,采用计数器每隔.秒产生一次中断并且计数,写入以偏移地址H开始的个内存单元,然后利用将内存单元的数据输出到七段数码管。由于键盘中断优先于的号中断,所以程序只有在按一下回车键才启动电子秒表,再按一下暂停,按一下ESC键清零,如果超出了秒,整个程序自动重新开始。三、所用芯片工作原理:接口电路在CPU和I/O设备之间起着信号的变换和传输的作用。任何接口电路与CPU之间的信息传输方式都是并行的,即CPU与接口电路之间以数据字节/字为单位传送信息。接口电路与I/O设备之间的信息传送方式,有并行和串行两种,相应的接口电路称为并行接口和串行接口。并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。在输入过程中,输入设备把数据送给接口,并且使状态线“输入准备好”有效。接口把数据存放在“输入缓冲寄存器”中,同时使“输入回答”线有效,作为对外设的响应。外设在收到这个回答信号后,就撤消数据和“输入准备好”信号。数据到达接口中后,接口会在“状态寄存器”中设置输入准备好标志,或者向CPU发一个中断请求。CPU可用查询方式或中断方式从接口中读取数据。接口中的数据被读取后,接口会自动清除状态寄存器中的标志,且撤消对CPU的中断请求。在输出过程中,每当输出寄存器可以接收数据,接口就会将状态寄存器中“输出准备好”状态置或向CPU发一个中断请求,CPU可用查询或中断方式向接口输出数据。当CPU输出的数据到达接口后,接口会清除“输出准备好”状态,把数据送往外设,并向外设发一个“数据输出准备好”信号。外设受到驱动后,便接收数据,并向接口电路发一个“输出回答”信号,接口收到该回答信号后,又将状态寄存器中“输出准备好”置位,以便CPU输出下一个数据。:对CLK信号进行“减计数”。首先CPU把“控制字”,写入“控制寄存器”,把“计数初始值”写入“初值寄存器”,然后,定时/计数器按控制字要求计数。计数从“计数初始值开始,每当CLK信号出现一次,计数值减,当计数值减为时,从OUT端输出规定的信号(具体形式与工作模式有关。当CLK信号出现时,计数值是否减(即是否计数,受到“门控信号”GATE的影响,一般,仅当GATE有效时,才减.门控信号GATE如何影响计数操作,以及输出端OUT在各种情况下输出的信号形式与定时/计数器的工作模式有关。:.IR线上提出了中断请求的中断源,即出现请求,IRR中断请求寄存器(共有位D~D对应于连接在IR~IR线上的外设的中断请求,哪一根输入线有请求,哪一根输入线就置。.若OCW(IMR中断屏蔽寄存器未使该中断请求屏蔽(对应位为时不屏蔽,该请求被送入PR(优先权分析器比较。否则,不送入PR比较。.PR把新进入的请求与ISR(服务中寄存器中正在被处理的中断进行比较。如果新进入的请求优先级较低,则不向CPU提出请求。如果新进入的请求优先级较高,则使INT引脚输出高电平,向CPU提出请求。.如果CPU内部的标志寄存器中的IF(中断允许标志为,CPU不响应该请求。若IF=,CPU在执行完当前指令后,从CPU的INTA引脚上向发出两个负脉冲。.第一个INTA负脉冲到达时,完成以下三项工作:a.使IRR(中断请求寄存器的锁存功能失效。这样一来,在IR~IR上的请求信号就不会被接收。直到第二个INTA负脉冲到达时,才又使IRR的锁存功能有效。b.使ISR(服务中寄存器中的相应位置。c.使IRR中的相应位清。.第二个INTA负脉冲到达时,完成以下工作:a.将中断类型码(ICW中的值送到数据总线上,CPU将其保存在“内部暂存器”中。b.如果ICW(它设定级中断联方式之特定完全嵌套方式,将在的工作方式中详述ICW中设置了中断自动结束方式,则将ISR的相应位清。

  ⒄请教几道汇编语言的题目!先谢!

  ⒅你的题有点多,又有好多错误,看不下去了,给你做了一题,纠正了一下,你看是不是原题。HMOVBX,OFFSETNUM’求NUM偏移即“MOVBX,OFFSETNUM“的指令长度+HNUMDWH’DWH即ADCAL,不影响结果MOVCL,BYTEPTRNUM+’求NUM+的值,NUM是个地址标量H…MOVCH,TYPENUM’求NUM的长度即MOVAX,NUMHLT’暂停,不影响结果AX=H,BX=H,CX=H

  ⒆电子设计大赛需要单片机的哪些方面的知识

  ⒇其实电子设计大赛是考察一个人的综合素质哈。首先是专业知识上:电路基础,模拟电路,数字电路,高频电路,单片机(单片机,单片机,PIC,AVR。。。,当然C语言很重要哈,还要懂的制板软件,制板过程,因为大赛的时候都是自己做板子,不可能拿到外边去做。传感器采集的知识也是很重要的。总之,在电子设计大赛的时候,懂的越多越好,而且要能把书本知识熟练转换,具有一定的设计能力和调试能力,不过你也不一定全部都懂,主要你们小组每个人擅长一部分就可以了。如果全懂,那你一个人一组就OK了。再次是考验你的身体素质,全国大学生电子设计竞赛是四天三夜,我当时总共加起来就睡了个小时,这在我们所有小组中睡的已经算多的了。最后就是平时要做好准备,做积累一些经验,多看看别人的设计思路,然后自己多想一电子设计大赛需要的有关知识大概有:电工基础,模拟电子技术,数字电子技术,电力电子技术,高频电子技术,电子线路的设计,单片机应用及接口技术,传感器技术,Protel,DXP,汇编语言,C语言。对于单片机这一块,目前电子设计大赛还主要是以单片机为主流。但也有些地方的电子设计大赛,牵扯到了PIC和AVR单片机相关的知识。就目前的形势来看,在以后的电子设计大赛中会很有可能会把PIC,AVR这样位的单片机作为主流,而逐渐取代单片机。除此之外,ARM技术,物联网技术也将会在未来的电子设计大赛中逐渐出现。电子设计大赛只能会越来越难,越来越贴近实用,越来越贴近我们的实际生活。最后,希望我的回答能对你有所帮助。

您可能感兴趣的文章:

相关文章