欢迎来到天天文库
浏览记录
ID:51517634
大小:614.36 KB
页数:23页
时间:2020-03-25
《指令系统应用举例.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、指令系统应用举例[书例2.2]P63MOVSI,OFFSETBUFFER1;源数据块首地址的偏移量送SIMOVDI,OFFSETBUFFER2;目标首址的偏移量送DIMOVCX,200;数据块长度送CXNEXT:MOVAL,[SI];源数据块中一个字节传到ALMOV[DI],AL;AL传送到目标地址INCSI;SI加1INCDI;DI加1DECCX;CX减1JNZNEXT;如不等于0,转移到NEXT……[书例2.3]P67MOVBP,SP;设置基址指针寄存器PUSHAX;推入AX,SP减2PUSHBX;推入BX,SP减4PUSH
2、CX;推入CX,SP减6……MOVAX,[BP-2];恢复AX原来的内容MOVBX,[BP-4];恢复BX原来的内容MOVCX,[BP-6];恢复CX原来的内容ADDSP,6;恢复SP原来的内容[书例2.6]P75要求计算两个多字节十六进制数之和:3B74AC60F8H+20D59E36C1H=?MOVCX,5;循环次数送CXMOVSI,0;SI初值为0CLC;清进位标志CFLOOPER:MOVAL,DATA2[SI];取一个字节加数ADCDATA1[SI],AL;与被加数相同且送回内存区INCSI;SI加1,指向下一字节DEC
3、CX;循环次数减1JNZLOOPER;如不为0,转LOOPER……;如为0,运算结束[书例2.7]P77计算4609+3875=?设被加数和加数的每一位数都以ASCII码形式存放在内存中,低位在前,高位在后。LEASI,STRING1;(SI)被加数地址指针LEABX,STRING2;(BX)加数地址指针LEADI,SUM;(DI)结果地址指针MOVCX,4;(CX)循环次数CLC;清进位标志CFNEXT:MOVAL,[SI];取一个字节被加数ADCAL,[BX];与加数相加AAA;ASCII调整(非压缩)MOV[DI]
4、,AL;送存INCSI;SI加1INCBX;BX加1INCDI;DI加1DECCX;循环次数减1JNZNEXT;如不为0,转NEXT……;如为0,结束运算[书例2.8]P81内存数据段存放了100个带符号数,首地址为AREA1,要求将各数取绝对值后存入以AREA2为首址的内存区。LEASI,AREA1;(SI)源地址指针LEADI,AREA2;(DI)目标地址指针MOVCX,100;(CX)循环次数CHECK:MOVAL,[SI];取一个带符号数到ALORAL,AL;AL内容不变,但使之影响标志JNSNEXT;若(SF)=
5、0,则转NEXTNEGAL;否则求补NEXT:MOV[DI],AL;传送到目标地址INCSI;源地址加1INCDI;目标地址加1DECCX;循环次数减1JNZCHECK;如不等于0,则转CHECK……;如等于0,转换结束[书例2.9]P82在内存数据段从DATA开始的存储单元中分别存放了2个8位无符号数,试比较它们的大小,并将大者传送到MAX单元。LEABX,DATA;DATA偏移地址BXMOVAL,[BX];第一个无符号数送ALINCBX;BX指向第二个无符号数CMPAL,[BX];两个数比较JNCDONE;如(CF)=0,则
6、转DONEMOVAL,[BX];否则,第2个无符号数送ALDONE:MOVEMAN,AL;较大无符号数送MAX单元……;比较结束[书例2.10]P95从偏移地址TABLE开始的内存区中,存放着100个字节的十六进制数,要求将这些数进行累加,并将累加和的低位存SUM单元,高位存SUM+1单元。LEABX,TABLE;(BX)数据表地址指针MOVCL,100;(CL)数据快长度XORAX,AX;清AL,AHLOOPER:ADDAL,[BX];加一个数到ALJNCGOON;如(CF)=0,转到GOONINCAH;否则,AH加1GO
7、ON:INCBX;地址指针加1DECCL;计数值减1JNZLOOPER;如(CL)不为0,转移到LOOPERMOVSUM,AX;否则,(SUN)AL,UM+1)(AH)……;累加结束[书例2.11]P97将一个16位无符号数乘以10。该数原来存放在以FACTOR为首地址的两个连续的存储单元中(低位在前,高位在后)。MOVAX,FACTOR;(AX)被乘数SHLAX,1;(AX)=FACTOR*2MOVBX,AX;暂存BXSHLAX,1;(AX)=FACTOR*4SHLAX,1;(AX)=FACTOR*8ADDAX,BX;(
8、AX)=FACTOR*10……[书例2.12]P98将一个16位无符号数除以512。该数原来存放在DIVIDAND为首地址的两个连续的存储单元中。MOVAX,DIVIDAND;(AX)被除数SHRAX,1;(AX)=DIVIDAND/2XCHGAL,AH;(A
此文档下载收益归作者所有