用汇编实现二进制数向十六进制数的转换

一、实现功能

1)实现二进制数向十六进制数的转换
2)实现十六进制数向二进制数的转换‘

二、设计分析

汇编语言中,字符在机器中都是以ascii码的二进制格式存储,但是汇编语言写的时候常用十六进制,因此需要好好看看ascii码的十六进制表。

特别是进制转换一定要注意,机器中存储的是数的二进制数本身,而我们输入输出的是数的ascii码的值,因此注意对寄存器中数的加减操作。

四位二进制数对应一位十六进制数,这里写的也是四位二进制和一位十六进制之间的的转换

  • 实现四位二进制数向十六进制数的转换

  1. 先输入四位的二进制数,每输入一位二进制数就判断输入的时0还是1,即将该数和30H做比较。
  2. 将DL赋值为0。如果输入的数是0,则将DL和0进行或运算(也可以不进行逻辑运算直接移位),将DL的最后一位置为0;如果输入的数是1,则将DL和1进行或运算,将DL的最后一位置为1。然后将DL向左移一位。进行4次循环,级输入4为二进制数。四位输入完毕后,DL就得到输入数的二进制。
  3. 判断DL是否在0-9之间,如果在则ADD DL,30H;如果大于0-9,则ADD DL,37H。(注意输出的字符的值是不等于机器中存放的二进制的值,因此需要进行加法)最后输出对应的16进制的ascii码的值。如果小于0-9则JMP到程序开始重新输入功能序号。
  4. 二进制转十六进制的流程图:
  • 实现一个十六进制数向二进制数的转换

  1. 先输入一个16进制数,判断输入字符的ascii码在30H-39H(0-9)之间,还是在41H-46H(A-F)之间,或者是在61H-66H(a-f)之间。如果是第一种情况则SUB DL,30H,如果是第二种情况则SUB DL,37H,如果是第三种情况则SUB DL,57H。即可得到输入的十六进制数的值,而不是字符的ascii码的值。
  2. 最后需要将DL中的值以二进制输出,因为机器里存放的就是以二进制存放。这里我用循环左移的方式,从二进制的高位到低位一次循环打印。将循环左移一位后的数与1进行与运算,得到最低位的大小(也就是当前准备输出的位置的大小),然后加上30H,得到0/1的ascii码值,依次将DL的值进行输出。
  3. 需要注意,第2步进行与运算的时候不能再原来的寄存器上进行,否则只能得到一位二进制数,后面几位都没法求了。
  4. 一个十六进制数向二进制数的转换流程图:

三、设计分析

四位二进制数向十六进制数的转换

DATA SEGMENTTIP DB 'INPUT THE NUMBER: ','$'TIP1 DB '  <=>  ','$'
DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXLEA DX,TIPMOV AH,09HINT 21HMOV CH,4MOV DL,0
INPUT:MOV AH,1INT 21HCMP AL,30HJA L1              ;输入的是1ROL DL,1OR DL,0JMP AGAIN
L1: ROL DL,1OR DL,1
AGAIN:DEC CHJZ PRINTJMP INPUT
PRINT:CMP DL,0JB EXITCMP DL,9JA COMPER1ADD DL,30HJMP HEN
COMPER1:ADD DL,37H
HEN:MOV AL,DLLEA DX,TIP1MOV AH,09HINT 21HMOV DL,AL MOV AH,02HINT 21H
EXIT:MOV AH,4CHINT 21H
CODE ENDS
END START

实现一个十六进制数向二进制数的转换

DATA SEGMENTTIP DB 'INPUT THE NUMBER: ','$'TIP1 DB '  <=>  ','$'
DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATAMOV DS,AXLEA DX,TIPMOV AH,09HINT 21H
INPUT:MOV AH,1INT 21HCMP AL,30HJB EXITCMP AL,39HJA COMPER1JMP CHANGE1    ;在0~9之间
COMPER1:CMP AL,41HJB EXITCMP AL,46HJA COMPER2JMP CHANGE2    ;在A-F之间
COMPER2:CMP AL,61HJB EXITCMP AL,66HJA EXITJMP CHANGE3    ;在a~f之间CHANGE1:SUB AL,30HJMP ENT
CHANGE2:SUB AL,37HJMP ENT
CHANGE3: SUB AL,57HJMP ENT
ENT:LEA DX,TIP1MOV AH,09HINT 21HMOV CH,8MOV BL,AL
PRINT:  ROL BL,1MOV DL,BLAND DL,1ADD DL,30HMOV AH,02HINT 21HDEC CHJZ EXITJMP PRINT
EXIT:MOV AH,4CHINT 21H
CODE ENDS
END START

用汇编实现二进制数和十六进制数的相互转换相关推荐

  1. Java 实验5 T2 二进制数转换为十六进制数

    题目 二进制数转换为十六进制数 代码 import java.util.Scanner;public class chapter5_2 {public static void main(String[ ...

  2. 二进制数与十六进制数之间如何互相转换

    首先我们来看看16进制与10进制的的对比: 十进制数 :0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 十六进制数 :0 1 2 3 4 5 6 7 8 9 A B C D ...

  3. 编写计算机取余程序_必须收藏,2020年专升本计算机常考知识点总结,抓分的关键点...

    为帮助大三考生复习备考,奔奔对专升本计算机科目常考的知识点进行了总结,供2020届考生学习参考! 01信息技术与计算机文化 考点1:信息与数据 信息是在自然界.人类社会和人类思维活动中普遍存在的一切物 ...

  4. 【C语言】变量和常量、数据类型、进制转换、数据存储

    目录 1. 变量 1.1 变量的分类 1.1.1 局部变量 1.1.2 全局变量 1.2 变量的使用 1.3 变量的作用域和生命周期 1.3.1 作用域 1.3.2 生命周期 2. 常量 2.1 字面 ...

  5. 计算机一级ms必考知识点,计算机一级MsOffice考试知识点整理重点.docx

    第一部分:计算机的发展? 一.计算机发展? 1.计算机的概念 2.第一台计算机?ENIAC(电子数字积分计算机) 1946年2月诞生于美国宾夕法尼亚大学? 主设计师-美籍匈牙利数学家冯·诺依曼? 莫克 ...

  6. 计算机基础知识 基本概念,计算机基本概念与基础知识.ppt

    计算机基本概念与基础知识 学什么? 上网.打字.聊天? 第1章 计算机基本概念与基础知识 1.1 概述 1.2 计算机数据表示 1.3 计算机系统 第一台电子计算机(ENIAC) 1.1.1 计算机的 ...

  7. 一级MS Office 复习资料

    一级MS Office 复习资料 第一章 计算机基础知识 [知识点1] 冯·诺依曼归纳了EDVAC(电子离散变量自动计算机)的主要特点如下: (1)计算机的程序和程序运行所需要的数据以二进制形式存放在 ...

  8. 计算机应用基础教案本中职,[定稿]中职计算机应用基础教案_1-5章4喜欢就下吧(全文完整版)...

    <[定稿]中职计算机应用基础教案_1-5章.doc>由会员分享,可免费在线阅读全文,更多与<[定稿]中职计算机应用基础教案_1-5章(4)(喜欢就下吧)>相关文档资源请在帮帮文 ...

  9. 计算机中的表示方法,计算机应用基础第三章计算机中信息的表示方法

    <计算机应用基础第三章计算机中信息的表示方法>由会员分享,可在线阅读,更多相关<计算机应用基础第三章计算机中信息的表示方法(17页珍藏版)>请在人人文库网上搜索. 1.第第三三 ...

最新文章

  1. 格式化_icecream_python
  2. 使用富文本时修改时怎么回显数据_数据分析步骤繁琐?选对好工具,几步带你玩转数据分析...
  3. mysql localhost和127.0.0.1的区别
  4. centos losf 安装_Linux Centos7部署环境安装-CentOS
  5. 如何设置多级标题_办公技巧|标题样式amp;多级列表结合,再也不用手动修改1.1、1.2 ...!...
  6. python cgi库_《Python 数据库 GUI CGI编程》
  7. 微信小程序用户数据解密
  8. Java常用类:String
  9. 通过了微软的SharePoint认证考试(70-542: Microsoft Office SharePoint Server 2007 - Application Development)...
  10. 编译 OpenWrt/LEDE 基本过程
  11. python 获取二维数组所有元素
  12. Linux下的文件共享全攻略系列之三:主流FTP服务器Wu-ftpd入门指南
  13. nlp gpt论文_GPT-3是未来。 但是NLP目前可以做什么?
  14. 使用lex与yacc词法语法工具进行简单的SQL语义检查
  15. Chrome浏览器中比较实用的一些插件(文字复制、广告拦截、视频倍速、文献下载)
  16. ZedBoard 最小系统构建 (一)-硬件结构搭建
  17. ORACLE数据文件系统只读(FC中断引起)转载【xiaoyu】
  18. 黑帽SEO研究之js快照劫持代码分析
  19. 请问蓝牙设备如何测试?
  20. OKK集中生产加工中心(MC)的主要部品

热门文章

  1. ubuntu20.04下VSCode无法输入中文解决方法
  2. 元宇宙是人类未来的数字化生存,将对社会产生深远的影响
  3. 热修复的两个框架Bugly+Sophix
  4. History.pushState()更改网页网址
  5. Java类的初始化顺序
  6. 代码随想录算法训练营第6天 | 454. 四数相加 II 383. 赎金信 15. 三数之和 18. 四数之和
  7. python实现签名RSA算法
  8. 基于网络电话话营销数据的数据分析+机器学习预测
  9. ctfshow 网络迷踪-哐啷哐啷+鲶鱼之谜
  10. mysql视图数据更新_怎么更新Mysql数据表视图中数据