Assembly 重复检查过程,直到用户在emu8086中给出偶数十六进制数

Assembly 重复检查过程,直到用户在emu8086中给出偶数十六进制数,assembly,emu8086,Assembly,Emu8086,我需要用emu8086编写一个汇编语言程序,它将提示用户输入十六进制数字字符 “0”、“9”或“A”,。。。。“F”,以小数形式显示在下一行,并检查该小数是否为 数字是否为奇数。如果为奇数,则程序将重复,如果为偶数,则程序将重复 终止如果用户输入非法字符,则提示用户输入其他字符 现在我完成十六进制到十进制的转换,如下所示: .MODEL SMALL .STACK 100H .DATA PROMPT1 DB 'Enter a hex digit : $' PROMPT2 DB

我需要用emu8086编写一个汇编语言程序,它将提示用户输入十六进制数字字符 “0”、“9”或“A”,。。。。“F”,以小数形式显示在下一行,并检查该小数是否为 数字是否为奇数。如果为奇数,则程序将重复,如果为偶数,则程序将重复 终止如果用户输入非法字符,则提示用户输入其他字符

现在我完成十六进制到十进制的转换,如下所示:

.MODEL SMALL
.STACK 100H  

.DATA
    PROMPT1 DB 'Enter a hex digit : $'
    PROMPT2 DB 'In decimal it is : $'
    RESULT DB ?  
    
.CODE     

MAIN PROC   
    
    MOV AX,@DATA
    MOV DS,AX
    
    LEA DX,PROMPT1
    MOV AH,9
    INT 21H
    
    MOV AH,1
    INT 21H
    
    MOV RESULT,AL
    SUB RESULT,11H
    
    MOV AH,2
    MOV DL,0DH
    INT 21H
    
    MOV DL,0AH
    INT 21H
    
    LEA DX,PROMPT2
    MOV AH,9
    INT 21H
    
    MOV AH,2
    MOV DL,'1'
    INT 21H
    
    MOV DL,RESULT
    INT 21H
    
    MOV AH,4CH
    INT 21H 
    
    MAIN ENDP
END MAIN
但我无法完成这段代码的其余部分,我如何才能完成它

.model small
.stack 100h
.data

msg1 db 10,13,'ENTER A HEX DIGIT:$'
msg2 db 10,13,'IN DECIMAL IS IT:$'
msg4 db 10,13,'ILLEGAL CHARACTER- ENTER 0-9 OR A-F:$'
evenmsg db 0dh,0ah,"Number is Even"
oddmsg db 0dh,0ah,"Number is Odd"


.code   
main proc

again:
    
    mov ax,@data
    mov ds,ax
    lea dx,msg1
    mov ah,9
    int 21h
    
    mov ah,1
    int 21h
    
    mov bl,al   
go:   
    cmp bl,'9'
    ja hex
    jb num
    je num
   
hex:

    cmp bl,'F'
    ja illegal  
    
    
    lea dx,msg2 
    mov ah,9
    int 21h
           \
    mov ah,2      
    mov dl,'1'
    int 21h      
          
    mov ah,2
    SUB BL,17D
    mov dl,bl
    int 21h
       
    
    sub dl,30h 
    add dl,10

    jmp exit


num:
   
    cmp bl,'0'
    jb illegal
    
    lea dx,msg2 
    mov ah,9
    int 21h 
    
    
    mov dl,bl
    mov ah,2
    int 21h
    
    jmp again


illegal:

    lea dx,msg4
    mov ah,9
    int 21h
    
    mov ah,1
    int 21h
    
    mov bl,al 
    
    jmp go
       
exit:  
   
    xor ax,ax
    mov al,dl
    mov dl,2
    div dl
    cmp ah,1
    je odd
    mov ah,9
    lea dx,evenmsg
    int 21h

odd:   
    mov ah,9
    lea dx,oddmsg
    int 21h
    
    
    
    mov ah,4ch
    int 21h
    
main endp
end main