Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
#1

Не работает программа - Assembler

21.05.2015, 15:49. Просмотров 473. Ответов 17
Метки нет (Все метки)

Почему так? На что жалуется?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
;   Копирует сектор (256 байт)
;   ------------------------------------
;   Входы: SI–начальный адрес сектора источника
;       DI – начальный адрес сектора приемника
;
Copy_sector:
        Push cx
        Pushhf           ; Сохранить флаг направления DF
        Cld             ; Сбросить этот флаг
        Mov cx, 256         ; В счетчике число байт
    Rep mov sb          ; Пересылка цепочки байт
        Popf                ; Восстановить флаг DF
        Pop cx
        Ret
0
Миниатюры
Не работает программа   Не работает программа  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2015, 15:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает программа (Assembler):

Не работает программа - Assembler
Доброго Вам времени суток. Есть программа, которая должна считать сколько четных элементов присудствует в массиве dist_index и записывать...

Не работает программа( - Assembler
Привет всем, дано задание: все отрицательные числа массива превратить в ноль. Составил программу, компиляцию проходит и запускается в...

Не работает программа! - Assembler
CSEG segment org 100h Start: mov ah,3 int 10h mov ax,0B800h mov es,ax mov al,1

ПРограмма не работает - Assembler
Вообщем есть программа, но она не работает. ПИшет, что ошибка в символе @. Подскажите как его заменить или что нужно сделать? .286 ...

Не работает программа - Assembler
имеется прога которая удаляет лишние пробелы и заменяет пробел на символ "_", но она не работает( masm .model small .stack 256 ...

Неправильно работает программа - Assembler
Что то не пойму, допустим если в консоль ввести пробел пробел и 11 в конце программы смотрю дамп outStr 31 31 24 Все норм, а...

17
Ethereal
2864 / 1204 / 148
Регистрация: 17.02.2013
Сообщений: 1,998
21.05.2015, 17:25 #2
На Pushhf жалуется. Потому-что Pushf
2
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
21.05.2015, 18:14  [ТС] #3
Etherel,
0
Миниатюры
Не работает программа  
Ethereal
2864 / 1204 / 148
Регистрация: 17.02.2013
Сообщений: 1,998
21.05.2015, 23:44 #4
movsb пишется слитно.
2
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
22.05.2015, 08:26  [ТС] #5
Ethereаl,
читай ниже ошибку, эту и исправил.
0
Ethereal
2864 / 1204 / 148
Регистрация: 17.02.2013
Сообщений: 1,998
22.05.2015, 16:10 #6
Тогда чего тебе надо ? В подпрограмме Copy_Sector, которую ты показал, больше ошибок нет.
Компоновщик там main не может найти, но это к Copy_Sector не имеет отношения.
2
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
22.05.2015, 16:22  [ТС] #7
Ethereаl,
Окей, программа то почему не работает?! Пути решения проблемы какие могут быть?
0
Ethereal
2864 / 1204 / 148
Регистрация: 17.02.2013
Сообщений: 1,998
22.05.2015, 16:55 #8
Ты программу целиком показал ? Или только маленький кусочек ?
2
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
22.05.2015, 23:44  [ТС] #9
Etherаl,
Целиком, естественно.
0
Ethereal
2864 / 1204 / 148
Регистрация: 17.02.2013
Сообщений: 1,998
23.05.2015, 01:44 #10
Цитата Сообщение от Prapor48 Посмотреть сообщение
программа то почему не работает?
Так нечему в ней работать.

Добавлено через 34 минуты
Это вообще не программа.

Впрочем, если сделать вот так :
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
code     segment
;   Копирует сектор (256 байт)
;   ------------------------------------
;   Входы: SI-начальный адрес сектора источника
;        DI - начальный адрес сектора приемника
;
public Copy_sector
Copy_sector:
        Push cx
        Pushf           ; Сохранить флаг направления DF
        Cld             ; Сбросить этот флаг
        Mov cx, 256     ; В счетчике число байт
    Rep movsb           ; Пересылка цепочки байт
        Popf            ; Восстановить флаг DF
        Pop cx
        Ret
code    ends
        end
из этого можно скомпилировать гарный OBJ-файл.
2
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
23.05.2015, 09:24  [ТС] #11
Etherаl,
Короче, вот.
0
Миниатюры
Не работает программа  
Ethereal
2864 / 1204 / 148
Регистрация: 17.02.2013
Сообщений: 1,998
23.05.2015, 18:51 #12
Что вот ? Поговорку про обезъяну с гранатой слышал ? Ты зачем этот SASM скачал ? Он небось заточен под компиляцию 32-разрядных виндозных приложений. А у тебя в твоем примере код явно 16-разрядный MS-DOS-овский и код подпрограммы, а не программы. Найди TASM и TLINK версий 2.x 3.x и в командной строке исполняй
tasm /l/m program.asm
если тебе действительно надо получить 16-разрядный OBJ-файл с подпрограммой для MS-DOS-овских программ. Только он сам по себе работать не будет. Потому-что он - еще не программа.

И в любом случае развернуто пиши что ты хочешь сделать. Чтобы было понятно что тебе говорить. А пока непонятно что компилируешь непонятно чем, с непонятной целью, не приходя в сознание.
2
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
29.05.2015, 11:53  [ТС] #13
Ehereаl,
Окей, понял тебя. Есть задание, запустить этот кусок программы или недопрограммы, в SАSM. Как это сделать - я не знаю, поэтому пишу сюда. Если можешь - помоги\подскажи\покажи. Как сделать так, что бы вышеизложенное заработало? Теоретически, программа должна выводить на экран сектор, входящий в сегмент операнда из программы, или как то так.
П.с. Либо, как вариант, программу можно запустить в DOSBox , только я опять таки не знаю как.
0
Ethereal
2864 / 1204 / 148
Регистрация: 17.02.2013
Сообщений: 1,998
30.05.2015, 00:15 #14
Цитата Сообщение от Prapor48 Посмотреть сообщение
Теоретически, программа должна выводить на экран сектор
Выводить НА ЭКРАН ? В приведенном куске кода даже и близко нет никакого вывода на экран.

Добавлено через 2 минуты
Там только копирование 256-и байт подряд из одного места памяти в другое. И больше ничего.

Добавлено через 24 минуты
Цитата Сообщение от Prapor48 Посмотреть сообщение
Есть задание, запустить этот кусок программы или недопрограммы, в SАSM.
Цитата Сообщение от Prapor48 Посмотреть сообщение
Либо, как вариант, программу можно запустить в DOSBox
То-ли MS-DOS-овскую программу запустить под виндозным отладчиком, то-ли виндозную программу запустить в DOS-BOX. Может вашему преподавателю следует обратиться к врачу ?

Цитата Сообщение от Prapor48 Посмотреть сообщение
сектор, входящий в сегмент операнда из программы
Это набор бессмысленных слов. Во всяком случае в таком сочетании.
Цитата Сообщение от Prapor48 Посмотреть сообщение
или как то так.
Короче, сам не знаешь чего хочешь.

Так тебе все таки MS-DOS-овскую программу надо написать или виндозную ? Если первое, то на... SASM, если второе, то на... DOSBOX.
И чего на экран она выводить-то должна ? Про сектор, входящий в сегмент нам больше грузить не надо.
2
Prapor48
1 / 1 / 0
Регистрация: 17.12.2012
Сообщений: 83
01.06.2015, 13:26  [ТС] #15
Ethereal,
Первый вариант. В-общем, можете сделать так, что бы программа в SАSM что то делала? Нужно всего лишь запустить программу и сделать скриншот, что она нормально fункционирует.
0
01.06.2015, 13:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2015, 13:26
Привет! Вот еще темы с ответами:

Tasm: не работает программа - Assembler
Почему не работает программа? ideal model small stack 512 MACRO M_Exit mov ah, 04Ch int 21h ; Виклик переривання DOS, ENDM...

Неправильно работает программа - Assembler
Пожалуйста помогите,почему то ответ выдает неправильный .model small .stack 100h .data a db 4 b db 3 c db 5 .code start:

Не работает программа (Пирогов) - Assembler
Изучаю ассемблер по Пирогову "Учебный курс". Написал программу, пытаюсь компилировать, вот что пишет(компилятор masm 6.15): ...

как работает программа??? - Assembler
не могли бы вы мне объяснить, что происходит в этой программе: CSEG segment org 100h assume cs:CSEG, ds:CSEG Begin: mov sp,...


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

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

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