汇编语言:十进制数转二进制 |
您所在的位置:网站首页 › 十进制如何转换成二进制数 › 汇编语言:十进制数转二进制 |
设计完整的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 其中,di 本程序可以处理的十进制数位数最多可达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 |