Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Ошибка в коде программы"Unexpected end of file encountered"

Ответить
Настройки темы
Assm - Ошибка в коде программы"Unexpected end of file encountered"

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 13-03-2014
Изображения
Тип файла: jpg assm.jpg
(418.9 Kb, 3 просмотров)
При ассемблировании программы выдаёт такую вот ошибку **Fatal** 3.ASM(40) Unexpected end of file encountered

Подскажите в чём проблема и как решить.


Код: Выделить весь код
;---------Prg_1.asm----------------------
;Программа преобразования двузначного шестнадцатеричного числа
;в двоичное представление с использованием команды xlat.
;Вход: исходное шестнадцатеричное число; вводится с клавиатуры.
;Выход: результат преобразования в регистре al.
.model small
.data                ;сегмент данных
  message    db      ‘Введите две шестнадцатеричные цифры,$’
  tabl           db      48 dup (0),0,1,2,3,4,5,6,7,8,9, 8 dup (0)
                   db      0ah,0bh,0ch,odh,0eh,0fh,27 dup (0)
                 db      0ah,0bh,0ch,odh,0eh,0fh, 153 dup (0)
 .stack     256     ;сегмент стека
 .code
 ;начало сегмента кода
main proc    ;начало процедуры main
    mov     ax,@data        ;физический адрес сегмента данных в регистр ax
    mov     ds,ax   ;ax записываем в ds
    lea     bx,tabl ;загрузка адреса строки байт в регистр bx
    mov     ah,9
    mov     dx,offset message
    int     21h     ;вывести приглашение к вводу
    xor     ax,ax   ;очистить регистр ax
    mov     ah,1h   ;значение 1h в регистр ah
    int     21h     ;вводим первую цифру в al
    xlat    ;перекодировка первого введенного символа в al
    mov     dl,al
    shl     dl,4    ;сдвиг dl влево для освобождения места для младшей цифры
    int     21h     ;ввод второго символа в al
    xlat    ;перекодировка второго введенного символа в al
    add     al,dl   ;складываем для получения результата
    mov     ax,4c00h        ;пересылка 4c00h в регистр ax
    int     21h     ;завершение программы
main endp    ;конец процедуры main
codeends    ;конец сегмента кода
main end    ;конец программы с точкой входа main

Отправлено: 00:02, 12-03-2014

 

Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Какой ассемблер у вас? И вот это:
Цитата LexKD:
.code »
Цитата LexKD:
codeends ;конец сегмента кода »
Как-то не сходится. codeends нужен пробел, а строка эта вообще тут неизвестно зачем.
Посмотрите здесь пункт 7.1.

Отправлено: 15:03, 12-03-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


если code ends написать раздельно, то появляется ошибка.

компилирую в PFE32 через tasm и tlink

Прога должна переводить шестнадцатеричное число в двоичное значение.


Код: Выделить весь код
;---------Prg_1.asm----------------------
;Программа преобразования двузначного шестнадцатеричного числа
;в двоичное представление с использованием команды xlat.
;Вход: исходное шестнадцатеричное число; вводится с клавиатуры.
;Выход: результат преобразования в регистре al.
.model small
.data ;сегмент данных
message db ‘Введите две шестнадцатеричные цифры,$’
tabl db 48 dup (0),0,1,2,3,4,5,6,7,8,9, 8 dup (0)
db 0ah,0bh,0ch,odh,0eh,0fh,27 dup (0)
db 0ah,0bh,0ch,odh,0eh,0fh, 153 dup (0)
.stack 256 ;сегмент стека
.code
;начало сегмента кода
;начало процедуры main
Имя:mov ax,@data ;физический адрес сегмента данных в регистр ax
mov ds,ax ;ax записываем в ds
lea bx,tabl ;загрузка адреса строки байт в регистр bx
mov ah,9
mov dx,offset message
int 21h ;вывести приглашение к вводу
xor ax,ax ;очистить регистр ax
mov ah,1h ;значение 1h в регистр ah
int 21h ;вводим первую цифру в al
xlat ;перекодировка первого введенного символа в al
mov dl,al
shl dl,4 ;сдвиг dl влево для освобождения места для младшей цифры
int 21h ;ввод второго символа в al
xlat ;перекодировка второго введенного символа в al
add al,dl ;складываем для получения результата
mov ax,4c00h ;пересылка 4c00h в регистр ax
int 21h ;завершение программы
end имя ;конец программы с точкой входа main
так код работает, но возник спор с другом.Он говорит, что так прога работает с багами.Я правильно исправил?
Прога работает не полностью, она выводи сообщение, что нужно ввести шестнадцатеричное число, после ввода ничего не происходит.

Последний раз редактировалось Drongo, 13-03-2014 в 19:41.


Отправлено: 19:41, 12-03-2014 | #3


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата LexKD:
так код работает »
Как видите, данная строка не нужна.
Если она компилируется, значит синтаксических ошибок нет.
Цитата LexKD:
после ввода ничего не происходит. »
Как понять ничего не происходит?
Пройдитесь дебаггером, в dl, как я понимаю, ваш искомый результат.

Отправлено: 07:55, 13-03-2014 | #4


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


если я не ошибаюсь, то в Programmer's file editor нет дебагера. Могу ошибаться, только недавно начал изучать ассемблер.

Отправлено: 17:01, 13-03-2014 | #5


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата LexKD:
если я не ошибаюсь, то в Programmer's file editor нет дебагера. Могу ошибаться, только недавно начал изучать ассемблер. »
Поищите, с tasm и tlink, насколько я помню, td шел.
Цитата LexKD:
после ввода ничего не происходит »
В комментариях же написано, что результат в al. Данный результат вам надо либо на экран выводить, либо смотреть в дебаггере.

Отправлено: 08:26, 14-03-2014 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Ошибка в коде программы"Unexpected end of file encountered"

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - [решено] HDD Samsung252HJ ошибка SMART "End-To-End" как ее обойти rebe Накопители (SSD, HDD, USB Flash) 11 08-05-2016 06:36
Ошибка - Ошибка: "Unexpected Error. Could not load resource." Nun-Nun Microsoft Windows 2000/XP 7 16-12-2012 12:22
Всплывает сообщение "Прекращена работа программы "Hosts file cleaner" AlexPSPb Лечение систем от вредоносных программ 4 08-01-2012 14:33
Не запускается Hijack ("Unexpected Error") mwm999 Microsoft Windows 95/98/Me (архив) 5 14-02-2007 15:17
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход