stacks segment
stack dw 200h dup(0);不太明白要200h这么大
stacks ends
data segment
in_buf db 6;定义输入字符串最大长度
in_len db ?;输入字符串实际长度
dec_buf db 6 dup(30h),'='
bin_buf db 16 dup(30h),'B='
hex_buf db 4 dup(30h),'H'
crlf db 0dh,0ah,'$'
;注意这儿定义数据是放在一块儿的,就不需要把二进制和十六进制的字符串分别再设置结束符
mes_1 db 'please input a number(0~65535):$'
mes_2 db 'input invalid,exit!',0dh,0ah,'$'
data ends
code segmentassume cs:code,ds:data,ss:stacks
main:
mov ax,data
mov ds,ax
call input
mov bx,offset dec_buf
add bl,in_len
mov byte ptr [bx],'D';注意!这儿一定要覆盖住原字符串的最后一个回车符
;否则,输出时,那个回车符会使前面的字符被覆盖
call str2bin;首先判断输入的合法性并转化为数值
jc exit_no
call bin2str;将十进制转化为二进制
call hex2str;将十进制转化为十六进制
mov dx,offset crlf
call out_str
mov dx,offset dec_buf
call out_str
mov ah,4ch
int 21hexit_no:;输入不合法时的提示
mov dx,offset crlf
call out_str
mov dx,offset mes_2
call out_str
retinput:;功能:从键盘输入字符串
mov dx,offset mes_1
mov ah,9
int 21h
mov dx,offset in_buf
mov ah,10
int 21h
retstr2bin:;功能:判断输入的十进制是否合法
;若合法则把十进制的ASCII码转化成数值形式
sub ax,ax;ax用来存放十进制的最终数值
mov si,10;si用来做乘数
sub ch,ch
mov cl,in_len;输入串的实际长度设置为循环次数
mov di,offset dec_buf;di指向串实际开始的位置
loop_10:
mov bl,[di]
cmp bl,39h;若大于字符9,不合法
ja quit_n
cmp bl,30h;若小于字符0,不合法
jb quit_n
sub bh,bh;避免bh里面有杂数据,清零
sub bl,30h
mul si;ax*10
jc quit_n
add ax,bx;(ax*10)+bx
jc quit_n
inc di
loop loop_10;cx不为零,继续循环
clc;没有跳转到quit_n,则表示合法,设置cf=0
ret
quit_n:
stc;表明输入的十进制不合法,设置cf=1
retbin2str:;功能:将十进制转化为二进制
push ax;ax保存的是十进制的数值
;因为之后还要用到去转化为十六进制,所以先push进堆栈暂存
mov cx,16;设置需要循环的次数
mov bx,offset bin_buf
loop_20:
shl ax,1
jnc next_20;如果该位为零
inc byte ptr [bx]
next_20:
inc bx
loop loop_20
pop ax
rethex2str:;功能:将十进制转化为十六进制
mov bx,ax
mov si,offset hex_buf
mov ch,4
loop_30:
mov cl,4
rol bx,cl;当移动次数大于1时,必须用cl代替
mov al,bl;从高到低提取四位二进制数送入al
and al,0fh
add al,30h;al=0~9,加30h转化为ascii码
cmp al,3ah
jl next_30
add al,7;al>9,加37h转化为ascii码
next_30:
mov [si],al
inc si
dec ch
jnz loop_30;注意,这儿只能用dec运算对标志位的设置来判断循环与否
;因为cl被用来存放位移数了
retout_str:;用于输出的子程序
mov ah,9
int 21h
retcode ends
end main

运行结果如图:

十进制转化为二进制与十六进制显示(汇编程序)相关推荐

  1. 数据结构6:栈的应用(十进制转化为二进制)

    十进制转化为二进制,采用的是"除以2求余数"的算法,就是将整数不断除以2,每次得到的余数就是由低到高的二进制 这个"除以2"的过程得到的余数是从低到高的次序,而 ...

  2. 如何快速将十进制转化为二进制

    如何快速将十进制转化为二进制 16340028 http://sdcs.sysu.edu.cn/ Contents 作用 如何进行 原理 1.作用 十进制转化二进制的作用在于更好的了解进制间的关系.十 ...

  3. 把十进制转化为二进制的一种方法

    把十进制转化为二进制的一种方法: void pb(int n){if(n != 0){pb(n/2);putchar('0'+n%2);} }int main(void){for(int i=10; ...

  4. python十进制转化为二进制

    python十进制转化为二进制 实例:给定一个非负十进制数n,如何将其转换成为一个二进制数? 输入:123 输出:1111011 输入:1363 输出:10101010011 输入:12 输出:110 ...

  5. 十进制转化成二进制(C++)

    十进制转化为二进制的方法,在数学上是除二取余法,如下图(自己在画图上画的,有点子丑,,,): 我这是以36为例,用36不断的去除二取余,左边就是余数,最后从下至上把余数连起来,就是我们要得到的结果,就 ...

  6. C语言——十进制转化为二进制

    十进制转化为二进制:将十进制一直除以二,然后用数组储存余数,并取商,如此循环直到十进制数小于零. #include <stdio.h> void main() {  short int n ...

  7. java十进制转化为二进制

    十进制转化为二进制的方法 Integer.toBinaryString(int i) 注意:转化的二进制以字符串的形式返回 查看一个数的二进制上某一位是0还是1的方法: 1.屏蔽法 num & ...

  8. c语言实例--十进制转化为二进制

    问题:实现十进制转化为二进制的代码. 思路先行: 第一步:十进制转化为二进制的过程中,就是每次除2取余,并存放在数组中. 第二步:输入的数字在0-32767之间. 第三步:for循环(从0到14位,最 ...

  9. C语言基础代码合集 | 十进制转化为二进制

    1. 九九乘法表 #include <stdio.h> int main(void) {int a,b;for (a=1;a<=9;a++)//列的循环{for(b=a;b<= ...

最新文章

  1. 不愧是北大疯人院!阿里数学竞赛决赛,入围人数超过清华和南大之和!
  2. 中小企业信息化--网页设计模拟题1
  3. opencv nms 学习笔记
  4. requirejs 加载其它js
  5. 【五线谱】音高表示 ( 低音谱号 | C1 36 音符音高表示 | C2 48 音符音高表示 | C3 60 音符音高表示 )
  6. 技术详解:基于人脸识别的 AI 弹幕
  7. 【AI视野·今日CV 计算机视觉论文速览 第214期】Mon, 7 Jun 2021
  8. 【bzoj4386】[POI2015]Wycieczki 矩阵乘法
  9. Android studio 0.5.0 注意事项
  10. 【C/C++】友元函数和友元类
  11. 面试被问到平衡二叉树如何平衡?
  12. C语言关键字分析系列
  13. IF NOT EXISTS和 IF EXISTS的区别
  14. Third1: Basic Web applications BASIC NFS services triggering mount | Cloud computing
  15. gitbook安装中installing gitbook xxx 时间过长的问题
  16. no main manifest attribute, in xxxx.jar 项目部署报错
  17. iOS - 融云即时通讯的简单使用
  18. 电脑中没有显示网络连接到服务器地址,电脑没有网络可以连接到服务器地址
  19. 云电竞的服务器,雷风科技电竞云桌面解决方案
  20. 在线压力并发工具AB版 简单易用

热门文章

  1. python小课堂25_Python入门第25课——小案例之随机数(只读课堂)
  2. 磁带机PowerVault LTO-7使用
  3. 五一出游-徒步旅行主旋律
  4. PE市盈率们之间的区别
  5. 啥? 代码可以改变世界? 道翰天琼认知智能API接口平台为您揭秘。
  6. 多角度透彻理解渐近表示法(大O表示法)
  7. maskrcnn_benchmark 代码详解(更新中...)
  8. VB控件实现IObjectSafety安全接口(zt)
  9. 人脸识别准确概率计算——超详细
  10. BI Publisher 模板开发语法大全