Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
murokish
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 3
1

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

10.05.2016, 19:58. Просмотров 374. Ответов 3
Метки нет (Все метки)

Есть задание: Найти все ненулевые числа из массива, состоящего из десяти однобайтовых чисел, посчитать их количество и поместить это число на место первого элемента массива.
Код, который я написал:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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

Не могу исправить
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2016, 19:58
Ответы с готовыми решениями:

Как исправить ошибки
Условие:Вывести на экран цифры от 0 до 9. .model small .data .stack .code START: mov ax,...

Как исправить ошибки в программе ассемблера КР580?
Отладчик Asm85. После трансляции в программе показались ошибки,как их исправить? ...

Как исправить ошибки на Assembler. y = (a-(b*b))/100 + 200/a
Здравствуйте. Помогите подредактировать код на ассемблере, и если можно, то с комментариями =) ...

Подскажите, пожалуйста, как исправить ошибки в коде (новичок)
Здравствуйте! Работаю с DOSBox 0.74-2 и MASM32. 3. Здесь ошибок нет (вроде), но и результат не...

Исправить ошибки в порграмме
m segment assume cs:m, ss:m, cs:m, ds:m Org 100h; st: jmp met; r db ? g db...

3
R71MT
5343 / 1500 / 317
Регистрация: 29.07.2014
Сообщений: 2,524
Записей в блоге: 5
11.05.2016, 05:05 2
..ругается на строку(10), что массив-мол байтовый. Корректируй строки (30,44) под байты..
0
murokish
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 3
11.05.2016, 06:26  [ТС] 3
А как исправить?
0
Constantin Cat
2991 / 1125 / 376
Регистрация: 28.02.2015
Сообщений: 2,475
Завершенные тесты: 1
11.05.2016, 10:13 4
Цитата Сообщение от murokish Посмотреть сообщение
ideal
Вы используете режим IDEAL, вот и пешите с учетом его особенностей.
Операция квадратные скобки []
В режиме Ideal квадратные скобки должны быть всегда использованы для приема содержимого некоторого элемента. Например:

mov ax,wordptr

вызовет вывод на дисплей сообщения уровня предупреждения. Дело в том, что вы пытаетесь загрузить в регистр (AX) указатель (wordptr). Правильной формой записи является:
mov ax,[wordptr]

тем самым в AX просто загружается содержимое адреса памяти, на который указывает wordptr (в текущем сегменте данных, определяемом DS).

Если вам нужно обратиться к смещению в сегменте символического имени, то вы должны явно использовать операцию OFFSET, как в следующем примере:
mov ax,OFFSET wordptr
Правильной записью будет:
Assembler
1
mov ax,[offset tabsb + si]
Либо переписать под синтаксис MASM'a

Добавлено через 4 минуты

Или как вариант переключать режимы:
Assembler
1
2
3
masm    
    mov ax, tabsb[si];
ideal
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2016, 10:13

Исправить ошибки в коде
Ошибки: Assembling file: l1.asm **Error** l1.asm(5) Extra characters on line **Error**...

Помогите исправить ошибки
помогите исправить ошибки .model small .data summand_1 db ? N = $ - summand_1...

Окружность: исправить ошибки
при компиляции выдает ошибки: <29>Need address or register <30>Undefined symbol:yc1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru