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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验内容:

实验1:将ASCII码表示的十进制数转换为二进制数

二、实验步骤:

1、从键盘输入五位的十进制数,保存在地址为3500H的存储单元

2、把这个十进制数转换为十六进制数,所得结果保存在地址为3510H的存储

单元中

3、把这个十六进制的结果的每位取出来,转换为ACSII码值,存储在地址为

3514H的存储单元中

4、把以3514H为起始地址的字符串输出到屏幕,即可得到5位十进制数转换

为二进制数的结果

三、程序代码:

DATA SEGMENT

ORG 34FEH

BUF DB 10

DB

DB 10 DUP()

ORG 3510H

BBF DB 20 DUP(),0DH,0AH,'$'

IBF DB'Please input one number:',0DH,0AH,'$'

ICF DB 0DH,0AH,'The result is:',0DH,0AH,'$'

DATA ENDS

STACK SEGMENT STACK 'STACK'

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START:MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET IBF

MOV AH,9

INT 21H

MOV DX,0

MOV AH,0AH

LEA DX,BUF

INT 21H

MOV SI,3500H

MOV DX,0

MOV CX,04H

MOV BX,000AH

MOV AH,00H

CIRCLE:MOV AL,[SI]

SUB AL,30H

ADD AX,DX

MUL BX

MOV DX,AX

INC SI

MOV AH,0

LOOP CIRCLE

MOV AL,[SI]

SUB AL,30H

ADD AX,DX

LEA SI,BBF

MOV [SI],AX

MOV DX,AX

MOV CH,04H

MOV CL,04H

MOV BX,3514H

NEXT:ROL AX,CL

MOV DL,AL

AND DL,0FH

CMP DL,09H

JBE PL

ADD DL,07H

PL: ADD DL,30H

MOV [BX],DL

INC BX

DEC CH

JNZ NEXT

MOV DX,OFFSET ICF

MOV AH,9

INT 21H

MOV AH,09H

MOV DX,3514H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

四、代码运算过程:

实验2:将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。把它转换成BCD码后,再按位分别存入350A起始的内存单元内。若输入的不是十进制的ASCII码,则显示FF.

代码如下:

START: MOV AX,DATA

MOV DS,AX

LEA SI,BUF

MOV CX,05H

MOV AH,00H

LEA DI,BBF

CIRCLE: MOV AL,[SI]

CMP AL,30H

JB NEXT

CMP AL,39H

JA NEXT

SUB AL,30H

INT 21H

INC DI

INC SI

LOOP CIRCLE

LYX: MOV [DI],AL

MOV AH,4CH

NEXT: MOV AL,0FFH

JMP LYX

程序运行:

实验3:将十六位二进制数转换为ASCII码表示的十进制数。十六进制数的值域为0~65535,最大可转换为五位十进制数。

代码如下:

START:MOV AX,DATA

MOV DS,AX

LEA SI,BUF

MOV CH,05H

MOV AH,00H

LEA DI,BBF

ADD DI,04H

MOV BX,000AH

MOV CL,04H

MOV AX,[SI]

CIRCLE: CWD

MOV DX,0

IDIV BX

ADD DL,30H

MOV [DI],DL

DEC DI

DEC CH

MOV DX,0

JNZ CIRCLE

MOV AH,4CH

INT 21H

程序运行:

相关文档
最新文档