汇编语言 十六进制转换为二进制

汇编语言中的16进制与2进制快速转换方法 背景 目前很少博客说明16进制与2进制直接转换的博客,16,10,2进制它们的相互转换又是在生产实践中用处又非常广泛,且很重要。本文根据16进制与2进制的规律,帮助我们快速的理解掌握2进制、16进制、10进制相互转换的过程。 内容 16进制,2进制,10进制对照表 0001 1    1000 8 0010 2    1001 9 0011 3    1010 A   10 0100 4 &nbsp 阅读详情


今天写了十六进制转换为二进制的汇编语言小程序,感觉挺有逻辑性的,运用条件分支,进行转换,这里把自己的心得分享一下,希望对大家有点小小的启示

由于,代码中已经有了详细注释,在这里我只是说出我写该程序的思路,首先得有一个流程图,比自己的想法用流程图表示出来,之后便可以照着流程图将自己的想法用汇编语言实现出来,在不懂得地方,只需要拿笔比划一下运行过程,想想程序怎么运行,我想会得到你想要的答案!!!(说明一下,如果输入错误程序直接结束,未返回提示信息!!!我自己蠢)

DATAS SEGMENT
    TIP DB 'INPUT THE NUMBER: ',0AH,0DH,'$'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
   	
    MOV DX,OFFSET TIP ;输出提示输入数字标语
    MOV AH,09H
    INT 21H
    
    MOV CH,4 ;记录输入数字次数
    MOV CL,4 ;一次左移位数
    MOV BX,0 ;记录左移之后的数字
    MOV DH,16 ;输出十六位二进制数字控制
   
INPUT:
	MOV AH,1
	INT 21H
	;判断是否在0-9之间
	cmp AL,30H
	JB EXIT ;比0小则退出
	CMP AL,39H
	JA COMPER1 ;比9大则判断与A的大小
	;若进行到下一步则说明这次输入的是0-9之间的数字,转换成二进制
	JMP CHANGE1
COMPER1:
	CMP AL,41H ;判断与A的大小
	JB EXIT ;若小于A则退出
	CMP AL,46H ;判断与F的大小
	JA COMPER2 ;若比F大则判断与a的大小
	JMP CHANGE2 ;进行到这一步则说明输入的是A-F,转换成二进制
COMPER2:
	CMP AL,61H ;判断与a的大小
	JB EXIT ;小于a则退出
	CMP AL,66H ; 判断与f的大小
	JA EXIT ; 大于f则退出
	JMP CHANGE3 ; 进行到这一步说明输入的是a-f,转换成二进制

CHANGE1:
	SUB AL,30H ;转换成0-9
	SHL BX,CL ;左移四位 
	OR BL,AL ; 进行或运算得到四位二进制
	DEC CH ; 输入数字次数自减1
	JZ ENT ; 四位十六进制全部输入完毕则打印,否则继续输入
	JMP INPUT 
CHANGE2:
	SUB AL,37H ;此时AL中是A-F,减去37H是0AH,0BH...0FH
	SHL BX,CL
	OR BL,AL
	DEC CH
	JZ ENT
	JMP INPUT
CHANGE3:
	SUB AL,57H ;此时AL中是a-f,减去57H就是0AH,0BH...0FH
	SHL BX,CL
	OR BL,AL
	DEC CH
	JZ ENT
	JMP INPUT
;所有的CHANGE1,2,3道理都是一样的
ENT:
	MOV DL, 0DH ;0D是回车符的ASCII码.
	MOV AH, 02H ;输出单个字符.
	INT 21H ;输出.
	MOV DL, 0AH ;0A是换行符的ASCII码.
	MOV AH, 02H
	INT 21H 
	;这里0DH,和0AH要一起使用,单独使用会报错
	JMP PRINT
PRINT:
	SHL BX,1 
	JNC L1 ;判断进位,如果是0 跳到了L1
	MOV DL,'1' ;输出1
	MOV AH,02H
	INT 21H
	DEC DH
	JZ EXIT
	JMP PRINT
L1:
	MOV DL,'0' ;输出0
	MOV AH,02H
	INT 21H
	DEC DH 
	JZ EXIT
	JMP PRINT
EXIT:
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

这里是运行的结果截图:
















汇编语言程序设计-十进制转换为十六进制的程序实现 DEC2HEX     SEGMENT                  ASSUME CS:DEC2HEX MAIN             PROC FAR REPEAT:       CALL DEC2BIN   ;十进制转换为二进制                  CALL CRLF     ;回车与换行                  CALL BIN2HEX   ;二进制 阅读详情

相关推荐

汇编代码直接转换二进制数据

可以直接把汇编代码转换成二进制数据,然后对照写入扇区即可运行,非常方便

汇编 十六进制转二进制

感谢百篇之中翻到这篇! 为了感谢你们,特意给大家一个福利------------- 记住口诀:三四五六七 什么意思呢 0 的ascii码值是 30H A-Z 的ascii码值是 41H-5AH a-z 的ascii码值是 61H-7AH   十六进制转二进制具体代码 DATA SEGMENT         DATA_0X DW 0F804H                   ...

愿你饱经冷暖,仍保纯真 8746

汇编语言十六进制转换成二进制

汇编语言(英语:Assembly language)是一种用于电子计算机、微处理器、单片机或其他可编程器件的低级语言,在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。使用汇编语言编写的源代码,需要通过使用相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。

汇编程序设计-05-16进制与2进制的互相转换

一、16进制转2进制 有如下数字: 二、2进制转16进制 从右边往左每4位划分一格,不足4位补0,有如下数字

FairLikeSnow的博客 604

MIPS的汇编器,将MIPS汇编程序生成二进制程序

MIPS的汇编器,将MIPS汇编程序生成二进制程序 MIPS的汇编器,将MIPS汇编程序生成二进制程序 MIPS的汇编器,将MIPS汇编程序生成二进制程序

汇编,16进制转化为2进制

汇编程序:将16进制转化为2进制的程序。

硬件设计测试中,MIPS汇编指令翻译成二进制编码的Python实现

用Python实现一些 MIPS 汇编指令翻译成二进制指令的功能。

图灵带个刀 2520

汇编语言实现二进制,十进制,十六进制的相互转换

8086系统,利用汇编语言实现8位以上进制转换

汇编语言:将四位十六进制数转换成二进制数

汇编语言:将四位十六进制数转换成二进制数题目要求运行截图编程平台代码实现 题目要求 从键盘接收一个四位的十六进制数,将其转换成二进制数后输出,不考虑错误输入。 运行截图 编程平台 Masm for Windows 集成实验环境 2012.5 代码实现 DATAS SEGMENT data DW 0;存放输入的十六进制数 input DB 'Enter a four-digit hexadecimal number: $' print DB 13,10,'Corresponding

XXX 7332

CMN-700组件全解析:从XP路由器到HN-F主节点的实战配置指南

本文深入解析Arm CMN-700片上网络IP的核心组件与实战配置。重点剖析了XP网格路由器的拓扑规划与CHI通道管理,以及HN-F全一致性主节点在维护缓存一致性、管理SLC和地址映射中的关键作用。通过一个12×12网格的配置案例,为硬件工程师提供了从组件布局、地址映射到性能调优的系统级设计指南。

weixin_29313423的博客 281

C300 | 5680t | 新格林| AN5516 | 远程ONU升级指导

ONU的远程管理升级 1、ZTE C300 OLT : 1.1 环境拓扑: PC1(filezilla server)------(uplink_default-vlanID)OLT---------ONU | | mng1 1.2 配置部署: 1):PC1(filezilla server): IP:192.168.88.252 255.255.255.0 配置FTP-Server的用户名:gp...

Shelly的博客 3770

汇编语言实现二进制、十进制、十六进制相互转换

汇编语言实现二进制、十进制、十六进制相互转换 去发现同类优质开源项目:https://gitcode.com/ 简介 本项目提供了一个基于8086系统的汇编语言程序,实现了8位以上二进制、十进制和十六进制之间的相互转换。用户可以通过该程序方便地进行不同进制之间的转换,提高工作效率。 功能 支持二进制、十进制、十六进制之间的相互转换。 兼容8位以上进制转换。 界面简洁,操作方便。 使用说明 将...

gitblog_06785的博客 368

Android System Slice应用加载分析,及启用Slice后,锁屏日期第一次开机正常显示,但后面锁屏不显示问题分析

最近发现Android P上锁屏界面,日期不显示,发现从P开始后,出现了Slice来允许应用以模块化,可交互的方式,插入多个使用场景。Android P的system UI 也使用到了这一特性,表现为锁屏时间,日期,勿扰图标,闹钟等。 如何使用Slice 以System UI中KeyguardSliceView.java来说明它的使用方法 首先,我们打开System UI 的mk 文件,可以看到以...

qq_33595823的博客 3033

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

用汇编实现二进制数向十六进制数的转换 一、实现功能 1)实现二进制数向十六进制数的转换 2)实现十六进制数向二进制数的转换‘ 二、设计分析       汇编语言中,字符在机器中都是以ascii码的二进制格式存储,但是汇编语言写的时候常用十六进制,因此需要好好看看ascii码的十六进制表。      特别是进制转换一定要注意,机器中存储的是数的二进制数本身,而我们输入输出的是数的ascii码的值,因此注意对寄存器中数的加减操作。   &nb

weixin_44194299的博客 1万+

学习使用turtlebot2——ROS上安装turtlebot2

安装环境:    安装Ubuntu 14.04版本和ROS Indigo    参考:http://wiki.ros.org/turtlebot/Tutorials安装步骤    有两种安装方法,一种直接的安装命令,另外一种源码编译安装,区别在于:直接安装命令是安装在电脑默认路径/opt/ros/indigo/share里面不便于更改代码,因为默认路径下文件一般有访问权限,无法直接更改,需要使用s...

weixin_42670641的博客 2531

编程实践:寒武纪-LLM&VLM模型量化&部署

本文介绍了在MLU370-S4平台上对大模型(LLM/VLM)进行量化的两种方法:SmoothQuant和WeightOnly。以Qwen2-VL-2B模型为例,详细说明了两种量化方式的命令行参数配置,包括必须设置的per_channel选项和量化参数调整建议。量化完成后,提供了模型部署的具体命令示例,包含设备分配、端口设置、并行度等关键参数。文章强调在MLU370芯片上需要手动设置block_size,并指出两种量化方式只能二选一使用。配套资料已上传至百度网盘供参考。

微风❤水墨 506

汇编语言:将ASCⅡ码表示的十进制数转换为二进制数/十六进制数

汇编语言:将ASCⅡ码表示的十进制数转换为二进制数/十六进制数 你们好! 这是我的第一个汇编程序的博客,汇编是一个神奇的东西,你深入了解他之后会为他着迷的!!! 题目 将ASCⅡ表示的十进制数字转化为二进制数,例如,默认输入30H,30H,32H,35H,36H,那么程序的最后查看AX寄存器应该是0100。 分析 题目中的30h代表是的十进制0的ASCⅡ码,十进制的数字0-9对应的ASCⅡ码就是3...

XYshaonianhaofang的博客 1万+

yolo 图像检测、关键点检测单摄像头测量物体尺寸长度大小

new_distance/real_size (待求物体像素距离与实际距离比值)= distance / metric_length (参照物像素距离与实际距离比值)然后运行size_demo进行要测量的物体进行关节点检测距离;metric_length是上面耳机选取的两个点的实际物理距离,大概6cm;这里用的windows。通过关键点检测识别物体关键点的像素距离,然后参考比例尺计算实际距离。2)关键点算法这里用的现有的进行测试,实际场景需要自己训练。这里拿这模型推理出的关键点坐标进行后续长度计算。

weixin_42357472的博客 2523

汇编语言 十六进制ASCII码转换为二进制显示

把ascii码(0-9 A-F)转化成二进制显示 先输入次数(1-9 A-F) 再转换

think_ycx的专栏 1万+

VS2019编译使用log4cplus 1.2.0

logger.properties 文件。第三步,创建项目来测试,配置库。第二步,使用VS2019编译。

h a 6 6 6 c k 为 你解决复杂难题! 525

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

汇编语言实现二进制到十六进制的转换

prognam segment ;定义代码段 main proc far;子程序,far表示段间程序 assume cs: prognam start: push ds;段寄存器 sub ax,ax;数据寄存器 push ax mov bx,0000011111111000B mov ch,4;循环左移 rotate: mov cl,4;设定低位位数 rol bx,cl;循环左移 mov al,bl ...

mxl_20000425的博客 4205

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

学习汇编语言-输入十进制数转为十六进制和二进制

十进制接收:依次输入十进制数,运算存储在bx中以回车键结束 转十六进制:依次出栈十进制数,循环左移十进制,al转换十六进制,末尾拼接H 转二进制:利用寄存器除2取余实现末尾拼接

潜心 2475

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

输入一个四位十六进制数转换成二进制数输出(汇编实现)

实现功能如下: 1.只接收0~9,A~Z,a~z范围内的字符输入,该范围外内容输入会报错并进行重新输入 2.输出的二进制数有后缀B DATA SEGMENT MSG1 DB 'INPUT A NUMBER OF FOUR HEXADECIMAL DIGIT$' MSG2 DB 'INPUT ILLEGAL$' HOUZHUI DB 'B$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV A

weixin_50425831的博客 3544

汇编语言:从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q)表示

;从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q) DATA SEGMENT ;此处输入数据段代码 INFO1 DB 0DH,0AH,'INPUT A NUMBER:$' INFO2 DB 0DH,0AH,'THE DECIMAL OF THIS NUMBER IS:$' INFO3 DB 0DH,0AH,'THE HEXIMAL

在路上 1万+
下一篇: 进程模拟生产者-消费者问题
coderlyf
博客等级 码龄10年 25粉丝 17原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值