输入四位十六进制的数值,将十六进制数值转二进制输出

程序运行:

代码:


datas segmentmaxLength                 db 5hexLength                 db 0hex                       db 5 dup(?)bin                      db 100h dup(?)inputPrompt               db 'input 4 bit hexadecimal:$'outputBinary              db 0dh,0ah,'output binary:$'outputInputError          db 0dh,0ah,'input error!$'datas endsstacks segment stackdb  100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks
main   proc  far
start:push dsmov ax,0hpush axmov ax,datas          ;初始化dsmov ds,axlea dx,inputPrompt      ;输入提示mov ah,9int 21hlea dx,maxLength        ;输入十六进制字符mov ah,10int 21hmov cl,hexLength        ;若字符串长度不为4,则输入错误cmp cl,4jne inputErrormov ch,0                ;设置ch,使得cx为字符串的长度lea si,hex              lea di,bins:mov al,[si]           cmp al,'9'            ;判断字符是否大于'9'ja english            ;大于9则跳转去判断是否为其他十六进制字符cmp al,'0'            ;判断字符是否大于'0' jb inputError         ;若小于'0',则输出jmp tobinary          ;否则,则转换为二进制english:or al,32             ;将字符变成小写字母,不是小写字母的运算结果不变cmp al,'a'            ;判断字符是否大于'a'jb inputError         ;若小于'a',则输入错误cmp al,'f'            ;判断字符是否大于'f'ja inputError         ;若大于'f',则输入错误 sub al,7             ;先减7,变成数字的值+30htobinary:sub al,30h            ;减去30h,剩下数值call binary           ;转换二进制,使用al,diinc si                ;数组下标加一loop slea dx,outputBinary       ;输出二进制提示mov ah,9int 21hmov byte ptr [di],'$'     ;设置二进制字符串的结束字符lea dx,bin                 ;输出二进制字符串mov ah,9int 21hjmp exitinputError:                   ;输入错误提示lea dx,outputInputErrormov ah,9int 21h  exit:retmain endpbinary proc nearpush cx                  ;保存cxmov cl,4                 ;将al左移4位,使al的高半字节为原来al的低半字节shl al,clmov cx,4sbin:shl al,1                   ;左移一位jc one                     ;进位为1,跳转到onemov byte ptr [di],'0'      ;否则,二进制数组置'0'jmp restart                 ;跳转到restartone:                        ;置'1'mov byte ptr [di],'1'restart:add di,1loop sbinpop cx                        ;恢复cxretbinary endp
codes endsend main

汇编语言(九)之十六进制数值转二进制相关推荐

  1. 汇编语言(二十九)之数值的二进制和十进制

    给定一个数,输出该数的二进制和十进制数 程序运行: 代码: datas segmentVAL1 dw 156datas endsstacks segment stackdb 100h dup(?)st ...

  2. JavaScript二进制、八进制和十六进制数值

    js教程JavaScript 支持把十进制数值转换为二进制.八进制和十六进制等不同进制的数值. 示例1 本篇文章由 泉州SEO www.234yp.com 整理发布,js教程 www.234yp.co ...

  3. rgb html转换,RGB与十六进制数值互转(html)

    保存下来,浏览器打开就可以使用了,挺方便 CSS入门 十六进制颜色值 值"#FF9999"是由红绿蓝三原色组成的颜色,#号后的两位表示红,其后的两位为绿,最后的两位为蓝. func ...

  4. 计算机为什么要学16进制,为什么人们通常用十六进制而不是二进制写计算机

    人们通常用十六进制而不是二进制写计算机,因为十六进制写比二进制写更方便.数学上,十六进制是每一个十六进制的进位制,一般用数字0 ~ 9和字母A~F表示,其中"A ~ F"表示&qu ...

  5. C++ [进制转换]十六进制转化为二进制

    C++ [进制转换]十六进制转化为二进制 思路:利用输入十六进制字符串,然后从前往后逐一提取单一字符,转换为整形变量,在应用 switch-case 来对应到此数对应的二进制四位上. 注意:字符转换为 ...

  6. Python3制作鼠标拾色器并显示十六进制数值(有单独窗口显示取色)

    Python3制作鼠标拾色器并显示十六进制数值(有单独窗口显示取色) 代码如下,结合OpenCV的鼠标事件,窗体大小的调整,我们可以轻松地制作拾色器并进行显示: import cv2import nu ...

  7. php 数组转二进制,php转16进制_php 十六进制转化为二进制的代码

    摘要 腾兴网为您分享:php 十六进制转化为二进制的代码,字体配置,政务易,弈玩游戏,易信等软件知识,以及517电信日海报,e568驱动,彩虹qq2013,孢子,和路通,ae版本,乐视行车记录仪app ...

  8. java枚举数字_Java枚举类型的使用,数值的二进制表示

    一.Java枚举类型的使用 首先请看这段代码: packagejava上课;public classEnumTest {public static voidmain(String[] args) { ...

  9. php 直接使用十六进制,人们通常用十六进制而不用二进制书写计算机是为什么...

    人们通常用十六进制而不用二进制书写计算机是因为十六进制的书写比二进制方便:十六进制在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示,其中"A~F"表示" ...

最新文章

  1. 操作系统学习2:操作系统的发展和概览
  2. Accurate circular consensus long-read sequencing improves variant detection and assembly of a human
  3. 04741计算机网络原理知识点,04741计算机网络原理知识点整理.doc
  4. elasticsearch查询及logstash简介
  5. LA3942字典树+递推
  6. 读书笔记《单核工作法》1
  7. python 动态类型检测 性能_4种速度最慢的动态编程语言,你一定用过
  8. LINUN 网络连接小记
  9. Centos7 Docker容器操作_入门试炼03
  10. 富文本编辑器 CKeditor
  11. Mybatis学习笔记(二) 之实现数据库的增删改查
  12. 探索软件设计模式(二)
  13. (转)Oracle中通过位图索引提高查询效率
  14. 使用 visio 画软件结构图
  15. openfoam学习心得---牛顿流体相关公式理解、转换与整理
  16. Newton法(牛顿法 Newton Method)
  17. AI萃取的5G咖啡,只有华为能调出这个味道
  18. git merge工具 meld
  19. 方舟生存服务器没有响应怎么办,方舟生存进化搜服务器闪退怎么办? Fata error临时解决办法一览...
  20. JS实现强制回收内存方法两则

热门文章

  1. 算法设计与分析——回溯法——旅行售货员问题
  2. leetcode199. 二叉树的右视图(层序遍历03)
  3. 4位BCD计数器设计
  4. [C++STL]queue容器用法介绍
  5. C++实现五子棋小游戏
  6. C++,Java编程中 标识符 常见命名约定
  7. [C++STL]C++实现string容器
  8. C++ class实现双向循环链表(完整代码)
  9. protobufjs 命令执行_protobufjs简单使用
  10. 分布式缓存——缓存与数据库数据一致性