汇编--键盘输入十六进制数

键盘连续输入十六进制数子程序,主程序call hex即可。数值结果以十进制得形式保存到bx中。

简单说一下思路:

     用户并不能键盘输入具体数字,只能通过键盘输入0~a的ascii码。所以当数字是0~9时,  通过 sub al,30h这句将该数字由ascii码的值转化为十进制数的值;当数字是A~F时,  通过 sub al,37h这句将该数字由ascii码的值转化为十进制数的值(10~15);当数字是a~f时,  通过 sub al,57h这句将该数字由ascii码的值转化为十进制数的值(10~15).如果不是上述这些字符,说明输入有错,打印出错提示。

    流程图如下:

 代码如下:

data segment
Tip db 'Error,please retype!$'
data ends
hex proc near;十六进制
  mov bx,0
input4:
    mov ah,1
    int 21h
    cmp al,0dh
    jz exit4;若是换行键表明输入完成
    cmp al,30h
    jb dk
    cmp al,39h
    ja compare1
    jmp change1;转化为十进制数0-9
compare1:
     cmp al,41h
     jb dk
     cmp al,46h
     ja compare2
     jmp change2;转化为A-F
compare2:
     cmp al,61h
     jb dk
     cmp al,66h
     ja dk
     jmp change3;转化为a-f
change1:
   sub al,30h
   jmp ent
change2:
   sub al,37h
    jmp ent
change3:
   sub al,57h
  jmp ent
ent:
    cbw
    xchg ax,bx
    mov cx,16
    mul cx
    xchg ax,bx
    add bx,ax
    jmp input4
dk: 
  call crlf
  mov ah,9
  lea dx,Tip;打印出错提示
  int 21h
  call crlf
   mov bx,0
   jmp input4
exit4:ret
hex endp;
crlf proc near
  mov dl,0ah
  mov ah,02
  int 21h
ret 
crlf endp

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值