汇编语言:十进制转十六进制(子程序设计)

您所在的位置:网站首页 15706大写 汇编语言:十进制转十六进制(子程序设计)

汇编语言:十进制转十六进制(子程序设计)

#汇编语言:十进制转十六进制(子程序设计)| 来源: 网络整理| 查看: 265

目的

编写十进制到十六进制转换程序。要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来

设计思路

设计子函数readchar用于读入操作,利用循环语句input进行循环读入,对读入的每一个字符进行判断,若读入字符在’0’-'9’之外,则结束输入,且每一次输入后将前一次输入的总和×10。设计子函数convert用于将bx中保存的10进制数字转化为16进制并输出。

程序代码 assume cs:code,ds:data data segment str1 db 0AH,'Input decimal number: ','$' str2 db 0AH,'hexadecimal number: ','$' data ends code segment start: mov ax,data mov ds,ax main: call readchar call convert mov ah,4ch int 21h readchar proc near: ;读入函数 lea dx,str1 mov ah,09 int 21h mov bx,0 input: mov ah,01h int 21h cmp al,'9' ;输入数字之外的字符,就结束输入 ja exit cmp al,'0' jb exit sub al,'0' ;把字符转换为数字 mov ah,0h ;避免ah数值的影响 mov dx,ax mov ax,bx mov bx,dx mov cx,0ah mul cx ; 把之前输入的数乘以10,加上本次输入,保存到bx mov dx,ax mov ax,bx mov bx,dx add bx,ax jmp input exit: ret readchar endp convert proc near: ;转换函数 lea dx,str1 mov ah,09 mov ch,04h loopc: mov cl,04h rol bx,cl mov al,bl and al,0fh add al,30h cmp al,'9' jbe printf ;字符为'9'之下,直接显示。 add al,07h ;大于9的数字转换为'A'-'F' printf: mov dl,al mov ah,2 int 21h dec ch jne loopc ; 单独用ch进行循环操作 ret convert endp code ends end start 运行结果:

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


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