(1)输入程序并检查无误。
(2)在3500H——3504H单元存入十进制数12的ASCII码,即E3500H↙,并输入3030303132H。 (3)G=2000↙,运行程序,并用CTRL+C来中断程序返回监控状态。 (4)用D3510↙来查看结果,应为:3510 0C 00 (5)反复试几组数,考查程序的正确性。
地址(H) 助记符 注释 2000 MOV SI,3500 ;源地址 2003 MOV DI,3510 ;结果地址 2006 MOV BX,000A ;乘数 10 2009 MOV CX,0004 ;计数 200C MOV AH,00 ;AH 清零 200E MOV AL,[SI] ;取被转换数
2010 SUB AL,30 ;ASCII码变十进制数 2012 IMUL BX ;高位(AX)*(BX)送AX 2014 ADD AL,[SI+01] ;取下一位
6
1017 SUB AL,30 ;ASCII码减30变十进制数 2019 INC SI ;源地址指针+1
201A LOOP 2012 ;CX-1,若CX不等于零则继续 201C MOV [DI],AX ;若CX等于零则存结果 201E INT 3
图1-1
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:350A 01 02 03 04 05 CC?
7
(5) 反复试几组数,考查程序的正确性。
地址(H) 助记符 注释
2000 MOV CX,0005;循环计数器赋初值 2003 MOV DI,3500;ASCII码首址 2006 MOV BL,FF; 错误标志送BL 2008 MOV AL,[DI];送ASCII码至AL 200A CMP AL,3A; 比较AL与3AH
200C JNB 2014; 不低于3A则转2014
200E SUB AL,30; 低于3A则取ASCII码的低四位 2010 JB 2014; 低于30则转2014
2012 MOV BL,AL; 否则AL内容送BL,取代FF 2014 MOV AL,BL; 结果或错误标志送AL 2016 MOV [DI+0A],AL 2019 INC DI
8
201A LOOP 2006 201C INT 3
图1-2
3 将十六位二进制数转换为ASCII码表示的十进制数
1)程序及其流程
十六位二进制数的值域为0——65535,最大可转换为五位十进制数。 算法:五位十进制数可表示为:
ND?D??????D??????D??????D?????D?
Di:表示十进制数0——9。
因此,将十六位二进制数转换为五位ASCII码表示表示的十进制数,就是求D1——D4,并将它化为ASCII码。程序流程图如图1-3所示,设源数据存于3500——3501H单元中,结果数存于3510——3514H单元中。
2)实验步骤
(1) 输入程序并检查无误。
(2) 在3500——3501H单元中存放0C00,运行程序并检查结果,应看到3510——3514H单元中
的数依次为3030303132。
9
(3) 反复试几组数,并运行程序、观察结果。
地址(H) 助记符 注释
2000 MOV DX,[3500];取二进制数
2004 MOV SI,3515; 目标首址在3510 2007 DEC SI 2008 MOV AX,DX 200A MOV DX,0000 200D MOV CX,000A
2010 DIV CX; ; 除10 2012 XCHG AX,DX 2014 ADD AL,30 2016 MOV [SI],AL 2018 CMP DX,0000 201B JNE 2007
201D CMP SI,3510 ; 填余下高位为0
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库东华微机实验aaa(2)在线全文阅读。
相关推荐: