Другие языки программирования и технологии

Ассемблер! Нужна помощь!

Задача: Написать программу поиска максимального из 2–х целых чисел. Максимум поместить в переменную max и вывести на экран. Эти 2 числа пользователь вводит сам.
Вот что у меня получилось:

code segment
org 100h
assume cs:code, ds:code, ss:code

Start:
mov bx, 1
start2:
mov ah, 8
int 21h
test al, al
jnz NotFuncKey
int 21h
jmp Start

NotFuncKey:
sub al, '1'
jb Start
cmp bx, 1
jne kon
mov bl, al
mov bx, 2
jmp start2

kon:
cmp al, bl
jge pon
jmp vto

pon:
mov dx, offset b
jmp print

vto:
mov dx, offset a
jmp print

print:
mov ah, 9
int 21h
dec ah
mov ax, 0
jmp start

a db 'bol $'
b db 'men $'

code ends
end Start





Некоторые цифры он нормально сравнивает, а некоторые нет, в чём проблема? , измените код или дайте свой.
Бакыт _
Бакыт _
633
А так?

code segment
org 100h
assume cs:code, ds:code, ss:code

Start:
lea dx, Prompt
mov ah, 9
int 21h
call Input
mov a, ax
inc byte ptr Prompt
lea dx, Prompt
mov ah, 9
int 21h
call Input
mov b, ax
mov max, ax
cmp a, ax
jle B_Max
mov ax, a
mov max, ax
B_Max:
lea dx, Result
mov ah, 9
int 21h
mov ax, max
call Print
xor ah, ah
int 16h
int 20h

InpError:
mov ah,9
lea dx, txtErr
int 21h
Input:
lea dx, Buff
mov ah, 10
int 21h
mov al, 13
int 29h
mov al, 10
int 29h
xor bx, bx
mov di, 10
lea si, Buff+2
xor ch, ch
mov cl, [si-1]
jcxz InpError
lodsb
cmp al, '-'
je InpNext
cmp al, '+'
jne InpLoop
InpNext:
cmp cx, 1
je InpError
jmp InpSymb
InpLoop:
sub al, '0'
jb InpError
cmp al, 9
ja InpError
cbw
xchg ax, bx
mul di
jc InpError
test ax, ax
js InpError
add bx, ax
js InpError
InpSymb:
lodsb
loop InpLoop
cmp byte ptr Buff+2, '-'
jne InpQuit
neg bx
InpQuit:
mov ax, bx
ret

Print:
cwd
xor ax, dx
sub ax, dx
test dx, dx
jz PrnPositive
mov dx, ax
mov al, '-'
int 29h
mov ax, dx
PrnPositive:
mov bx, 10
WriteInt:
push dx
cwd
div bx
test ax, ax
jz WriteEnd
call WriteInt
WriteEnd:
mov al, dl
or al, '0'
int 29h
pop dx
ret

Prompt db '1: $'
Result db 'max = $'
txtErr db 'Ошибка! '
db 'Введите целое число от -32767 до 32767: $'
Buff db 15, ?,16 dup (?)
a dw ?
b dw ?
max dw ?

code ends
end Start
Денис Проконькин
Денис Проконькин
51 590
Лучший ответ
Бакыт _ Осталось разобраться в каждой команде =D
Если не очень сложно, опиши каждое действие комментариями)