汇编语言简单小程序——ASCII码转十进制数(bcd码)
来源:互联网 发布:木村拓哉 知乎 编辑:程序博客网 时间:2024/06/16 06:37
ASCII码转十进制数(bcd码)
欢迎大家阅读我的博客,如果有错误请指正,有问题请提问,我会尽我全力改正错误回答问题。在此谢谢大家。下面开始正式内容
实验目的
(1)掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
(2)熟悉调试程序的方法。
实验内容
(1)编制程序将ASCII码表示的十进制数转换为二进制数;
(2)编制程序将十进制的ASCII码转换为BCD码;
编译环境
- 计算机系统:win10电脑virtualbox上安装win7虚拟机
- 软件:wave6000
- 软件模拟器:8086/86
目录
- ASCII码转十进制数bcd码
- 实验目的
- 实验内容
- 编译环境
- 目录
- ASCII码转十进制数
- 一知识点
- 1ASCII码表 数字部分
- 2流程图
- 3代码解析
- 二运行结果
- ASCII码转十进制数
- 三源码
- 一知识点
- ASCII码转bcd码
- 一知识点
- 1流程图
- 2代码解析
- 二运行结果
- ASCII码转BCD码
- 三源码
- 一知识点
ASCII码转十进制数
一、知识点
(1)ASCII码表 数字部分
(2)流程图
(3)代码解析
DATA SEGMENT NUM DB 30H,30H,30H,31H,39H DATA ENDS
数据部分,NUM代表5位ASCII码这里分别是00019
CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX
代码段,进行数据导入
MOV SI,OFFSET NUM;
将NUM的位置存入SI,以便之后调用
MOV BX,000AH
重点:将000AH赋值给BX,表示每一位数字的权重
MOV CX,0004H;
重点:将0004H赋值给CX,记录之后循环的次数,因为输入是5个数字,所以这里循环四次。
MOV AH,00HMOV AL,[SI]
将SI所存地址中的数据(也就是NUM的第一个数字)存入AL(AX寄存器的第四位)
SUB AL,30H ;
将AL中的值减30H(根据ASCII码表,0对应编码为0x30H,1对应的编码为0x31H以此类推,所以ASCII码减去0x30H就是对应的数字)
A1: IMUL BX ; ADD AL,[SI+01]; SUB AL,30H; INC SI LOOP A1;
循环部分
- 将AL的值乘上BX中的值(附权值)
- Al加上下一位ASCII码
- AL减去30H,与上一步合起来相当于加上下一位的值
- SI指向下一位
循环,注意循环的次数之前指定了,默认取CX中的值
二、运行结果
ASCII码转十进制数
输入为 30H 30H 31H 31H 39H
输出为0077H 7*16+7=119 结果正确
三、源码
DATA SEGMENT NUM DB 30H,30H,30H,31H,39H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET NUM; MOV BX,000AH MOV CX,0004H; MOV AH,00H MOV AL,[SI] SUB AL,30H ; A1: IMUL BX ; ADD AL,[SI+01]; SUB AL,30H; INC SI LOOP A1;Ñ»· MOV [SI],AX INT 21H CODE ENDS END START
ASCII码转bcd码
一、知识点
BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。
(1)流程图
(2)代码解析
MOV BX,0010H
重点:将0010H赋值给BX,表示每一位数字的权重,这是和上面程序唯一不同的地方
二、运行结果
ASCII码转BCD码
输入为 30H 30H 30H 31H 39H
输出结果为0019 结果正确
三、源码
DATA SEGMENT NUM DB 30H,30H,30H,31H,39H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET NUM; MOV BX,0010H MOV CX,0004H; MOV AH,00H MOV AL,[SI] SUB AL,30H ; A1: IMUL BX ; ADD AL,[SI+01]; SUB AL,30H; INC SI LOOP A1; MOV [SI],AX INT 21H CODE ENDS END START
阅读全文
1 0
- 汇编语言简单小程序——ASCII码转十进制数(bcd码)
- 十进制,BCD数怎样转8421BCD码
- 汇编语言,将ASCII码十进制数转换为二进制数
- 二进制码转换为二—十进制(BCD)码
- BCD码转十进制字符串
- 实训汇编语言设计——将bcd码转化为二进制数
- 编写10位十进制加法子程序(十进制数采用压缩BCD码存放)
- BCD码与十进制
- 非压缩BCD码转压缩BCD码汇编语言
- java ASCII码转BCD码 BCD码转字符串
- java ASCII码转BCD码 BCD码转字符串
- ASCII码值转化十六进制,十进制数;十六进制字符值转十进制,ASCII码值;
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- python基础-命名空间、类_对象调用范围、对象组合
- 在eclipse中使用git
- 平均数编码:针对高基数定性特征(类别特征)的数据预处理/特征工程
- mysql命令补充
- three.js给场景加上阴影
- 汇编语言简单小程序——ASCII码转十进制数(bcd码)
- VAE(Variational Autoencoder)的原理
- HTTPS详细解析
- bzoj1821: [JSOI2010]Group 部落划分 Group(最小生成树)
- SSH框架结构分析
- jQuery中$.fn的用法示例介绍
- 踏破铁鞋
- Redis sentinel 高可用主从配置方案
- Python xlrd和xlwt读写Excel