問題是要求用戶輸入任何數字。並將輸入的數字與預先定義的常數進行比較。然後輸出一個消息,輸入的數字大於或小於或等於定義的數字。在這個例子中我的預定數量爲27彙編語言:如何比較8086中的輸入號碼?
我的代碼是:
.MODEL small
.STACK 100h
.DATA
promptmsg DB 'Please enter a number [1..100]',13,10,'$'
greatermsg db 'You have entered a greater number', 13, 10, '$'
lessmsg db 'You have entered a lesser number', 13 , 10, '$'
correctmsg db 'You have hit the right number', 13, 10, '$'
numbr dw 27
.CODE
.startup
mov ax,@data
mov ds,ax
lea dx, promptmsg
mov ah,9
int 21h
mov ah, 0ah
int 21h
mov ah, 9
int 21h
mov bx, numbr
cmp ax, bx
jb lesser
ja greater
correct:
mov dx, offset correctmsg
mov ah, 09h
int 21h
jmp endexe
greater:
mov dx, offset greatermsg
mov ah, 09h
int 21h
jmp endexe
lesser:
mov dx, offset lessmsg
mov ah, 09h
int 21h
endexe:
mov ah,4ch ;DOS terminate program function
int 21h ;terminate the program
END
如果我輸入任何數量,無論是大於或小於或等於預定的數量,它總是跳轉到更大。我的代碼有沒有問題,無法識別我的輸入號碼?
更新:更正了變量numbr而不是ans。
是的,我指的是numbr變量。如果我將代碼從'mov ah,0Ah'更改爲'mov ah,01h',它將只接受一個號碼。因爲我相信它只會準備一個角色。 – user1225163 2013-03-05 17:33:47
瞭解當您從輸入中讀取時,您正在閱讀字符,而不是數字。您將讀取'0'..'9'範圍內的字符(假設用戶只輸入數字字符),而不是0..100。你瞭解差異嗎? – 2013-03-05 17:53:29
是的,我知道了,我想我必須解決我的代碼,並按照您的建議將字符序列轉換爲數字。 – user1225163 2013-03-05 17:57:29