汇编语言:十进制数转二进制

您所在的位置:网站首页 十进制如何转换成二进制数 汇编语言:十进制数转二进制

汇编语言:十进制数转二进制

2024-07-10 06:33| 来源: 网络整理| 查看: 265

设计完整的8086汇编源程序,其功能是通过键盘把多位的十进制转换为二进制数,并通过显示器显示出来。

         题目分析:

本汇编源程序包括以下模块:

         ⑴利用计算机系统调用功能实现数据输入,并把输入的ASCⅡ码转换为扩展的BCD码;

         ⑵设计一个算法,把多位的BCD码转换为多位的二进制数;

         ⑶利用计算机系统调用功能实现数据输出,把二进制数转换为ASCⅡ码显示出来。

         程序设计如下变量:

ASCⅡ码数组X_ASCⅡ码,用于存放输入的ASCⅡ码串;

BCD码数组X_BCD,用于存放转换的BCD码串;

二进制数数组Y_HEX,用于存放多位二进制数,变量定义如下:

DATA         SEGMENT

         BUFFER    DB    32                                 ;允许输入字符数目为32

         CHAR_L    DB    0                                   ;实际输入字符串的长度

         X_ASC       DB    32 DUP(0)                  ;定义ASCⅡ码串

         X_BCD      DB    32 DUP(0)                  ;定义BCD码串

         Y_HEX      DB    16 DUP(0)                  ;定义二进制数数组

         TMP          DB    16 DUP(0)                  ;工作单元

DATA         ENDS

         源程序主程序部分流程图如图1所示。

         模块一:键盘输入ASCⅡ码可以直接采用10号系统调用实现,将其转换为BCD数,只需将数字高4位清“0”即可。

         模块二:将BCD数转换为二进制是本程序的难点,转换原理可根据以下公式:

yhex=i=0N-1di×10i                                                    (1)

其中,di是十进制数码,下标i表示第i位,N表示十进制长度,如果计算用二进制法则进行,则完成十进制到二进制的转换。

         本程序可以处理的十进制数位数最多可达32位,所以采用迭代的方法显示转换,将公式(1)进行变换,得:

yhex=yhex×10+di

该部分流程图如图2所示。

开始

通过键盘输入ASCⅡ码数字

把ASCⅡ码转换为BCD数

把BCD数转换为二进制数

把二进制数转换为ASCⅡ码显示

结束

图1 主程序流程图

图2 BCD转换为二进制数程序流程图

Y

开始

Y_HEX=0,i=十进制数长度

取Xi

计算Y_HEX=10 Y_HEX+di

i=i-1

返回

i=0

本代码尽可以将0-255的十进制数转成二进制数,老师题目是32位十进制数,能力有限,决定摆烂。

DATA SEGMENT BUFFER DB 32 ;允许输入字符数目为32 CHAR_L DB 0 ;实际输入字符串的长度 X_ASC DB 32 DUP(0) ;定义ASCⅡ码串 X_BCD DB 32 DUP(0) ;定义BCD码串 Y_HEX DB 16 DUP(0) ;定义二进制数数组 TMP DB 16 DUP(0) ;工作单元 DATA ENDS assume cs:code,ds:data code segment start: mov ax,data mov ds,ax MOV DX,OFFSET BUFFER ;把偏移地址给DX,也可以用 LEA DX,BUF 二者皆可 MOV AH,0AH ;键盘输入的时候,给AH 10 INT 21H ;然后INT 21H调用,默认输入到BUF中 mov bx,0 lea si,BUFFER add si,2 com: mov al,[si] sub al,30h cmp [si+1],0dh ja l1 add bh,al mov bl,bh mov cx,8 LP1: rol bl,1 mov dl,0 adc dl,30h mov ah,02h int 21h loop LP1 mov ah,4ch int 21h l1: add al,bh mov bl,0AH MUL bl mov bh,al inc si call com code ends end start



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3