저는 어셈블리 언어의 초보자이며 솔루션을 빨리 찾아야합니다.
문제는 사람 (3 자리)에서 숫자를 읽고이를 정수로 변환하여 두 값과 비교해야한다는 것입니다.
문제는 비교를 변환 한 후 가끔 결과가 정확하지 않은 경우가 있다는 것입니다. 올바르게 입력을 해석하지 있기 때문에Masm 16 비트 Ascii에서 바이트로 변환
pile segment para stack 'pile'
db 256 dup (0)
pile ends
data segment
ageper db 4,5 dup(0)
bigg db 13,10,"bigger than 146 ",13,10,"$"
lesss db 13,10,"less than 0 ",13,10,"$"
right db 13,10,"correct number 123 ",13,10,"$"
theint db 0
exacnumber db 123
data ends
code segment
main proc far
assume cs:code
assume ds:data
assume ss:pile
mov ax,data
mov ds,ax
mov ah,0ah
lea dx,ageper
int 21h
mov ch,0
cmp ageper[4],0
jz phase2
mov ah,ageper[4]
sub ah,48
add theint,ah
phase2:
mov cl,10
cmp ageper[3],0
jz phase3
mov ah,ageper[3]
sub ah,48
mov al,ah
mul cl
add theint,al
phase3:
mov cl,100
cmp ageper[2],0
jz phase4
mov ah,ageper[2]
sub ah,48
mov al,ah
mul cl
add theint,al
phase4:
cmp theint,123
je yes
cmp theint,130
jg big
cmp theint,0
jl less
jmp ending
big:
mov ah,09h
lea dx,bigg
int 21h
jmp ending
yes:
mov ah,09h
lea dx,right
int 21h
jmp ending
less:
mov ah,09h
lea dx,lesss
int 21h
ending:
mov ageper,20
mov ageper[1],20
mov ah,02
lea dx,theint
int 21h
mov ah,4ch
int 21h
main endp
code ends
end main
변환 된 정수를 보유하기 위해 바이트를 사용하고 있습니다. 부호없는 바이트는 0-255 범위의 값만 나타낼 수 있습니다. – Michael
감사합니다 남자, 결국 바이트가 잘 작동하고 그것은 int 범위에 맞는 부호없는 입력을 읽을 필요가 –