给出一个BCD数,怎么将其转成ASCII值存储?
时间:2010-11-18
来源:互联网
汇编初学者求助!!!!
作者: as86878 发布时间: 2010-11-18
网上这类的例子很多, 比如下面这个例子:
题目要求:编制一个完整的程序,将一字节压缩BCD码转换为两个ASCII码,并将结果存放在ASC和ASC+1单元,按高位存低地址、低位存高地址的格式存放。
解题分析:一字节压缩BCD码是两位0~9的数字,4位二进制数对应一位BCD码。所以关键是要将两个4位二进制数分离开来。“分离”可以用移位指令和逻辑运算指令来实现,然后用加30H的加法,便可以得到相应的ASCII码。
程序清单:
DATA SEGMENT
BCD DB 98H
ASC DB ?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CL,4
MOV AL,BCD ;将BCD码存放到AL和BL
MOV BL,AL
SHR AL,CL ;右移4位,高4位移到低4位
ADD AL,30H ;得到高位的ASCII码
MOV ASC,AL
AND BL,0FH ;清高4位
ADD BL,30H ;得到低位的ASCII码
MOV ASC+1,BL
MOV AH,4CH
INT 21H
CODE ENDS
END START
此程序经汇编后对应的列表文件
右移4位相当于除以16,所以也可用除法指令实现。程序段为:
MOV AL,BCD
MOV BL,16
XOR AH,AH ;扩展到16位
DIV BL ;商在AL,余数在AH
ADD AL,30H ;高位的ASCII码
MOV ASC,AL
ADD AH,30H ;低位的ASCII码
MOV ASC+1,AH
题目要求:编制一个完整的程序,将一字节压缩BCD码转换为两个ASCII码,并将结果存放在ASC和ASC+1单元,按高位存低地址、低位存高地址的格式存放。
解题分析:一字节压缩BCD码是两位0~9的数字,4位二进制数对应一位BCD码。所以关键是要将两个4位二进制数分离开来。“分离”可以用移位指令和逻辑运算指令来实现,然后用加30H的加法,便可以得到相应的ASCII码。
程序清单:
DATA SEGMENT
BCD DB 98H
ASC DB ?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CL,4
MOV AL,BCD ;将BCD码存放到AL和BL
MOV BL,AL
SHR AL,CL ;右移4位,高4位移到低4位
ADD AL,30H ;得到高位的ASCII码
MOV ASC,AL
AND BL,0FH ;清高4位
ADD BL,30H ;得到低位的ASCII码
MOV ASC+1,BL
MOV AH,4CH
INT 21H
CODE ENDS
END START
此程序经汇编后对应的列表文件
右移4位相当于除以16,所以也可用除法指令实现。程序段为:
MOV AL,BCD
MOV BL,16
XOR AH,AH ;扩展到16位
DIV BL ;商在AL,余数在AH
ADD AL,30H ;高位的ASCII码
MOV ASC,AL
ADD AH,30H ;低位的ASCII码
MOV ASC+1,AH
作者: masmaster 发布时间: 2010-11-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28