用c语言输入键盘上的字符后转换成十六进制输出

来源:互联网 发布:琴爹捏脸数据 编辑:程序博客网 时间:2024/06/07 20:30
用c语言输入键盘上的字符后转换成十六进制输出
悬赏分:10 | 提问时间:2010-9-13 10:26 | 提问者:745922085 | 问题为何被关闭
其他回答 共3条

#include <stdio.h>
#include <conio.h>//getch()的头文件

int main()
{
     char c;
     printf("请输入一个字符:");
     c = getch();//getch()获取输入的字符, 输入之后立即处理,不需要按Enter之类的。
     printf("十六进制:%x\n", (int)c);//(int)c,把c转换为int型.%x,输出格式为十六进制
     return 0;
}

回答者: lynwey | 二级 | 2010-9-13 10:37

;----------------------------------------------------------------------
;程序名称:DIS_DEC
;功能:通过DOS功能调用显示十进制数最大65535
;入口参数:AX
;出口参数:无
;临时空间:CX
;调    用:HEXTOASCII
;作    者:
;创建日期:2009-11-06
;创建时间:23:12
;程序版本:
;----------------------------------------------------------------------
DIS_DEC PROC
        MOV     DX, 0
        MOV     BX, 10000
        DIV     BX              ;(0,AX)/10000,取商
        MOV     CX, DX          ;CX临时保存余数
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;2号功能调用单字符显示万位数,待显示字符ASCII码在DL中
        MOV     AH, 2           ;2号功能调用
        INT     21H             ;INT 21H进行调用
        
        MOV     DX, 0           
        MOV     BX, 1000        
        MOV     AX, CX
        DIV     BX              ;(0,CX)/1000,取商
        MOV     CX, DX          ;CX临时保存余数        
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示千位数
        MOV     AH, 2           
        INT     21H                  
        
        MOV     BL, 100
        MOV     AX, CX        
        DIV     BL              ;(AX)/100,取商
        MOV     CH, AH          ;CH临时保存余数  
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示百位数
        MOV     AH, 2          
        INT     21H             
        
        MOV     BL, 10
        MOV     AH, 0
        MOV     AL, CH        
        DIV     BL              ;(0,CH)/10,取商
        MOV     CH, AH          ;CH临时保存余数  
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示十位数
        MOV     AH, 2           
        INT     21H             
        
        MOV     AL, CH
        CALL    HEX1TOASCII     ;转换为ASCII码
        MOV     DL, AL          ;显示个位数
        MOV     AH, 2           
        INT     21H               
        
        MOV     DL, 0DH         ;显示回车符
        MOV     AH, 2
        INT     21H
        MOV     DL, 0AH         ;显示换行符
        INT     21H                
        RET
        ENDP
;----------------------------------------------------------------------
;----------------------------------------------------------------------
;程序名称:HEX2TOASCII
;功能:2位十六进制数转ASCII码
;入口参数:AL
;出口参数:AX
;临时空间:CH:暂寸数据,CL:移位次数
;调    用:HEX1TOASCII:一位HEX转换ASCII码
;作    者:
;创建日期:2009-11-06
;创建时间:23:12
;程序版本:
;----------------------------------------------------------------------
HEX2TOASCII PROC
        MOV     CH, AL          ;暂存数据
        AND     AL, 0F0H        ;取高4位
        MOV     CL, 4
        SHR     AL, CL          ;右移4位进行转换
        CALL    HEX1TOASCII     ;转换高4位的ASCII码
        MOV     AH, AL          ;保存结果
        MOV     AL, CH          ;取原待转换数据
        AND     AL, 0FH         ;取低4位数据
        CALL    HEX1TOASCII     ;转换低4位的ASCII码
        RET
        ENDP
;----------------------------------------------------------------------
;----------------------------------------------------------------------
;程序名称:HEX1TOASCII
;功能:1位十六进制数转ASCII码
;入口参数:AL
;出口参数:AL
;临时空间:无
;调    用:
;作    者:
;创建日期:2009-11-06
;创建时间:23:12
;程序版本:
;----------------------------------------------------------------------
HEX1TOASCII PROC
        CMP     AL, 9
        JBE     BELOW9          ;小于等于9,加30H
        ADD     AL, 07H         ;大于9,加37H
BELOW9: ADD     AL, 30H
        RET
        ENDP
;----------------------------------------------------------------------


如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!