-3

кто шарит в Assemblere? Сравнить 3 числа

Свободный

Здравствуйте, помогите пожалуйста, исправьте код чтобы программа работала, мне задачу дали «Ввести три двузначных числа с клавиатуры, сравнить их между собой и вывести на экран максимальное», ну так вот… Я написал программный код, и что то не правильно, правильно только если второе число максимальное, помогите пожалуйста, а то завтра мне отчет нужно сдавать


code segment para public 'code'
assume cs:code,ds:code,ss:code,es:code
org 100h
mov dx,code
mov ds,dx
mov ss,dx
mov es,dx
jmp m1
m1: mov ah,1
INT 21H
SUB AL,30H
MOV AH,0
mov bx,10
MUL BX
mov bx,ax
mov ah,1
int 21h
sub aL,30H
MOV AH,0
ADD BX,AX
MOV SI,BX ;si
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
mov ah,1
INT 21H
SUB AL,30H
MOV AH,0
mov bx,10
MUL BX
mov bx,ax
mov ah,1
int 21h
sub aL,30H
MOV AH,0
ADD BX,AX
MOV CX,BX ;cx
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
mov ah,1
INT 21H
SUB AL,30H
MOV AH,0
mov bx,10
MUL BX
mov bx,ax
mov ah,1
int 21h
sub aL,30H
MOV AH,0
ADD BX,AX
MOV BX,BX ;bx
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
MOV DX,0
mov ax,0
cmp si,cx; сравнение si и cx
jle m3
cmp si,bx; сравнение si и bx
jle m4
mov cx,bx
MOV DX, 0
MOV AX,cx
MOV SI, 10
DIV si
MOV bx, DX
MOV DX, AX
MOV Ah, 2
ADD DX, 30h
INT 21h
MOV DX, bx
ADD DX, 30h
MOV Ah, 2
int 21h
jmp m8
m3: ;cx сравнение с bx и вывод
cmp cx,bx
jle m4
MOV DX, 0
MOV AX,cx
MOV SI, 10
DIV si
MOV bx, DX
MOV DX, AX
MOV Ah, 2
ADD DX, 30h
INT 21h
MOV DX, bx
ADD DX, 30h
int 21h
jmp m8
m4:; вывод BX
mov cx,bx
MOV DX, 0
MOV AX,cx
MOV SI, 10
DIV si
MOV bx, DX
MOV DX, AX
MOV Ah, 2
ADD DX, 30h
INT 21h
MOV DX, bx
ADD DX, 30h
int 21h
jmp m8

m8:

mov ah,4ch
int 21h
code ends
end

Комментарии — 28

  • VOVA27.04.2011, 20:11#
    Дам 50вмр, если программа будет правильно работать
  • InfeRn027.04.2011, 20:12#
    Что за хуйня? :>
    • VOVA27.04.2011, 20:16#
      чо это?
      • InfeRn027.04.2011, 20:18#
        Забей, перепутал.
        • azazeL27.04.2011, 20:21#
          • InfeRn027.04.2011, 20:22#
            ЧУМАЧЕЧАЯ ВЕСНА!
            • jst27.04.2011, 20:32#
              ЭЙ АРА ХВАТАЙ АРБУЗ БЕЖИМ БЛЯДЬ!
    • kz27.04.2011, 21:30#
      видимо у вомы спросить хотел) ща спрошу ;D
      • kz27.04.2011, 21:30#
        его нет пока хД
      • InfeRn027.04.2011, 23:15#
        Именно)
  • Cool-T27.04.2011, 20:40#
    а на другом диалекте можно написать? или у вас все строго
    • VOVA27.04.2011, 20:45#
      не понял? т.е алгоритм на русском языке? если да, то это каждое число сравнить с другим и выявить максимальное, но вроде все написал в программе, а что-то не так, только правильно работает, если второе число максимальное )))
      • Cool-T27.04.2011, 20:47#
        да хотябы за .code а не сегменты уже по шее надают?
        • VOVA27.04.2011, 20:51#
          если ты про
          code segment para public 'code' assume cs:code,ds:code,ss:code,es:code org 100h mov dx,code mov ds,dx mov ss,dx mov es,dx
          то это начало программного кода, это стандартное, ну нам так преподаватель сказал, и во всех программах так одинаково
      • Cool-T27.04.2011, 20:51#
        я просто 5 лет назад его изучал, и было проще как-то :D мозг жиром заплыл
        • VOVA27.04.2011, 20:52#
          у меня проблема со сравнением, а все остальное ок)
          • Cool-T27.04.2011, 20:58#
            а ну как ты сравниваешь? попробуй if (a>b) m=a else m=b if (c>m) m=c вывод m а у тебя как логически строится узнавание наибольшего? сейчас попробую в си написать и в дебагере посотреть реализацию :D
  • zebra27.04.2011, 20:56#
    Чувак, я бы тебе помог, но ассемблером уже несколько лет не занимался, если си или паскаль подобные языки легко, а вот ассемблер подзабыл(
    • VOVA27.04.2011, 21:01#
      по паскалю сделал все, блин жалко(
      • Cool-T27.04.2011, 21:04#
        из олли скопипасти код :D
        • VOVA27.04.2011, 21:08#
          на паскале другая программа)
          • Cool-T27.04.2011, 21:15#
            в дебагере до момента сравнения не дойти? поставь стопер на обращении к памяти в которую кинешь число, посмотри что с ним процессор делает
            • VOVA27.04.2011, 23:14#
              Я не понял, что ты сказал)
      • zebra27.04.2011, 21:08#
        я написал паскале подобный) тобешь Delphi в том числе))) а си подобный C++ Builder
  • VOVA27.04.2011, 21:12#
    УРААА я сделалл!!! )))) я так рад отчет почти у меня в кармане)) вот код сравнения
    cmp si,cx; сравнение si и cx jge m3 cmp cx,bx; сравнение cx и bx jge m4 mov cx,bx MOV DX, 0 MOV AX,cx MOV SI, 10 DIV si MOV bx, DX MOV DX, AX MOV Ah, 2 ADD DX, 30h INT 21h MOV DX, bx ADD DX, 30h MOV Ah, 2 int 21h jmp m8 m3: ;cx сравнение с bx и вывод cmp si,cx jle m4 mov cx,si MOV DX, 0 MOV AX,cx MOV SI, 10 DIV si MOV bx, DX MOV DX, AX MOV Ah, 2 ADD DX, 30h INT 21h MOV DX, bx ADD DX, 30h int 21h jmp m8 m4:; вывод cx MOV DX, 0 MOV AX,cx MOV SI, 10 DIV si MOV bx, DX MOV DX, AX MOV Ah, 2 ADD DX, 30h INT 21h MOV DX, bx ADD DX, 30h int 21h jmp m8 m8: mov ah,4ch int 21h code ends end
    • VOVA27.04.2011, 21:13#
      я просто все регистры перепутал и ересь вылазила, сейчас все норм, во всех случаях работает,
      • Cool-T27.04.2011, 21:22#
        перепутал > и <? :D (jle\jge)
        • VOVA27.04.2011, 23:15#
          нет, чуток другой алгоритм сделал, там я хотел поменьше сделать, даже не по меньше, а просто поудобнее, но запутался так (( всем спасибо ))

Обсуждение завершено.