汇编语言实验2数据转换实验.doc

汇编语言实验2数据转换实验.doc

ID:51042677

大小:476.00 KB

页数:7页

时间:2020-03-08

汇编语言实验2数据转换实验.doc_第1页
汇编语言实验2数据转换实验.doc_第2页
汇编语言实验2数据转换实验.doc_第3页
汇编语言实验2数据转换实验.doc_第4页
汇编语言实验2数据转换实验.doc_第5页
资源描述:

《汇编语言实验2数据转换实验.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、程序如下所示:DATASEGMENTBUFDB5DUP(?);预留5单元空间D0DW2A5HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDI,OFFSETD0;将DI指向BUF的下一单元MOVAX,D0;取要用来变十进制数的数到AXMOVBX,10;准备除以10MOVCX,0;准备统计余数的个数CHANGE10:DECDI;准备存放余数,往前倒存INCCXMOVDX,0;将除数的高16位(在DX中)清0,DX也将用来存

2、放余数DIVBX;DX,AX除以BX(BX=10)ADDDL,30H;余数变为ASCII码值MOVBYTEPTR[DI],DL;存储十进制数CMPAX,0;是否为0?JNZCHANGE10;不为0转CHANGE10CHANGE11:MOVDL,BYTEPTR[DI];取出存放在BUF中的十进制数到DL供显示MOVAH,2;显示1个字符INT21HINCDILOOPCHANGE11MOVAH,4CH;程序结束并返回DOSINT21HCODEENDSENDSTART(1)请改变第三行的3A5H改变为4A3FH、

3、0ABH、0A37BH后分别说明运行结果,并做解释。不做修改改3A5H为4A3FH改3A5H为0ABH改3A5H为0A37BH(2)分析其中INC与DEC语句的作用是什么,用”;”号屏蔽这二句后运行结果又是什么?请解释。(3)将MOVBX,10;准备除以10中的10改为8,结果如何?意义是什么?4A3FH0A37BH(4)如果改为16,结果如何,试分析为什么是这样的结果?0A37BH0ABH4A3FH2.ASCII码表示的十进制数转换为二进制数并显示将SI指向的缓冲区BUF中保存的五位ASCII码十进制数(

4、0-65535)转换成对应的二进制数并存放在DX中,再以二进制形式显示。DATASEGMENTBUFDB'25092'CDB'B',0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETBUF;将BUF的地址放到SI中MOVDX,0;清DX为0;MOVCX,5;置循环次数为5MOVBX,10GET_ASC:MOVAL,[SI];取出一个字符CMPAL,'0';必须保证5个数都是十进制数(0

5、-9)JBEXITCMPAL,'9'JAEXIT;判断是否是“0”-“9”DEC_BIN:SUBAL,30H;减30H变二进制数MOVAH,0PUSHAX;转换为对应的数并置于AX中,转存堆栈MOVAX,DXMULBX;AX内容乘10MOVDX,AXPOPAXADDDX,AX;(DX)←(DX)*10+(AX)INCSI;使指针SI指向下一个字符DECCXJNZGET_ASCMOVBX,DX;取要显示的字符到BL中MOVCL,16;移16次,最大数64000NEXT:MOVDX,0SALBX,1RCLDX,

6、1ADDDX,30HMOVAH,2INT21HDECCLJNENEXTLEADX,C;取C的地址,以便显示单位B与回车换行MOVAH,9INT21HEXIT:MOVAH,4CHINT21HCODEENDSENDSTART(1)与上次实验中用二进制数显示一个字符的ASCII码程序的代码进行比较,那些地方是一致的?(2)将第二行的’25092’改为以下5个数:32H,35H,30H,39H,32H后(BUFDB'25092'改为:BUFDB32H,35H,30H,39H,32H)说明运行结果,并做解释。(3)为

7、什么要使用堆栈,如果不使用会出现什么结果?3.二进制数到十六进制数的转换二进制整数转换为ASCII码十六进制数的基数为16,显示时注意从9到A,ASCII码跳了7!其他类似于例4.8。其程序代码如下:DATASEGMENTBUFDB5DUP(?);预留5单元空间D0DW1000100110100011BDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDI,OFFSETD0;将DI指向BUF的下一单元MOVCX,0MOVAX

8、,D0;取要用来变十六进制数的数到AXMOVBX,16;准备除以16CBUF10:DECDI;准备存放余数,往前倒存INCCXMOVDX,0;将除数的高16位(在DX中)清0,DX也将用来存放余数DIVBX;DX,AX除以BX(BX=16)ADDDL,30H;余数变为ASCII码值MOVBYTEPTR[DI],DL;存储十六进制数CMPAX,0;是否为0?JNZCBUF10;不为0转CBUF10CHANGE11:

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

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

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