Search code examples
arraysassemblyx86cpu-registerstasm

Sum a byte array to ax register


I have a question about summing one-byte array to ax, this is my code:

IDEAL
MODEL small
STACK 100h
DATASEG
; --------------------------
    arr db 6 dup (200)
; --------------------------
CODESEG
start:
    mov ax, @data
    mov ds, ax
; --------------------------
    xor ax, ax
    add ax, [arr]
    add ax, [arr + 1]
    add ax, [arr + 2]
    add ax, [arr + 3]
    add ax, [arr + 4]
    add ax, [arr + 5]
; --------------------------

exit:
    mov ax, 4c00h
    int 21h
END start


The assembler returns "Operand types do not match" I'm new to assembly so how can I overcome that? Thanks


Solution

  • Eventually I did this to solve my problem:

    IDEAL
    MODEL small
    STACK 100h
    DATASEG
    ; --------------------------
        arr db 6 dup (200)
    ; --------------------------
    CODESEG
    start:
        mov ax, @data
        mov ds, ax
    ; --------------------------
        xor ax, ax
        xor bh, bh
        mov bl, [arr]
        add ax, bx
        mov bl, [arr + 1]
        add ax, bx
        mov bl, [arr + 2]
        add ax, bx
        mov bl, [arr + 3]
        add ax, bx
        mov bl, [arr + 4]
        add ax, bx
        mov bl, [arr + 5]
        add ax, bx
    ; --------------------------
    
    exit:
        mov ax, 4c00h
        int 21h
    END start