Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler занесение числа в регистр

Автор: JacobyD
Дата сообщения: 19.12.2009 15:49
Очень долго сижу над проблемой...
нужно сравнить число из массива с числом в регистре dx и если число в массиве больше - занести его в dx


Код:
a dw 5,2,6,34,10,5,32,1,0,5,4,3,21,18,4,9

cmp a[si],dx
jb m2
xor dx,dx
mov dx,a[si]
m2:
...
Автор: akaGM
Дата сообщения: 19.12.2009 17:13
JacobyD
а можно весь код?
и для таких вопросов есть спец.тема:
http://forum.ru-board.com/topic.cgi?forum=33&topic=7682#1
Автор: aspis
Дата сообщения: 19.12.2009 19:17

Код:
Скорее всего поиск макс элемента в массиве, на masm:
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
.const
    N=16
.data
    a dw 5,2,6,34,10,5,32,1,0,5,4,3,21,18,4,9    ; размер 2 байта (=слово)
.code
start:
    lea esi,a
    mov dx,[esi] ; первое число, a[i]
    add esi,2    ;
    xor eax,eax    ; al - счетчик
    .while al<N
        .if [esi]>dx    ; если больше, то заносим в регистр
            mov dx,[esi]
        .endif
        add esi,2    ; увеличиваем счетчики
        inc al
    .endw
    invoke ExitProcess,0
end start
Автор: JacobyD
Дата сообщения: 20.12.2009 12:21
Вопщем, проблема была в том что я inc si делал 1 раз, а надо, почему-то 2 раза делать...
Автор: Abs62
Дата сообщения: 20.12.2009 14:05
JacobyD
Что значит "почему-то"? Элементы массива двухбайтовые (dw), значит, и si нужно на 2 увеличивать.

Страницы: 1

Предыдущая тема: Движение треугольника по треугольному контуру


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.