您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 微机原理五类常用程序
1五类常用程序:传输数据求最大最小值统计正负数排序加法程序存储器清零或置FF1.1将1000H-1063H中的各字节内容清0(或置FFH)1.2传输数据块将1000H-1063H中的字节内容传递到4000H-4063H2.找最大值最小值从2500H-2563H中存放着数据,把其中的最大值找出来,地址存放在3000H中3.统计负数正数从2100H开始存放100个无符号数,统计有多少个正数,多少个负数。负数个数存入2200H4.1求1AH+02H+31H+14H+2FH+06H=???数据1AH、0FH、24H、4EH、18H、2DH放在[3000H]-[3005H]处4.2求十进制计算25748967+49786495数据25748967放在[2400]-[2403]数据49786495放在[2500]-[2503]4.3将BLOCK单元开始的10个单元数相加,结果存放入BLOCK单元。若相加过程中发生溢出,停止运算,并在DL中设置溢出标志FF.5.冒泡排序方法5.1字节型变量VAR1、VAR2和VAR3存放有3个无符号数,将其中的内容按从大到小重新排列。解:经重新排列后,VAR1的值最大,VAR3的值最小。由于变量中存放的数据为无符号数,因此应该采用JA、JAE、JB、JBE等指令。编程思路:通过在三个数中找出最大值,将它与VAR1单元进行交换;然后对剩余的两个数进行比较,将较大值存放在VAR2中。汇编语言程序如下:5.2存放在2040H-2045H中的字节数据由大到小排列21.1将1000H-1063H中的各字节内容清0(或置FFH)MOVSI,1000HMOVCX,0064HXORAL,ALL1:MOV[SI],ALINCSIDECCXJNZL1HLT1.2传输数据块将1000H-1063H中的字节数据内容传递到4000H-4063HMOVSI,1000HMOVDI,4000HMOVCX,0064HL1:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZL1HLT2.从2100H开始存放100个无符号数,求最大值并存入单元2200HMOVSI,2100HMOVCX,0064HXORAL,ALL1:CMPAL,[SI]JNCL2MOVAL,[SI]L2:INCSIDECCXJNZL1MOV[2200],ALHLT如果求最小值XORAL,AL改为MOVAL,0FFHJNCL2改为JCL2或者MOV[SI],ALINCSI相应MOVCX,0063H33.统计负数正数从2100H开始存放100个无符号数,统计有多少个正数,多少个负数。负数个数存入2200HMOVSI,2100HMOVCX,0064HXORDL,DLL1:MOVAL,[SI]ANDAL,AL(/ANDAL,FFH/TESTAL,80H)JNSL2INCDLL2:INCSILOOPL1MOV[2200],DLHLTLOOPL1可以改为DECCXJNZL1求最大最小值JNCJC求正负数用JSJNS4.11AH+0FH+24H+4EH+18H+2DH=???0E计算数据1AH、0FH、24H、4EH、18H、2DH放在[3000H]-[3005H]处参考程序:MOVSI,3000HMOVCX,0006HXORAL,ALAA:ADDAL,[SI]INCSIDECCXJNZAAMOV[3040H],ALHLT44.2求十进制计算25748967+49786495数据25748967放在[2400]-[2403]数据49786495放在[2500]-[2503]MOVSI,2400HMOVDI,2500HMOVBX,2600HMOVCX,0004HXORAL,ALAA:MOVAL,[SI]ADCAL,[DI]DAAMOV[BX],ALINCSIINCDIINCBXLOOPAAHLT5.冒泡排序方法5.1字节型变量VAR1、VAR2和VAR3存放有3个无符号数,将其中的内容按从大到小重新排列。解:经重新排列后,VAR1的值最大,VAR3的值最小。由于变量中存放的数据为无符号数,因此应该采用JA、JAE、JB、JBE等指令。编程思路:通过在三个数中找出最大值,将它与VAR1单元进行交换;然后对剩余的两个数进行比较,将较大值存放在VAR2中。汇编语言程序如下:STACKSEGMENTSTACK'STACK'DW100HDUP(?)TOPLABELWORDSTACKENDSDATASEGMENTVAR1DB46H;先假设一组值,以便检验程序设计的正确性VAR2DB15HVAR3DB0A2HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AX5LEASP,TOPMOVAL,VAR1;用户编写的程序CMPAL,VAR2JAENO_CHG1XCHGAL,VAR2NO_CHG1:CMPAL,VAR3JAENO_CHG2XCHGAL,VAR3NO_CHG2:MOVVAR1,AL;最大值保存到VAR1MOVAL,VAR2CMPAL,VAR3JAENO_CHG3XCHGAL,VAR3MOVVAR2,AL;次大值保存到VAR2NO_CHG3:MOVAH,4CH;返回DOS操作系统INT21HCODEENDSENDSTART程序执行后,(VAR1)=0A2H,(VAR2)=46H,(VAR3)=15H,说明程序设计正确。一般来说,在程序结束处,应该使之返回到DOS状态,以便进行其它操作。当要排序的数据为有符号数时,只需要将程序中相应的JAE指令改成JGE指令。存放在2040H-2045H中的字节数据由大到小排列AA:MOVDL,00HMOVSI,2400HMOVCX,0006HDECCXL0:MOVAL,[SI]INCSICMPAL,[SI]JNCL1XCHGAL,[SI]DECSIMOV[SI],ALINCSIMOVDL,01H;L0:LOOPL1DECDLJZAAHLT6
本文标题:微机原理五类常用程序
链接地址:https://www.777doc.com/doc-4573782 .html