当前位置:首页 > 东华大学微机实验原理实验报告
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
2021 JZ 202A; 2023 DEC SI
2024 MOV AL,30 2026 MOV [SI],AL 2028 JMP 201D 202A INT 3 图1-3
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:350A 42 33 30 32 CC? 输入数据与结果ASCII码对应顺序相反。
11
(5) 反复试几组数。考查程序的正确性。
地址(H) 助记符 注释 2000 MOV CX,0004 2003 MOV DI,3500 2006 MOV DX,[DI] 2008 MOV AX,DX
200A AND AX,000F ;取低四位值
200D CMP AL,0A; ; 判是否“0”-“9” 200F JB 2013 ; 是“0”-“9”转2013 2011 ADD AL,07; 是“A”-“F”,加7 2013 ADD AL,30; 转换为ASCII码 2015 MOV [DI+0A],AL 2018 INC DI
2019 PUSH CX ;保护循环计数器内容
12
共分享92篇相关文档