微机试题程序实例j.ppt

上传人:b****2 文档编号:2640934 上传时间:2022-11-04 格式:PPT 页数:21 大小:253.50KB
下载 相关 举报
微机试题程序实例j.ppt_第1页
第1页 / 共21页
微机试题程序实例j.ppt_第2页
第2页 / 共21页
微机试题程序实例j.ppt_第3页
第3页 / 共21页
微机试题程序实例j.ppt_第4页
第4页 / 共21页
微机试题程序实例j.ppt_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机试题程序实例j.ppt

《微机试题程序实例j.ppt》由会员分享,可在线阅读,更多相关《微机试题程序实例j.ppt(21页珍藏版)》请在冰豆网上搜索。

微机试题程序实例j.ppt

8086/8088汇编源程序实例例例11读下列程序,解释该程序的功能读下列程序,解释该程序的功能DATADATASEGMENTSEGMENTSEDW125SEDW125,586586,67H,8A3H,58767H,8A3H,587YDWYDW?

DATADATAENDSENDSCODECODESEGMENTSEGMENTASSUMECS:

CODE,DS:

DATAASSUMECS:

CODE,DS:

DATASTART:

START:

MOVMOVAX,DATAAX,DATAMOVMOVDS,AXDS,AXMOVMOVAX,0AX,0MOVMOVCX,5CX,5MOVMOVBX,OFFSETSEBX,OFFSETSEADDADDAX,BXAX,BXINCINCBXBXINCINCBXBXDECDECCXCXJNZJNZSTARSTARMOVMOVY,AXY,AXMOVAH,4CHMOVAH,4CHINT21HINT21HCODECODEENDSENDSENDENDSTARTSTART功能:

求SE数组单元中所存放的5个数的和,并放入Y单元例例2:

2:

编写计算编写计算F=(V-(X*Y+Z-50H)/XF=(V-(X*Y+Z-50H)/X的程序。

的程序。

(其中(其中XX、YY、ZZ、VV均为有符号均为有符号1616位二进制数)位二进制数)复习IMULIDIVCBWCWDIMULsrc;(AX)(src)(AL)(字节乘法);(DX:

AX)(src)(AX)(字乘法)IDIVsrc;(AL)(AX)/(src)的商(字节除法);(AH)(AX)/(src)的余数;(AX)(DX:

AX)/(src)的商(字除法);(DX)(DX:

AX)/(src)的余数CBW;如果(AL)80H,则(AH)00H,否则(AH)0FFHCWD;如果(AX)8000H,则(DX)0000H,否则(DX)FFFFHXXYYZZVVFFX*YX*YX*Y+Z-50HX*Y+Z-50HV-(X*Y+Z-50H)V-(X*Y+Z-50H)(V-(X*Y+Z-50H)/X(V-(X*Y+Z-50H)/X分析程序流程分析程序流程开始开始结束结束CX,BXCX,BXX*YX*YDX,AXDX,AX将将ZZ扩展成双字扩展成双字CX,BX(CX,BX)+(DX,AX)CX,BX(CX,BX)+(DX,AX)CX,BX(CX,BX)-50HCX,BX(CX,BX)-50HDX,AXDX,AX将将VV扩展成双字扩展成双字DX,AX(DX,AX)-(CX,BX)DX,AX(DX,AX)-(CX,BX)F(DX,AX)/XF(DX,AX)/X的商;的商;F+2F+2余数余数F=(V-(X*Y+Z-50H)/XDATASEGMENTDATASEGMENTXDW25HXDW25HYDW20HYDW20HZDW2000HZDW2000HVDW1000HVDW1000HFDW2DUP(?

)FDW2DUP(?

)DATAENDSDATAENDSCODESEGMENTCODESEGMENTASSUMECS:

CODE,DS:

DATAASSUMECS:

CODE,DS:

DATASTARTSTART:

MOVAX,DATAMOVAX,DATAMOVDS,AXMOVDS,AXMOVAX,XMOVAX,XIMULYIMULYMOVCX,DXMOVCX,DXMOVBX,AXMOVBX,AXADDBX,AXADDBX,AXADCCX,DXADCCX,DXSUBBX,50HSUBBX,50HSBBCX,0SBBCX,0MOVAX,VMOVAX,VCWDCWDSUBAX,BXSUBAX,BXSBBDX,CXSBBDX,CXIDIVXIDIVXMOVF,AXMOVF,AXMOVF+2,DXMOVF+2,DXMOVAH,4CHMOVAH,4CHINT21HINT21HCODECODEENDSENDSENDENDSTARTSTARTMOVAX,ZMOVAX,ZCWDCWD例例3.3.已知在已知在NUMNUM开始的字单元中存放有开始的字单元中存放有66个无符号整数,挑个无符号整数,挑选出其中最大数存放到选出其中最大数存放到MAXMAX单元中。

单元中。

分析:

1.NUM开始的字单元需要什么?

指针BX2.思路:

把第0个元素给某一个寄存器如AX把第1个元素与之比较,将两者中的大数放AX2.63.结构:

循环和分支DATASEGMENTDATASEGMENTNUMDW235,78,58,261,357,128NUMDW235,78,58,261,357,128MAXDW?

MAXDW?

DATAENDSDATAENDSCODESEGMNTCODESEGMNTASSUMEDS:

DATA,CS:

CODEASSUMEDS:

DATA,CS:

CODESTART:

MOVAX,DATASTART:

MOVAX,DATAMOVDS,AXMOVDS,AXMOVCX,5MOVCX,5MOVBX,OFFSETNUMMOVBX,OFFSETNUMMOVAX,BXMOVAX,BXADDBX,2ADDBX,2CMPBX,AXCMPBX,AXJBENEXTJBENEXTMOVAX,BXMOVAX,BXNEXT:

LOOPADDRNEXT:

LOOPADDRMOVMAX,AXMOVMAX,AXMOVAHMOVAH,4CH4CHINT21HINT21HCODEENDSCODEENDSENDSTARTENDSTART例例3.3.已知在已知在NUMNUM开始的字单元中存放有开始的字单元中存放有66个无符号整数,挑个无符号整数,挑选出其中最大数存放到选出其中最大数存放到MAXMAX单元中。

单元中。

ADDR:

ADDR:

例例4.4.读以下程序,描述其功能。

读以下程序,描述其功能。

DATADATASEGMENTSEGMENTD1DBPLEASEINPUTACHARACTER:

$D1DBPLEASEINPUTACHARACTER:

$D2DBAD2DBADYESDBYES,$DYESDBYES,$DNODBNO,$DNODBNO,$DATADATAENDSENDSCODECODESEGMENTSEGMENTASSUMECS:

CODE,DS:

DATAASSUMECS:

CODE,DS:

DATASTART:

START:

MOVMOVAX,DATAAX,DATAMOVMOVDS,AXDS,AXLEALEADX,D1DX,D1MOVMOVAH,09HAH,09HINTINT21H21HMOVAH,1MOVAH,1INT21HINT21HMOVBL,D2MOVBL,D2CMPAL,BLCMPAL,BLJZYESJZYESLEADX,DNOLEADX,DNOJMPNOJMPNOYES:

LEADX,DYESYES:

LEADX,DYESNO:

MOVAH,09HNO:

MOVAH,09HINT21HINT21HMOVAH,4CHMOVAH,4CHINT21HINT21HCODECODEENDSENDSENDSTARTENDSTART将键入的字符与存储单元的字符将键入的字符与存储单元的字符A相比较,相同显示相比较,相同显示YES,不同显示不同显示NO编写程序,完成三个数相加并把结果存放到编写程序,完成三个数相加并把结果存放到SUMSUM单元中单元中DATASEGMENTDATASEGMENTBUFDB35HBUFDB35H,78H78H,0A5H0A5HSUMDBSUMDB?

DATAENDSDATAENDSCODESEGMENTCODESEGMENTASSUMECS:

CODEASSUMECS:

CODE,DS:

DATADS:

DATASTARTSTART:

MOVAXMOVAX,DATADATAMOVDSMOVDS,AXAXMOVALMOVAL,00MOVSIMOVSI,OFFSETBUFOFFSETBUFADDALADDAL,SISIINCSIINCSIADDALADDAL,SISIINCSIINCSIADDALADDAL,SISIMOVSUMMOVSUM,ALALMOVAHMOVAH,4CH4CHINT21HINT21HCODEENDSCODEENDSENDSTARTENDSTART例:

求从1开始连续50个奇数之和,并将结果存放在名字为SUM的字存储单元中。

DATASEGMENT;定义数据段,DATA为段名SUMDW0;由符号(叫变量名)SUM指定的内存单元类型定义为一个字,初值为0DATAENDS;定义数据段结束CODESEGMENT;定义代码段ASSUMEDS:

DATA,CS:

CODE;由ASSUM伪指令定义各段寄存器的内容START:

MOVAX,DATA;将DS初始化为数据段首址MOVDS,AX的段值DATAMOVCX,50;CX置入循环计数值MOVAX,0;清AX累加器MOVBX,1;BX置常量1NEXT:

ADDAX,BX;累加奇数和,计50次INCBX;求下一个奇数INCBXDECCX;循环计数器作减1计数JNENEXT;未计完50次时,转至NEXT循环MOVSUM,AX;累加和送存SUM单元MOVAH,4CH;DOS功能调用语句,机器将结束本INT21H程序的运行,并返回DOS状态CODEENDS;代码段结束ENDSTART;整个程序汇编结束例比较以存储器变量和表示的两个有符号字数据的大小,将其中较大数据放在寄存器中DATASEGMENTD1DW-123H;补码为FF85HD2DW-120H;补码为FF88HDATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATA;说明代码段、数据段BEGIN:

MOVAX,DATAMOVDS,AX;给DS赋段值MOVBX,D1CMPBX,D2JGENEXT;若D1D2,则不交换,转NEXTMOVBX,D2;若D1D2,则交换NEXT:

MOVAH,4CHINT21HCODEENDSENDBEGIN例找出从无符号字节数据存储变量开始存放的个数中的最大数放在中DSEGSEGMENTVARDB5,7,19H,23H,0A0HNEQU$-VARDSEGENDSCSEGSEGMENTASSUMECS:

CSEG,DS:

DSEG;说明代码段、数据段BG:

MOVAX,DSEGMOVDS,AX;给DS赋段值MOVCX,N-1;置循环控制数MOVSI,0MOVBH,VARSI;取第1字节数到BHJCXZLAST;如果CX=0则转AGIN:

INCSICMPBH,VARSIJAENEXTMOVBH,VARSINEXT:

LOOPAGIN;CXCX-1,若CX不等于0则转LAST:

MOVAH,4CHINT21HCSEGENDSENDBG例用冒泡法排序冒

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1