Member 13095660 Ответов: 1

Типы операндов не совпадают с ассемблером


Я только начал учиться сборке. Я сделал программу ниже, но компилятор показал мне два сообщения об ошибке. Первый - в строке номер 30. Содержание сообщения таково: типы операндов не совпадают. Содержание второго сообщения таково: обнаружен неожиданный конец файла. Его в линейке НР. 34. Я использую компилятор TASM уже. Основная задача программы-найти наименьшее число массива.


              .MODEL  huge                   ;1
                                              ;2    
.code                                         ;3
ORG    256h                                   ;4   
                                              ;5  
                ASSUME  CS:Dane, DS:Kod, SS:  ;6
                                              ;7   
Start:                                        ;8      
                                              ;9 
DL_TABLICA      EQU     10                    ;10   
Tablica         DB      01h, 02h, 00h, 10h, 12h, 33h ;11
                DB      15h, 09h, 11h, 08h, 0Ah, 00h ;12
Najmniejsza     DB      ?                      ;13   

                jmp     Poczatek               ;15

Poczatek:                                       ;17
                mov     ah, [si]                ;18
                mov     dx, DL_TABLICA          ;19

Petla:                                          ;21
                mov     bx, SEGMNT Tablica      ;22
                cmp     dl, [bx]                ;23
                jae     Petla                   ;24  
                mov     al, [di]                ;25
                dec     bx                      ;26  
Skok:                                           ;27
                loop     Skok                   ;28

                mov     ax, Najmniejsza          ;30

                mov     ax, 4C13h                ;32
                int     21h                      ;33 

 Dane END                                        ;34


Что я уже пробовал:

Я попытался повторить
mov     ax, Najmniejsza
с
movzx ax, byte ptr Najmniejsza 
но это все равно не работает.

1 Ответов

Рейтинг:
0

Jochen Arndt

Синтаксис, используемый ассемблерами x86, немного отличается. Поэтому вы должны прочитать соответствующее руководство.

Чтобы загрузить адрес в регистр, ТАСМ использует OFFSET ключевое слово:

Руководство пользователя Borland Turbo Assembler:
Если вы хотите сослаться на смещение символа внутри сегмента, вы должны явно использовать оператор смещения
mov     ax, OFFSET Najmniejsza

Ошибка "неожиданный конец файла обнаружен", вероятно, вызвана неправильным END заявление. Это должно быть как
END Start
Я рекомендую получить копию Руководство пользователя Borland Turbo Assembler. Его можно найти в интернете в виде PDF-файла.