Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > Помогите найти ошибку в программе |
Автор: bncom 16.2.2007, 18:27 | ||
Вот программа:
Почему-т оона не транслируется в Turbo Assembler v4.1 Пишет, что найдена одна ошибка. В чем может быть проблема? |
Автор: piritus 16.2.2007, 18:47 |
у меня все ровно... а какую ошибку у тебя выдает и с какими парамертами компилишь? |
Автор: JAPH 16.2.2007, 18:55 |
А какая ошибка? Приведите текст. А то TASM v3.2 её спокойно компилирует, линкер лишь жалуется на отсутствие стэка. Замечание: процедура должна кончаться оператором RET. |
Автор: bncom 16.2.2007, 20:29 |
Вот что пишется: ![]() |
Автор: piritus 16.2.2007, 20:47 |
laba.asm в h:\tasm\bin\ в cmd пиши: cd \tasm\bin\ tasm.exe laba.asm tlink.exe laba.obj /t /t - создать файл типа COM |
Автор: bncom 17.2.2007, 09:18 |
Все получилось, файл laba.com создался. Но вот что мне с ним делать? Я его открываю обыкновенным способом - окошко сразу пропадает. Через командную строку - тоже никакого результата. Может файл с таким типом надо как-то по-другому открывать? Вот полученные exe-файлы мы окрывали через Turbo Debagger... А тут что делать? |
Автор: Ant 17.2.2007, 09:48 |
bncom, ну так и должно быть, ведь твоя программа ничего не выводит на экран, и ничего не просит ввести. Чего же ты от нее хочешь? |
Автор: bncom 17.2.2007, 15:22 |
Ну а как результат-то ее действий посмотреть? |
Автор: piritus 17.2.2007, 17:49 |
попробуй так: laba.asm в h:\tasm\bin\ в cmd пиши: cd \tasm\bin\ tasm.exe laba.asm tlink.exe laba.obj (без параметра /t) должен быть .exe если будет ругаться на отсутствие сегмента стека, то не обращай внимание |
Автор: bncom 18.2.2007, 10:54 |
Спасибо, все получилось. Тему можите закрывать. |
Автор: Konstantinopol 21.2.2007, 11:15 |
1.Дан массив размерности n.Найти первый отрицательный элемент. Вопрос:Сделать для двух отрицательных элементов? #include <iostream> using namespace std; int main() { const int n = 10; int ar[n] = {4, 0, 2, 4, 3, 3, -5, 3, 7, 5}; int r; asm { pusha push es push ds pop es lea edi, ar lea esi, [edi + 4] xor eax, eax mov ecx, n @4: scasd jg @5 loop @4 mov r, -1 jmp @6 @5: sub edi, esi shr edi, 2 mov r, edi @6: pop es popa } (r < 0) ? cout<<"No negative elements" : cout<<ar[r]; return 0; } 2. В строке заменить все символы '1' символом '0', а символы '0' символом '1' Вопрос: Шестым символом появляется '1' - помогите исправить? #include <iostream> using namespace std; int main() { char s[] = "234105431591045\0"; char buf[30]; asm { pusha push es push ds pop es lea esi, s lea edi, buf @1: lodsb cmp al, '0' jne @2 mov al, '1' stosb jmp @3 @2: cmp al, '1' jne @3 mov al, '0' @3: stosb test al, al jne @1 pop es popa } cout<<buf; return 0; } |