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

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

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

Есть задание: Найти все ненулевые числа из массива, состоящего из десяти однобайтовых чисел, посчитать их количество и поместить это число на место первого элемента массива. Код, который я написал:
Листинг программы
  1. ideal
  2. model small
  3. P386
  4. SEGMENT _stack para use16 stack 'stack'
  5. db 100h dup(?)
  6. ENDS _stack
  7. SEGMENT data para use16 public 'data'
  8. tabsb db 1, 0, 3, 7, 0, 2, 0, 0, 4, 6
  9. ENDS data
  10. SEGMENT code para use16 public 'code'
  11. ASSUME cs:code,ds:data,es:data,ss:_stack
  12. proc main
  13. ; inicializaciya ds, es
  14. mov ax, data
  15. mov ds, ax
  16. mov es, ax
  17. ; ischem nulevye elemnty v massive
  18. mov si, 0 ; j
  19. mov di, 0 ; i
  20. cycle:
  21. cmp si, 9 ;
  22. je exit ;
  23. mov ax, tabsb[si];
  24. cmp ax, 0; сравниваем текущий элемент массива с 0
  25. je nol ;
  26. inc si;
  27. jmp cycle ;
  28. nol:
  29. inc di;
  30. inc si;
  31. jmp cycle;
  32. exit:
  33. mov si, 0;
  34. mov tabsb[si], di;
  35.  
  36. ; konec programmy
  37. mov ax, 4C00h
  38. int 21h
  39. endp main
  40. ENDS code
  41. 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
Листинг программы
  1. masm    
  2.     mov ax, tabsb[si];
  3. ideal

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут