第4章 汇编语言程序设计3(常见程序设计举例).ppt

第4章 汇编语言程序设计3(常见程序设计举例).ppt

ID:48912407

大小:166.00 KB

页数:31页

时间:2020-02-01

第4章 汇编语言程序设计3(常见程序设计举例).ppt_第1页
第4章 汇编语言程序设计3(常见程序设计举例).ppt_第2页
第4章 汇编语言程序设计3(常见程序设计举例).ppt_第3页
第4章 汇编语言程序设计3(常见程序设计举例).ppt_第4页
第4章 汇编语言程序设计3(常见程序设计举例).ppt_第5页
资源描述:

《第4章 汇编语言程序设计3(常见程序设计举例).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.码制转换十、二进制数、ASCII码之间的互相转换。①BCD数→2进制数算法:Dn-1*10n-1+……+D0*100=(…(Dn-1*10+Dn-2)*10+…)*10+D0=(…((0*10+Dn-1)*10+Dn-2)*10+…)*10+D0即:新的中间结果=中间结果*10+本位数字(中间结果初值为0)4.5常见程序设计举例1程序1:将≤65535的非压缩BCD数转换成2进制数。程序如下:;数据段定义mydataSEGMENTdecnumDB5,3,0,1,9;BCD数53019binnumDW?mydataENDS2progSEGMENTASSUMECS:prog,

2、DS:mydatabegin:MOVAX,mydataMOVDS,AXMOVSI,OFFSETdecnumMOVCX,5;5位BCD数MOVBX,10XORAX,AX;中间结果初始值为0Next:MULBX;中间结果*10+本位数字ADDAL,[SI]ADCAH,0INCSI;指向下位BCD数LOOPnextMOVbinnum,AX;保存结果MOVAH,4CHINT21HprogENDSENDbegin3程序2:把≤255的非压缩BCD数转换成2进制数decnumDB1,5,9;BCD数159binnumDB?……MOVAX,decnumXCHGAH,AL;百位在AH,十位在

3、ALAAD;百位数*10+十位数MOVAH,AL;中间结果送AHMOVAL,decnum+2AAD;中间结果*10+个位数MOVbinnum,AL……4例:从键盘输入两个整数,并求其和。因键入为整数,故要进行如下转换:ASCII→BCD→二进制数ASCII→BCD码很简单,高4位清零即可得到非压缩的BCD码。BCD→二进制数在本例中采用用以下方法:((((0+千位数)*10+百位数)*10)+十位数)*10+个位数②ASCII码→二进制数(用于输入)第一次中间结果第二次中间结果第三次中间结果最终结果5开始两个数分别转换成二进制数键入两个数相加结束返回DOS如有溢出则提示开始取

4、第一个ASCII码是负号吗?数字符个数-1,指针+1指针定位字符个数-1=0?取数字,与中间结果相加,再乘以10指向下一个数字字符加个位数是负数则求补存结果结束NYYN转换子程序6程序如下:DATASEGMENTSTR1DB10,?,10DUP(?);第1个数的输入缓冲区STR2DB10,?,10DUP(?);第2个数的输入缓冲区NUMDW?,?;存转换后的二进制数SUMDW0;存和OVERDB‘Overflow!’,13,10,’$’DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFAR7START:MOVAX,DATAMO

5、VDS,AXMOVAH,0AHLEADX,STR1INT21H;输入第一个数字串(设为26)MOVAH,0AHLEADX,STR2INT21H;输入第二个数字串(设为33)LEABX,STR1;串1的首地址送BXLEADI,NUM;存二进制首地址送DICALLCHANGE;将串1ASCII码→二进制LEABX,STR2;串2的首地址送BX8LEADI,NUM+2;指向CALLCHANGE;将串2ASCII码→二进制MOVAX,NUM;(AX)=[NUM]=001AHADDAX,NUM+2;两数相加,(AX)=003BHMOVSUM,AX;存和JNONEXT;无溢出,转NEXT

6、LEADX,OVERMOVAH,9INT21H;显示’Overflow!’NEXT:MOVAH,4CHINT21H;返回DOSMAINENDP9CHANGEPROCMOVCL,[BX+1];实际字符数送CLMOVAL,[BX+2];第一个字符送ALMOVCH,AL;暂存在CHCMPAL,’-’;第一个字符是负号吗?JNZNEXT1;不是,转NEXT1DECCL;字符数减1INCBXNEXT1:ADDBX,2;指向第一个数字字符MOVAX,0;清零AX,存二进制数LP1:DECCLJZNEXT2;若(CL)=0,转NEXT2MOVDL,[BX];取字符ANDDL,0FH;转换成

7、BCD码ADDAL,DL;加到中间结果上ADCAH,010MOVDX,10MULDX;*10INCBX;指向下一个字符JMPSHORTLP1NEXT2:MOVDL,[BX];取个位数ANDDL,0FH;个位ASCII→未组合BCDADDAX,DX;加个位数,(AX)=001AHCMPCH,’-’;是’-’?JNZNEXT3;该数非负,转NEXT3NEGAX;若为负,求补NEXT3:MOV[DI],AX;存二进制结果RETCHANGEENDP;CODEENDSENDSTART11020A32360D…02

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。