正文描述:《部分汇编程序解答》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.有两个4字节数分别放在自FIRST和SECOND开始的存储区,低字节在低地址处,编一程序段将两数相加,将结果存入从FIRST开始的存储区。•MOVAX,FIRST•ADDAX,SECOND•MOVFIRST,AX•MOVAX,FIRST+2•ADCAX,SECOND+2•MOVFIRST+2,AX•2.有两组50个字节的数据,分别放在自FIRST和SECOND开始的存储区中,试比较两组数据是否相同,若相同则0->AL,否则FFH->AL.•MOVSI,OFFSETFIRST•MOVDI,OFFSETSECOND•MOVCX,50•P:MOVAL,[SI
2、]•CMPAL,[DI]•JZNEXT•MOVAL,0FFH•JMPSTOP•NEXT:INCSI•INCDI•DECCX•JNZP•MOVAL,0•STOP:HLT••3.设在AX和BX中分别存有用组合BCD码表示的4位十进制数,编写程序段将两个数相加,结果存入AX中。•ADDAL,BL•DAA•MOVCL,AL•MOVAL,AH•ADCAL,BH•DAA•MOVAH,AL•MOVAL,CL••4.将从DATA1开始的100个字节的数据传送到从DATA2开始的存储区中。•MOVSI,OFFSETDATA1•MOVSI,OFFSETDATA2•MOVCX,
3、64H•CLD•PL1:MOVSBDECCX•JNZPL1•HLT••5.比较存储器中的两串数是否相同,如完全相同则AL=0,否则AL=FFH•MOVSI,OFFSETDATA1•MOVDI,OFFSETDATA2•CLD•MOVCX,64H•REPZCMPSB•JZEQQ•MOVAL,0FFH•JMPSTOP•EQQ:MOVAL,0STOP:HLT••6.在DATA1开始的存储区中存放了100个8位无符号数,找出其中最大的数存入MAX单元•MOVBX,OFFSETDATA1•MOVAL,[BX]•MOVCX,63HP1:INCBX•CMPAL,[BX]•
4、JAENEXT•MOVAL,[BX]•NEXT:DECCX•JNZP1•MOVMAX,ALHLT•7.假设X为某值且存放在寄存器AL中,求出函数值f(x)并存放在AH中。1,X>0f(x)=0,X=0-1,X<0。。。CMPAL,0JGEBIGMOVAL,0FFHJMPDOWNBIG:JEDOWNMOVAL,1DOWN:MOVAH,AL。。。8.在某数据段中有10个字节的数组,要求从该数组中找出“$”字符,然后将“$”前的所有数据相加,结果存入AX中。•MOVSI,OFFSETBUF•DECSI•MOVCX,10•LL1:INCSI•CMPBYTEPTR[
5、SI],‘$’•LOOPNZLL1•SUBSI,OFFSETBUFJZLL3•MOVCX,SI•MOVSI,OFFSETBUF•MOVAX,0•LL2:ADDAL,[SI]•ADCAH,0•INCSI•LOOPLL2LL3:HLT8.统计负数个数并显示DATASEGMENTBUFDB2,-1,56……COUNTEQU20NEGADB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,OFFSETMOVDL,0MOVCX,COUNTLP:MOVAL,[SI]ANDAL,
6、ALJNSNEXTINCDLNEXT:INCSILOOPLPMOVNEGA,DLORDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART9.若起始地址偏移量为2000H的内存单元存放有100个ASCII码字符,现给这些字符添加奇偶校验位(bit7),使每个字符中“1”的个数为偶数,在顺序输出到地址为100H的端口.MOVSI,2000HMOVCX,100MOVDX,100HNEXT2:MOVAL,[SI];取字符串中字符送ALANDAL,0FFH;改变标志位JPENEXT1;“1”的个数为偶,bit7不变OR
7、AL,80H;“1”的个数为奇,bit7变为1NEXT1:OUTDX,ALINCSILOOPNEXT2MOVAH,4CHINT21H10.设数据段中有字节型单元NUMBER和FLAG,判断NUMBER与给定的X和Y的大小关系(XY,则置FLAG=1,若NUMBER
8、UMBER,XJncP1MovFLAG,0FFHJmpexitP1
显示全部收起