首页 > 编程知识 正文

汇编语言将ascii码转换成十六进制数,十六进制转换为ascii码的汇编语言

时间:2023-05-03 17:49:30 阅读:203423 作者:85

ASCII码转十进制数(bcd码)


码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创

  欢迎大家阅读我的博客,如果有错误请指正,有问题请提问,我会尽我全力改正错误回答问题。在此谢谢大家。

码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创


实验目的

(1)掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
(2)熟悉调试程序的方法。


实验内容*重点内容*

(1)编制程序将ASCII码表示的十进制数转换为二进制数;
(2)编制程序将十进制的ASCII码转换为BCD码;


编译环境 计算机系统:win10电脑virtualbox上安装win7虚拟机软件:wave6000软件模拟器:8086/86


目录

ASCII码转十进制数(bcd码) 实验目的实验内容*重点内容*编译环境目录ASCII码转十进制数 一、知识点 (1)ASCII码表 数字部分(2)流程图(3)代码解析 二、运行结果 ASCII码转十进制数 三、源码 ASCII码转bcd码 一、知识点 (1)流程图(2)代码解析 二、运行结果 ASCII码转BCD码 三、源码

码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创

ASCII码转十进制数


一、知识点


(1)ASCII码表 数字部分 Bin(二进制)Oct(八进制)Dec(十进制)Hex(十六进制)缩写/字符解释001100006048300数字0001100016149311数字1001100106250322数字2001100116351333数字3001101006452344数字4001101016553355数字5001101106654366数字6001101116755377数字7001110007056388数字8001110017157399数字9


(2)流程图 Created with Raphaël 2.1.2 准备好需要的存储器 取得ASCII码 将AX中的值乘上000AH 读取一个ASCII码,加入AX AX减去0030H CX==0? 对应的值在AX中,结束程序 yes no


(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)流程图 Created with Raphaël 2.1.2 准备好需要的存储器 取得ASCII码 将AX中的值乘上0010H 读取一个ASCII码,加入AX AX减去0030H,CX-- CX==0? 对应的值在AX中,结束程序 yes no


(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五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。