数码转换程序实验
一、实验目的:
掌握不同进制数及编码相互转换的程序设计方法。
二、实验环境:
PC 微机一台、TD-PITD 实验系统一套。
三、实验内容:
1.将 ASCII 码表示的十进制数转换为二进制数
本实验要求将缓冲区中的一个五位十进制数 00012 的 ASCII 码转换成二进制数,并将转换结果显示在屏幕上。转换过程的参考流程如图 2-3-2 所示,根据流程图编写程序代码。
十进制数可以表示为:Dn×10n+Dn-1×10n-1+…+D0×100=Di×10i 其中 Di 代表十进制数 1、2、3…9、0。
上式可以转换为:ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×
10+D0。
由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位 Dn 开始作乘 10 加次位的操作,依次类推,则可求出二进制数结果。
图 2-3-2 十进制 ASCII 转换为二进制数参考流程
DATA SEGMENT
SHUZI DB 12
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET SHUZI
MOV AL,[DI]
XOR BH,BH
MOV BL,AL
AND AL,0F0H
MOV CL,4
SHR AL,CL
CMP AL,0AH
JB C1
ADD AL,07H
C1:ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
MOV AL,BL
AND AL,0FH
CMP AL,0AH
JB C2
ADD AL,07H
C2:ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
CODE ENDS
END START
2.将十六进制数的 ASCII 码转换为十进制数
本实验要求将缓冲区中存放的 000CH 的 ASCII 码转换成十进制数,并将转换结果显示在屏幕上。
DATA SEGMENT
SHUZI DB 0CH
SHUZI1 DB 2 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET SHUZI
MOV SI,OFFSET SHUZI1
MOV BX,0
MOV CX,2
INC SI
INC SI
MOV AX,[DI]
C2:
CMP AX,0AH
JB C1
INC BX
SUB AX,10
JMP C2
C1:
MOV [SI],AX
DEC SI
DEC SI
CMP BX,0AH
JB C3
MOV AX,BX
MOV BX,0
JMP C2
C3:
MOV [SI],BX
MOV SI,OFFSET SHUZI1
C4:
MOV AL,[SI]
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
INC SI
INC SI
LOOP C4
CODE ENDS
END START