ASCII表示的数转换为二进制码

  1. 从键盘读入一个字符

  2. 判断字符的范围

    0-9、A-F、a-f

  3. 转换成功显示转换成功后的信息或用户输入错误则显示错误的信息

  4. 若用户输入为 'q'字符则显示退出信息然后退出


data segment
t    db ?
s    db ?
msg  db 0dh, 0ah, 'The input char is ', '$'    ;转换成功后的信息

emsg db 0dh, 0ah, 'Wrong input!', 0dh, 0ah, '$';错误的信息

qmsg db 0dh, 0ah, 'quit', 0dh, 0ah, '$'        ;退出信息

data ends
prog segment
    main proc far
    assume cs:prog, ds:data
start:
    mov ax,data
    mov ds,ax
again: 

    mov ah,01h
    int 21h        ;读入要转换的字符

    lea bx,s
    mov byte ptr ds:[bx], al    ;把用户输入的字符保存在s
next1:
    and al,7fh
    cmp al,'0'
    jb  error
    cmp al,'9'
    ja next2
    sub al,30h
    jmp next4    ;判读是否在0-9范围
next2:
    cmp al,'A'
    jb  error
    cmp al,'F'
    ja  next3
    sub al,37h
    jmp next4    ;判读是否在A-F范围
next3:
    cmp al,'a'
    jb  error
    cmp al,'f'
    ja  error
    sub al,57h    ;判读是否在a-f范围
next4:
    mov bx,offset t
    mov byte ptr ds:[bx],al    ;把转换后的值保存在t
    lea dx, msg
    mov ah,09h
    int 21h        ;显示正确转换后的信息

    mov dl,s
    mov ah,02h
    int 21h        ;显示用户先前输入的字符
    
    mov dl,0dh
    mov ah,02h
    int 21h
    mov dl,0ah
    mov ah,02h
    int 21h        ;回车换行
    jmp again
error:
    cmp al,'q'
    je quit        ;若用户输入q字符则退出
    lea dx, emsg
    mov ah,09h
    int 21h        ;显示错误信息
    jne again
quit:
    lea dx, qmsg
    mov ah,09h
    int 21h        ;显示退出信息
    mov ax,4c00h
    int 21h
    main endp
prog ends
end start

你可能感兴趣的:(ASCII,二进制码)