需求分析

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

难点:
十进制移位获取十六进制
寄存器除法

详细代码

data segmentctr db 0DH,0AH,'$'input_str db 'Enter a decimal number one by one. The Enter key is complete,Maximum 65535!','$'binary db '2-decimal: ','$'decimalism db '10-decimal: ','$'hexadecimal db '16-decimal: ','$'
data endsstack segmentstack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,ax                  ;DS寄存器指向数据段main:lea dx,input_str  ;提示输入call pr09call crlf          ;在下一行显示call read          ;读入十进制数,结果在BXcall crlf          ;在下一行显示push bxcall convert2   ;进行转换并输出call crlfpop bxcall crlfcall convert16   ;进行转换并输出call crlf          ;在下一行显示jmp ex               ;跳转到程序结束read proc near    ;读入函数READlea dx,decimalismcall pr09mov bx,0newchar:mov ah,1          ; INT 21H, AH=1表示从键盘带回显读入字符到AL中int 21hxor ah,ah          cmp al,'0'        ;如果输入‘0'-'9'之外的字符,则结束读入js exitcmp al,'9'ja exitsub al,'0'         ;把字符转换为数字,比如'8'转换为数字8,保存在ALxchg bx,ax     ;寄存器内容交换mov cx,0ahmul cx           ;把之前输入的数乘以10,加上本次输入,保存到BX.xchg bx,axadd bx,axjmp newchar   ;结果在BXexit:retread endpconvert16 proc near   ;转换函数mov ch,04Dlea dx,hexadecimalcall pr09rotate:mov cl,04Drol bx,cl        ;BX循环左移4个bit, 也就是把最高位的16进制数放到BL的末尾mov al,bland al,0FH      ;把4位数放到ALadd al,30H     ;转换为ASCIIcmp al,'9'jb print        ;字符为'9'之下,直接显示;这个条件好象不对啊,应该是JBE才对add al,07H   ;'9'之上的,转换为'A'-'F'print:mov dl,al     ;显示字符call pr02dec chjne rotate   ;循环mov dl,'H'     ;显示字符call pr02retconvert16 endpconvert2 proc near   ;转换函数lea dx,binarycall pr09mov ax,bx ;将记录的十进制数放入ax寄存器,预备除法mov cx,0 ;记录运算次数rotate1:inc cxmov dx,0 ;利用除数取模得到二进制,高位归0mov bx,2 ;设置被除数div bx ;执行除法push dx    ;余数入栈cmp ax,0   ;比较商ja rotate1   ;是否大于0,则继续除print1:pop ax      ;余数依次出栈,这里正好是倒着add al,48   ; al+48形成ascii码mov ah,0eh  ;打印int 10hloop print1  ;循环打印,cx中存在记录mov dl,'B'     ;显示字符call pr02retconvert2 endpcrlf proc near lea dx,ctrmov ah,09hint 21hretcrlf endppr09 proc nearmov ah,09hint 21hretpr09 endppr02 proc nearmov ah,2int 21hretpr02 endpex: mov ah,4chint 21h
code ends
end start

参考文章

汇编语言练习题
十进制转十六进制

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

  1. 十进制数转为十六进制字符串

    面试中经常有相关进制转换的面试题,工作中也涉及到了.比如数据传输的时候就需要转换成16进制,不过那是字符串,我们这里说整型. #include<stdio.h> #include<s ...

  2. 设计程序,从键盘输入十进制数,结果存放在BUFFER中(无符号数,16位),再把结果以十六进制方式在屏幕输出。

    只为记录汇编作业 题目:设计程序,从键盘输入十进制数,结果存放在BUFFER中(无符号数,16位),再把结果以十六进制方式在屏幕输出. 例如:若键盘输入: 65534:则转换完,屏幕输出:FFFE 代 ...

  3. 十进制整数转为十六进制整数(C++实现)

    一.代码功能:输入一个十进制整数,将其转化为十六进制整数并输出 二.源码 #include<iostream> #include<cstring> #include<cm ...

  4. 输入一个十进制数,转化为二进制

    1.代码如下: // test.cpp : Defines the entry point for the console application. // /* 输入一个十进制数,转化为二进制.*/ ...

  5. 如何用算法把一个十进制数转为十六进制数-C语言基础

    这一篇文章要探讨的是"如何用算法实现十进制转十六进制"并不涉及什么特别的知识点.属于C语言基础篇. 在翻找素材的时候,发现一篇以前写的挺有意思的代码,这篇代码里面涉及的知识点没有什 ...

  6. 将十进制数转为N进制的方法

    设有一个数 A,比如 A=15 ,转为四进制数应当表示为33. 原理如下: 1.A除N, 2.A模N. 3.保存A模N的值. 4.循环1,2.直到 A除N的值等于0; Code  class Nume ...

  7. 十进制转二进制 java 程序_如何把一个十进制数转为二进制数的Java程序?

    展开全部 十进制数转二进制分2部分,整数和小数部分. 1.整数部分 十进制整数转换为二进制整数采用62616964757a686964616fe59b9ee7ad9431333337616533&qu ...

  8. C语言-输入十进制数转换为二进制数

    DEC十进制转换为BIN二进制  BIN二进制 0 1 除2取余,倒序排列,高位补零 例如:14 14%2=0    14/2=7  7%2=1   7/2=3 3%2=1    3/2=1 1%2= ...

  9. 【进制转换】如何使用C++将一个十进制数转为16进制?

    题目 题目描述 请从键盘读入一个非负整数n(n是一个不超过18位的正整数),将n转换为16进制! 注意:16进制即逢16进1,每一位上可以是从小到大为0.1.2.3.4.5.6.7.8.9.A.B.C ...

最新文章

  1. PAT 显示格式错误
  2. WSUS使用网络共享存储补丁
  3. SQL高效率语句(一)
  4. Git、TortoiseGit、GitHub、Gitee、GitLab 安装与入门使用
  5. MySQL数据库创建用户_修改用户_删除用户_设置用户
  6. 敏捷开发系列学习总结(15)——Spotify敏捷模式详解三部曲第三篇:工程文化
  7. JAVA bean与XML互转的利器---XStream
  8. rhel6 dhcp dns配置小贴士
  9. 【思维、费马小定理】CQXYM Count Permutations
  10. OOP的核心思想是什么?
  11. 收银机多少钱一台推荐科脉系统_收银系统多少钱一套?常用收银系统价格大盘点...
  12. 基于fabricjs实现钢笔工具
  13. Windows电脑如何开启CPU虚拟化
  14. 【转载】GitHub中国区前100名到底是什么样的人
  15. 易福门电感式接近开关IGS200
  16. 安卓期末大作业——图书信息管理系统
  17. idea 创建一个springboot 项目(hello world)
  18. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛题解 H
  19. 《千与千寻》高清下载
  20. Docker 容器中运行 Docker 命令

热门文章

  1. 用C语言打印一个金字塔
  2. MATLAB 赋值具有的非单一 rhs 维度多于非单一下标数
  3. BOM展开BAPI(标准BOM、销售BOM、WBS BOM)
  4. VUE报错You are using the runtime-only build of Vue where the template compiler is not available
  5. 集合框架(Collection)——Map和例题
  6. iPhone开发基础教程笔记(二)--第三章 处理基本交互
  7. https://tieba.baidu.com/p/4008858829
  8. 跟小静读CLR via C#(06)- 构造器
  9. C#扫雷外挂辅助工具
  10. 直属上司,才是你最该管的人