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



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

现在我完成十六进制到十进制的转换,像这样:

.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

最新更新