Как найти максимальное число на ассемблере

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Problem – Determine largest number in an array of n elements. Value of n is stored at address 2050 and array starts from address 2051. Result is stored at address 3050. Starting address of program is taken as 2000. 

    Example: 

    Algorithm:

    1. We are taking first element of array in A
    2. Comparing A with other elements of array, if A is smaller then store that element in A otherwise compare with next element
    3. The value of A is the answer

    Program:

    Memory Address Mnemonics Comment
    2000 LXI H 2050 H←20, L←50
    2003 MOV C, M C←M
    2004 DCR C C←C-01
    2005 INX H HL←HL+0001
    2006 MOV A, M A←M
    2007 INX H HL←HL+0001
    2008 CMP M A-M
    2009 JNC 200D If Carry Flag=0, goto 200D
    200C MOV A, M A←M
    200D DCR C C←C-1
    200E JNZ 2007 If Zero Flag=0, goto 2007
    2011 STA 3050 A→3050
    2014 HLT  

    Explanation:

     Registers used: A, H, L, C

    1. LXI 2050 assigns 20 to H and 50 to L
    2. MOV C, M copies content of memory (specified by HL register pair) to C (this is used as a counter)
    3. DCR C decrements value of C by 1
    4. INX H increases value of HL by 1. This is done to visit next memory location
    5. MOV A, M copies content of memory (specified by HL register pair) to A
    6. INX H increases value of HL by 1. This is done to visit next memory location
    7. CMP M compares A and M by subtracting M from A. Carry flag and sign flag becomes set if A-M is negative
    8. JNC 200D jumps program counter to 200D if carry flag = 0
    9. MOV A, M copies content of memory (specified by HL register pair) to A
    10. DCR C decrements value of C by 1
    11. JNZ 2007 jumps program counter to 2007 if zero flag = 0
    12. STA 3050 stores value of A at 3050 memory location
    13. HLT stops executing the program and halts any further execution

    Advantages of finding the largest number in an array:

    1. It is a simple and straightforward task that can be easily implemented in any programming language.
       
    2. It is a common operation used in many algorithms and applications, such as finding the maximum value in a data set or determining the winner of a game.
       
    3. It is a fast operation that can be completed in O(n) time complexity, where n is the number of elements in the array.
       

    Disadvantages of finding the largest number in an array:

    1. If the array is unsorted, finding the largest number requires iterating through the entire array, which can be inefficient for very large arrays.
       
    2. If multiple elements in the array have the same maximum value, finding only one of them requires additional logic or iterations, which can add complexity to the algorithm.
       
    3. If the array is very large and memory is limited, storing the entire array in memory may not be feasible, which could require a more complex solution such as sorting the array in smaller parts.

    Last Updated :
    07 May, 2023

    Like Article

    Save Article

    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    1

    В массиве найти минимальный и максимальный элемент

    11.09.2012, 02:25. Показов 54381. Ответов 22


    Студворк — интернет-сервис помощи студентам

    Здравствуйте! На ассемблере последний раз писал что-то ещё на 1-м курсе универа и всё забыл за неимением практики. А тут пришла знакомая и попросила помочь с заданием.
    Если не сложно, помогите мне. Буду очень благодарен.
    Задание:
    1) в массиве найти минимальный и максимальный элемент;

    Добавлено через 8 минут
    Желательна максимальная простота кода и, если не сложно, комментарии, т.к. это потом ей ещё защищать.



    0



    Troll_Face

    608 / 406 / 8

    Регистрация: 26.04.2012

    Сообщений: 2,065

    12.09.2012, 19:34

    2

    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    mov si, offset array
    mov cx, array_len
    xor bx, bx                     ;в bh - максимум, в bl - минимум...
    @1: 
         lodsb 
         cmp al, bh
         jg max
         cmp al, bl
         jl min
         jmp @@1
    min: 
         and bl, al
         jmp @@1
    max:
        and bh, al
    @@1:
        loop @1

    не тестировал, сразу говорю, но вроде так…

    Добавлено через 22 часа 34 минуты
    body90, пардон))) хотел повыпендриваться)))

    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    mov si, offset array
    mov cx, array_len
    xor bx, bx                     ;в bh - максимум, в bl - минимум...
    @1: 
         lodsb 
         cmp al, bh
         jg max
         cmp al, bl
         jl min
         jmp @@1
    min: 
         mov bl, al
         jmp @@1
    max:
        mov bh, al
    @@1:
        loop @1



    3



    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    12.09.2012, 21:42

     [ТС]

    3

    И не понимаю, что делает «lodsb». Можете пояснить, для чего эта команда в этом коде?



    0



    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    12.09.2012, 21:57

     [ТС]

    4

    Вот что у меня получается:

    Миниатюры

    В массиве найти минимальный и максимальный элемент
     



    0



    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    12.09.2012, 22:11

     [ТС]

    5

    В архиве то, что я написал. Запускаю по run.bat.



    0



    766 / 310 / 11

    Регистрация: 27.05.2011

    Сообщений: 703

    12.09.2012, 22:14

    6

    body90, ты наверно думаешь, что представленный код является полным?
    это только выполнение твоего задания(поиск min,max), оформление здесь отсутствует, как допишешь его, так и сможешь проверить..
    возми ту же элементарную программку — Hello World, впиши туда то что тебе написали и всё..
    только вот ещё одно, результата на экране ты не увидишь, пока не допишешь вывод, либо ч/з отладчик..



    2



    body90

    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    12.09.2012, 22:25

     [ТС]

    7

    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    .model   small
    .data
    array dd 1,2,3,4,5
    mov si, offset array
    mov cx, 5
    xor bx, bx                     ;в bh - максимум, в bl - минимум...
    .code
    main:
    @1: 
         lodsb 
         cmp al, bh ;сравнение al и bh
         jg max
         cmp al, bl
         jl min
         jmp @@1
    min: 
         mov bl, al
         jmp @@1
    max:
        mov bh, al
    @@1:
        loop @1
    end main
    end

    Написал так. Компиллируется без ошибок, но вот когда запускаю *.exe — выскакивает ошибка с кнопкой «Закрыть». Я что-то неправильно сделал?

    Цитата
    Сообщение от zzzyyyxxx
    Посмотреть сообщение

    только вот ещё одно, результата на экране ты не увидишь, пока не допишешь вывод, либо ч/з отладчик..

    А как вывод делать?



    0



    766 / 310 / 11

    Регистрация: 27.05.2011

    Сообщений: 703

    12.09.2012, 22:28

    8

    ну у тебя часть кода находится в данных, перенести надо..
    по поводу вывода — https://www.cyberforum.ru/asse… 54461.html, выбирай, что душе угодно..



    1



    body90

    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 02:16

     [ТС]

    9

    .data должен быть пустым?

    Добавлено через 36 минут
    Так тоже вылетает с ошибкой:

    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    .model   small
    .data
    .code
    array dd 1,2,3,4,5
    mov si, offset array
    mov cx, 5
    xor bx, bx                     ;в bh - максимум, в bl - минимум...
    @1: 
         lodsb 
         cmp al, bh ;сравнение al и bh
         jg max
         cmp al, bl ;сравнение al и bl
         jl min
         jmp @@1
    min: 
         mov bl, al
         jmp @@1
    max:
        mov bh, al
    @@1:
        loop @1 ; переход на следующий элемент массива
    end

    Добавлено через 25 минут
    Подскажите, пожалуйста, что я ещё неправильно делаю. А то мне сегодня её уже надо отдать…



    0



    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 02:49

     [ТС]

    10

    Вот как оно вылетает (первое изображение) после нажатия F9 в TLINK.exe.
    На втором изображении то, что видно на консоли, если я сделаю это же через DosBox. После этого курсор просто мигает и не реагирует ни на какие нажатия.

    Миниатюры

    В массиве найти минимальный и максимальный элемент
     

    В массиве найти минимальный и максимальный элемент
     



    0



    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 05:31

     [ТС]

    11

    Почему-то мне кажется, что приложение просто зацикливается.

    Добавлено через 2 часа 18 минут
    И с этим разобрался, но в bh и bl ложатся числа, которых даже нет в массиве. Посмотрел в Turbo Debuggere в окне Wotches. Что может быть не так?



    0



    Ушел с форума

    Автор FAQ

    15881 / 7457 / 1010

    Регистрация: 11.11.2010

    Сообщений: 13,439

    13.09.2012, 05:47

    12

    body90, опять используется массив двойных слов вместо массива байтов, и массив array убери из секции code в секцию data
    будь внимательнее и думай головой



    1



    body90

    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 11:08

     [ТС]

    13

    Mikl___, сделал так, как Вы сказали. Совсем теперь по «циклу» один раз стало проходить.

    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    Title   Laba
    ;=====================================
    StackSG segment ; Stack segment
        dw  1024    dup (?)
    StackSG Ends
    ;=====================================
    DataSG  Segment; Data segment
    DataSG Ends
    ;=====================================
    CodeSG  Segment ; Code segment
        assume  ss:StackSG,cs:CodeSG,ds:DataSG
     
    BEGIN:
    array db 7,2,10,4,26
    mov si, offset array
    mov cx, 5
    xor bx, bx
    @1: 
         lodsb 
         cmp al, bh
         jg max
         cmp al, bl
         jl min
         jmp @@1
    min: 
         mov bl, al
         jmp @@1
    max:
        mov bh, al
    @@1:
        loop @1
    mov     ah,4ch
    int 21h
    CodeSG  Ends
    END BEGIN

    Добавлено через 21 минуту
    А тут точно можно использовать bh и bl? Я не могу понять их поведения. Они по прежнему получают значения, которых вообще нет в массиве. Ещё и меняют значение, когда выполняется последний кусок кода

    Assembler
    1
    2
    3
    4
    
    mov     ah,4ch
    int 21h
    CodeSG  Ends
    END BEGIN

    хотя обращений к ним нет. Может я чего-то не понимаю.

    Добавлено через 25 секунд
    Может кто-то скомпиллировать мой код и сказать что не так?



    0



    Ушел с форума

    Автор FAQ

    15881 / 7457 / 1010

    Регистрация: 11.11.2010

    Сообщений: 13,439

    13.09.2012, 11:40

    14

    body90, тебе же сказали — помести array в сегмент данных!



    1



    body90

    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 11:46

     [ТС]

    15

    Всё равно результат тот же.

    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    Title   Laba
    ;=====================================
    StackSG segment ; Stack segment
        dw  1024    dup (?)
    StackSG Ends
    ;=====================================
    DataSG  Segment; Data segment
    array db 7,2,10,4,26
    DataSG Ends
    ;=====================================
    CodeSG  Segment ; Code segment
        assume  ss:StackSG,cs:CodeSG,ds:DataSG
     
    BEGIN:
    mov si, offset array
    mov cx, 5
    xor bx, bx
    @1: 
         lodsb 
         cmp al, bh
         jg max
         cmp al, bl
         jl min
         jmp @@1
    min: 
         mov bl, al
         jmp @@1
    max:
        mov bh, al
    @@1:
        loop @1
    mov     ah,4ch
    int 21h
    CodeSG  Ends
    END BEGIN

    В момент до выполнения строки

    Assembler
    1
    
    mov     ah,4ch

    bh = 32
    bl = 159



    1



    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 11:47

     [ТС]

    16

    Вот скрин.

    Миниатюры

    В массиве найти минимальный и максимальный элемент
     



    1



    Mikl___

    Ушел с форума

    Автор FAQ

    15881 / 7457 / 1010

    Регистрация: 11.11.2010

    Сообщений: 13,439

    13.09.2012, 11:50

    17

    должно быть вот так

    Assembler
    1
    2
    3
    4
    5
    
    BEGIN: mov ax,DataSG
    mov ds,ax
    mov si, offset array
    mov cx, 5
    xor bx, bx



    2



    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 11:56

     [ТС]

    18

    bh работает, а в bl теперь всё время лежит 0, хотя в массиве минимальный элемент = 2.



    0



    Ушел с форума

    Автор FAQ

    15881 / 7457 / 1010

    Регистрация: 11.11.2010

    Сообщений: 13,439

    13.09.2012, 12:03

    19

    body90, естественно, потому что изначально BL=0, а ноль всегда меньше двух
    поставь вместо xor bx,bx команду mov bx,7Fh и всё заработает



    1



    body90

    390 / 323 / 19

    Регистрация: 26.05.2009

    Сообщений: 2,696

    13.09.2012, 12:03

     [ТС]

    20

    Не знаю правильно ли, но вышел из ситуации так:

    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    Title   Laba
    ;=====================================
    StackSG segment ; Stack segment
        dw  1024    dup (?)
    StackSG Ends
    ;=====================================
    DataSG  Segment; Data segment
        array db 7,2,10,4,26
    DataSG Ends
    ;=====================================
    CodeSG  Segment ; Code segment
        assume  ss:StackSG,cs:CodeSG,ds:DataSG
     
    BEGIN:
    mov ax, DataSG
    mov ds, ax
    mov si, offset array
    mov cx, 5
    xor bx, bx
    mov bl, al
    @1: 
         lodsb 
         cmp al, bh
         jg max
         cmp al, bl
         jl min
         jmp @@1
    min: 
         mov bl, al
         jmp @@1
    max:
        mov bh, al
    @@1:
        loop @1
    mov     ah,4ch
    int 21h
    CodeSG  Ends
    END BEGIN



    0



    Есть задание. Необходимо найти значение максимального элемента в массиве. Элементы массива должны иметь тип WORD (2 байта). В первом элементе массива должно хранить количество элементов массива −1. То есть оттуда мы должны считать количество чисел, перейти на адрес второй ячейки массива, и начиная с числа по этому адресу уже сравнивать.

    Написал следующий код:

    section .text
       global _start 
        
    _start: 
            
       mov  eax, 3    ; mov eax, [x]
       mov  ebx,0      ; EBX будет хранить максимальное значение
       mov  ecx, x    ; ECX будет указывать на текущий элемент для выполнения операции сравнения
       add ecx, 2 
     
    top:  cmp ebx, [ecx]
       JNS l1
       mov ebx, [ecx]
       l1: add  ecx, 2      ; перемещаем указатель на следующий элемент
       dec  eax        ; выполняем декремент счётчика
       jnz  top        ; если счётчиком не является 0, то тогда выполняем цикл ещё раз
     
    done: 
     
       add   ebx, '0'
       mov  [max], ebx ; готово, сохраняем результат в переменной sum
     
    display:
     
       mov  edx, 2      ; длина сообщения
       mov  ecx, max   ; сообщение для написания
       mov  ebx, 1     ; файловый дескриптор (stdout)
       mov  eax, 4     ; номер системного вызова (sys_write)
       int  0x80       ; вызов ядра
        
       mov  eax, 1     ; номер системного вызова (sys_exit)
       int  0x80       ; вызов ядра
     
    section .data
    global x
    x:
       dw  3
       dw  2
       dw  4
       dw  3
     
    max: 
       dw  0
    
    

    Компилирую в Linux через консоль, компиляция проходит, но результат выводит неправильный. Кроме того, ему не нравится синтаксис(segmentation fault)

    mov eax, [x]
    

    Если кто разбирается в ассемблере, помогите, пожалуйста. Где я ошибся?

    .model      tiny            ; модель памяти, используемая для COM
    .code                       ; начало сегмента кода
                org     100h    ; начальное значение счетчика - 100h
     
    start:      mov     al, x   ; значение х заносим в al
                cmp     al, y   ; сравниваем х и y
                jge     label_1 ; если х >= y, то переходим на метку label_1
                mov     al, y   ; если x < y, то (al) = y
    label_1:    mov     t, al   ; заносим в t максимальное число
                mov     al, z   ; значение z заносим в al
                cmp     al, t   ; сравниваем z и t
                jge     label_2 ; если z >= t, то переходим на метку label_2
                mov     al, t   ; если z < t, то (al) = t
    label_2:    mov     t, al   ; заносим в t максимальное число
     
                ret             ; завершение COM программы
     
    x           db      5       ; x = 5
    y           db      8       ; y = 8
    z           db      15      ; z = 15
    t           db      ?       ; резервируем память для результата
     
                end     start   ; конец программы

    sersad

    Гость


    Добрый день, поистине неисповедимы пути ассемблера, при написании этой программы хотелось что бы был найден максимальный элемент и показан на экране, и как результат на экране не то что нужно, подскажите что не так.

    begin:   jmp setup
        mass db 1,2,3,4,5
        max db’максимальный$’
    setup:
          mov cl,4
          lea bx,mass
          mov al,[bx]
          inc bx
          m2: cmp al,[bx]
          jnc m1
          mov al,[bx]
          m1: inc bx
          dec cl
          jnz m2
          mov max ,al
          mov ah,09
          lea dx,max
          int 21h
          xor ax,ax
          int 16h
          int 20h


    Записан
    4y4z

    Участник

    ru
    Offline Offline
    Младший саппорт


    Если бы это был код на С и других языках высокого уровня, то после каждой операции по изменению содержимого переменных(а таковыми в данном случае естественно будут все регистры после выполнения mov) то  нужно было бы вывести на печать содержимое измененной переменной. Но в данном случае нужно пропустить программу через отладчик. Увидите как меняется содержимое регистров, чтобы проверить правильно ли она работает.


    Записан

    Ищу работу. (разработка/тестирование/отладка)

    SAVC

    Гость


    Насколько я понял, ты на TASM пишешь.
    И линкуешь в COM файл.
    Давно уже ничего не делал для x86
    Но по старой памяти написал бы вот так:

    mov si,offset mass
    mov cl,5

    lodsb
    m1: mov ah,al
    m2: dec cl
    jz m3
    lodsb
    cmp ah,al
    jc m1
    jmp sort m2

    m3: mov byte ptr max,ah
    mov ah,9
    mov dx,offset max
    int 21h
    mov ah,0
    int 16h
    int 20h

    max: db ‘  максимальный$’
    mass: db 1,2,3,4,5

    jmp short m2

    « Последнее редактирование: 04-01-2009 18:00 от RXL »
    Записан
    sersad

    Гость


    Не могли бы вы подсказать что за команда    jmp sort m2  а то программа пишет что такого она не знает


    Записан
    Sla

    Команда клуба

    ua
    Offline Offline
    Пол: Мужской

    WWW


    jump sort = jump short ?


    Записан

    Мы все учились понемногу… Чему-нибудь и как-нибудь.

    sersad

    Гость


    Доброго времени суток присланная прога от SAVC, выдает такое же сообщение как и мой вариант, не ищет она число и не выводит его на экран, а выводит надпись » максимальный»


    Записан
    Sla

    Команда клуба

    ua
    Offline Offline
    Пол: Мужской

    WWW


    sersad, ну правильно не выводит Улыбаюсь числа, зато ищет Улыбаюсь
    а если сделать

    m3: mov byte ptr max,ah
    mov ah,9
    mov dx,offset max
    int 21h
    ; теперь нужно вывести максимальное число, которое лежит, кажется в ah,
    ;предварительно преобразовав в символ и добавить знак $


    Записан

    Мы все учились понемногу… Чему-нибудь и как-нибудь.

    sersad

    Гость


    Sla, получилось вот так
     begin:   jmp setup
        mass db 1,2,3,4,5
        max db’0$’
    setup:
          mov cl,4
          lea bx,mass
          mov al,[bx]
          inc bx
          m2: cmp al,[bx]
          jnc m1
          mov al,[bx]
          m1: inc bx
          dec cl
          jnz m2
          mov max ,al
          mov ah,09
          add max,48
          lea dx,max
          int 21h
          xor ax,ax
          int 16h
          int 20h
    пришлось несколько переделать программу , пришлось отказаться от записи «максимальный» потому как не понимаю почему но не подменяется это сообщение тем числом которое прога вычислила , очевидно что не хватает ему места, а как это сделать пока не знаю.И еще не считает она почему то числа более 9. Подскажите .


    Записан
    Sla

    Команда клуба

    ua
    Offline Offline
    Пол: Мужской

    WWW


    вообще-то оно не будет работать с числами больше 15
    почему? Думаю, что сам ответишь

    а вот почему не выводилось
    так ты ж пред выводом строки запихнул в ah код функции,тем самім затерев результат


    Записан

    Мы все учились понемногу… Чему-нибудь и как-нибудь.

    Sla

    Команда клуба

    ua
    Offline Offline
    Пол: Мужской

    WWW


    sersad, и…  оформляй код тегами [code][/code]


    Записан

    Мы все учились понемногу… Чему-нибудь и как-нибудь.

    sersad

    Гость


    Sla, не то чтобы больше 15 оно и больше 10 не считает(правильно подмечено «оно») у меня пока только это и получается,если вы про эту команду mov max ,al   —   так ты ж пред выводом строки запихнул в ah код функции,тем самім затерев результат— если можно то конкретно ткните где что не так , не особенно понял.


    Записан
    Sla

    Команда клуба

    ua
    Offline Offline
    Пол: Мужской

    WWW


    sersad, слухай, откоментируй этот код, на каждую строчку

    begin: jmp setup
    mass db 1,2,3,4,5
    max db’0$’
    setup:
    mov cl,4 ;количество чисел
    lea bx,mass ;загрузить указатель
    mov al,[bx] ;al=mass[0]
    inc bx ;увеличить индекс массива
    m2:
    cmp al,[bx]
    jnc m1
    mov al,[bx]
    m1:
    inc bx
    dec cl
    jnz m2
    mov max ,al


    Записан

    Мы все учились понемногу… Чему-нибудь и как-нибудь.

    sersad

    Гость


    begin:   jmp setup
        mass db 1,2,3,4,5
        max db’0$’
    setup:
          mov cl,4        счетчик количества цифр
          lea bx,mass     загружаем в регистр bx
          mov al,[bx]     первое число в al
          inc bx          следующее число 
          m2: cmp al,[bx] сравниваем новое число с тем что в al
          jnc m1          смотрим флаг переход на m1
          mov al,[bx]     следующее число в al
          m1: inc bx      следующее число
          dec cl          уменьшаем счетчик
          jnz m2          смотрим флаг переход на m2
          mov max ,al     запись результата работы проги в al
          mov ah,09       вывод числа на экран
          add max,48      сложить значения max с 48
          lea dx,max      переслать max  в регистр dx
          int 21h         прерывание
          xor ax,ax       очистить регистр ax
          int 16h         прерывание
          int 20h         завешение программы
    но есть для меня и здесь не ясные команды так на пример мне не понятен смысл add max,48 ;      xor ax,ax ; потому  как если эти значения не вводить то не остается открытым окно проги, а так хотелось его увидеть.


    Записан
    Sla

    Команда клуба

    ua
    Offline Offline
    Пол: Мужской

    WWW


    sersad, 48 добавляем чтобы вывести число на экран
    поэтому у тебя и  выводятся числа от 0 до 9, а реально — тебе доступно для сортировки числа размерностью al (0…255)

    зы… я тебя просил оформи свой код тегами  [code] [/code]


    Записан

    Мы все учились понемногу… Чему-нибудь и как-нибудь.

    Понравилась статья? Поделить с друзьями:

    Не пропустите также:

  • Как исправить ошибку 204
  • Как найти объем второй пирамиды
  • Как найти привязанные аккаунты в инстаграме
  • Некоторые файлы повреждены как исправить
  • Whatsminer m21s ошибка 201 что за ошибка как исправить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии