数码转换程序实验

一、实验目的:

掌握不同进制数及编码相互转换的程序设计方法。

 

二、实验环境:

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

猜你喜欢

转载自blog.csdn.net/xu_benjamin/article/details/85565466