Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Сложение данных с двух буферов


Автор: Katiuha 19.11.2007, 02:27
Есть два буффера(Buf1 и Buf2). В них находятся по шестнадцатеричному числу почти неограчинной величины.. 

Как реализовать шестнадцатеричное сложение этих двух чисел. ? 

Жду дельных советов...  smile 


Автор: MAKCim 19.11.2007, 10:07
число хранится в виде строки?

Автор: Katiuha 19.11.2007, 10:40
Цитата(MAKCim @ 19.11.2007,  10:07)
число хранится в виде строки?

Да

Автор: MAKCim 19.11.2007, 12:17
вот пример (числа должны быть правильными (т. к не проверок), для обозначения 10, 11, ..., 15 должны использоваться A, B, ..., F)
Код

; FASM 
; SI содержит адрес первой строки + ее длина - 1, DI содержит адрес второй строки + ее длина - 1 , BX содержит адрес строки-результата + ее длина - 1, CX - длина мЕньшей входной строки 
    xor dx, dx
@@:
    mov al, byte [si]
    call convert
    mov ah, al
    mov al, byte [di]
    call convert
    add al, ah
    add al, dl
    mov dl, al
    and al, 15
    shr dl, 4
    mov byte [bx], al
    dec si
    dec di
    dec bx
    dec cx
    jnz @B
    mov byte [bx], dl

convert:
    sub al, 30h
    cmp al, 9
    jbe @F
    sub al, 7
@@:
    ret

Автор: Katiuha 19.11.2007, 19:15
Цитата(MAKCim @ 19.11.2007,  12:17)

jnz @B

jbe @F

Несовсем понятно что должны делать эти команды..
1-ая возвращаться в начало, а вторая ?  smile 

Автор: MAKCim 19.11.2007, 19:17
Цитата(Katiuha @  19.11.2007,  19:15 Найти цитируемый пост)
Несовсем понятно что должны делать эти команды..
1-ая возвращаться в начало, а вторая ? 

на первую инструкцию перед которой стоит @@

Автор: Akina 19.11.2007, 19:20
Цитата(Katiuha @  19.11.2007,  20:15 Найти цитируемый пост)
что должны делать эти команды

Переход на ближайшую метку "@@" вперед (@Forward) или назад (@Backward).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)