Как исправить данные ошибки - Assembler

Узнай цену своей работы

Формулировка задачи:

Есть задание: Найти все ненулевые числа из массива, состоящего из десяти однобайтовых чисел, посчитать их количество и поместить это число на место первого элемента массива. Код, который я написал:
ideal
model small
P386
 
SEGMENT _stack para use16 stack 'stack'
    db 100h dup(?)
ENDS _stack
 
SEGMENT data para use16 public 'data'
    tabsb db 1, 0, 3, 7, 0, 2, 0, 0, 4, 6
ENDS data
 
SEGMENT code para use16 public 'code'
ASSUME  cs:code,ds:data,es:data,ss:_stack
proc main
; inicializaciya ds, es
    mov ax, data
    mov ds, ax
    mov es, ax
 
; ischem nulevye elemnty v massive
    mov si, 0 ; j
    mov di, 0 ; i
 
cycle:
 
    cmp si, 9 ;
    je  exit  ;
    
    mov ax, tabsb[si];
    cmp ax, 0; сравниваем текущий элемент массива с 0
    je nol ;
 
    inc si;
    jmp cycle ;
 
nol:
    inc di;
    inc si;
    jmp cycle;
 
exit:
    mov si, 0;
    mov tabsb[si], di;

; konec programmy
    mov ax, 4C00h
    int 21h
    
    endp main
        
ENDS code
END main
Но компилятор выдает ошибки Warning: Laba.asm(30) Pointer expression needs brackets Error: Laba.asm(30) Operand types do not match Error: Laba.asm(44) Too dew operands to instruction Warning: Laba.asm(44) Pointer expression needs brackets Не могу исправить

Решение задачи: «Как исправить данные ошибки»

textual
Листинг программы
masm    
    mov ax, tabsb[si];
ideal

Оцени полезность:

9   голосов , оценка 3.889 из 5