微机实验.docx

上传人:b****3 文档编号:6261083 上传时间:2023-05-09 格式:DOCX 页数:11 大小:155.89KB
下载 相关 举报
微机实验.docx_第1页
第1页 / 共11页
微机实验.docx_第2页
第2页 / 共11页
微机实验.docx_第3页
第3页 / 共11页
微机实验.docx_第4页
第4页 / 共11页
微机实验.docx_第5页
第5页 / 共11页
微机实验.docx_第6页
第6页 / 共11页
微机实验.docx_第7页
第7页 / 共11页
微机实验.docx_第8页
第8页 / 共11页
微机实验.docx_第9页
第9页 / 共11页
微机实验.docx_第10页
第10页 / 共11页
微机实验.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机实验.docx

《微机实验.docx》由会员分享,可在线阅读,更多相关《微机实验.docx(11页珍藏版)》请在冰点文库上搜索。

微机实验.docx

微机实验

实验一基本程序编程和程序调试

(二)数码转换程序及其调试

1、将ASCII码表示的十进制数转换为二进制数

1)程序设计的算法及其程序

十进制数据可表示为:

DI代表十进制数1,2,3,…9,0

上式可转换为:

由式

(2)可归纳十进制数转换为二进制数的方法:

从十进制的最高位Dn开始乘10加次位的操作,将结果再乘10再加下一次位,如此重复,则可求出二进制数结果来。

程序流程及参考程序如图1-1。

这里我们规定:

被转换的ASCII码十进制数存放在3500H——3504H单位中。

而转换结果存放在3510H——3511H单元中。

2)实验步骤

(1)输入程序并检查无误。

(2)在3500H——3504H单元存入十进制数12的ASCII码,即E3500H↙,并输入3030303132H。

(3)G=2000↙,运行程序,并用CTRL+C来中断程序返回监控状态。

(4)用D3510↙来查看结果,应为:

35100C00

(5)反复试几组数,考查程序的正确性。

 

地址(H)助记符注释

2000MOVSI,3500;源地址

2003MOVDI,3510;结果地址

2006MOVBX,000A;乘数10

2009MOVCX,0004;计数

200CMOVAH,00;AH清零

200EMOVAL,[SI];取被转换数

2010SUBAL,30;ASCII码变十进制数

2012IMULBX;高位(AX)*(BX)送AX

2014ADDAL,[SI+01];取下一位

1017SUBAL,30;ASCII码减30变十进制数

2019INCSI;源地址指针+1

201ALOOP2012;CX-1,若CX不等于零则继续

201CMOV[DI],AX;若CX不等于零则存结果

201EINT3

 

 

2将十进制数的ASCII码转换为BCD码

1)程序流程和程序

设从键盘输入的五位十进制数的ASCII码已存放在3500H起始的内存单元内,把它转换成BCD码后,再按位分别存入350AH起始的内存单元内。

若输入的不是十进制数的ASCII码,则对应存放结果的内容为“FF”。

一字节ASCII码取其低四位即变为BCD码,程序流程图及考程序如图1-2所示。

2)实验步骤

(1)输入程序并检查无误。

(2)在3500H——3504H单元中存入五位十进制数的ASCII码,即

E3500↙,并输入31,32,33,34,35。

(3)G=2000↙,运行以上程序。

(4)D350A↙,显示结果为:

0000:

350A0102030405CC…

反复试几组数,考查程序的正确性。

地址(H)助记符注释

2000MOVCX,0005;循环计数器赋初值

2003MOVDI,3500;ASCII码首址

2006MOVBL,FF;错误标志送BL

2008MOVAL,[DI];送ASCII码至AL

200ACMPAL,3A;比较AL与3AH

200CJNB2014;不低于3A则转2014

200ESUBAL,30;低于3A则取ASCII码的低四位

2010JB2014;低于30则转2014

2012MOVBL,AL;否则AL内容送BL,取代FF

2014MOVAL,BL;结果或错误标志送AL

2016MOV[DI+0A],AL

2019INCDI

201ALOOP2006

201CINT3

 

3将十六位二进制数转换为ASCII码表示的十进制数

1)程序及其流程

十六位二进制数的值域为0——65535,最大可转换为五位十进制数。

算法:

五位十进制数可表示为:

Di:

表示十进制数0——9。

因此,将十六位二进制数转换为五位ASCII码表示表示的十进制数,就是求D1——D4,并将它化为ASCII码。

程序流程图如图1-3所示,设源数据存于3500——3501H单元中,结果数存于3510——3514H单元中。

2)实验步骤

(1)输入程序并检查无误。

(2)在3500——3501H单元中存放0C00,运行程序并检查结果,应看到3510——3514H单元中的数依次为3030303132。

(3)反复试几组数,并运行程序、观察结果。

地址(H)助记符注释

2000MOVDX,[3500];取二进制数

2004MOVSI,3515;目标首址在3510

2007DECSI

2008MOVAX,DX

200AMOVDX,0000

200DMOVCX,000A

2010DIVCX;;除10

2012XCHGAX,DX

2014ADDAL,30

2016MOV[SI],AL

2018CMPDX,0000

201BJNE2007

201DCMPSI,3510;填余下高位为0

2021JZ202A;

2023DECSI

2024MOVAL,30

2026MOV[SI],AL

2028JMP201D

202AINT3

 

 

4、十六进制数转换为ASCII码

1)程序及其流程

经过CPU处理后的十六进制数存放在起始地址为3500H的内存单元中,把它们转换成ASCII码之后,再分别存入起始地址为350AH的内存单元中。

从表2-1中可知,十六进制数加30H即可得到0H——9H的ASCII码,而要得到AH——FH的ASCII码,则需再加7H。

程序流程图及参考程序如图1-4所示。

2)实验步骤

(1)输入程序并检查无误。

(2)在3500——3501H单元中存入四位十六进制数203B,即

E3500↙,并输入3B,20。

(3)G=2000↙,运行以上程序

(4)D350A↙,显示结果为:

0000:

350A42333032CC…

输入数据与结果ASCII码对应顺序相反。

(5)反复试几组数。

考查程序的正确性。

地址(H)助记符注释

2000MOVCX,0004

2003MOVDI,3500

2006MOVDX,[DI]

2008MOVAX,DX

200AANDAX,000F;取低四位值

200DCMPAL,0A;;判是否“0”-“9”

200FJB2013;是“0”-“9”转2013

2011ADDAL,07;是“A”-“F”,加7

2013ADDAL,30;转换为ASCII码

2015MOV[DI+0A],AL

2018INCDI

2019PUSHCX;保护循环计数器内容

201AMOVCL,04;移位次数送CL

201CSHRDX,CL

201EPOPCX

201FLOOP2008

2021INT3

 

 

5BCD码转换为二进制数

程序及其流程

设四个二位十进制数的BCD码存放在起始地址为3500H,

的单元中,转换出的二进制数码存入起始地址为3510H的内存

单元中,程序流程图及参考程序如图1-5所示。

2)实验步骤

(1)输入程序并检查无误。

(2)在3500——3507单元中存入四个十进制数(12,34,56,78)的BCD码,即E3500↙输入01,02,03,04,05,06,07,08。

(3)G=2000↙,运行以上程序。

(4)D3510↙,显示结果为35100C00220038004E00

(5)反复试几组数,考查程序的正确性。

 

 

四、思考题

1、图1-1程序,将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大又可为多少?

为什么?

 

2、将一个十六位二进制数转换为ASCII码十进制数时,如何确定D1的值?

 

3、在十六进制数转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?

 

 

 

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2