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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - ASSM | Моё первое ассемблироание

Ответить
Настройки темы
Assm - ASSM | Моё первое ассемблироание

Аватара для AnGel_of_Death

Старожил


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

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


Изменения
Автор: AnGel_of_Death
Дата: 22-06-2006
при ассемблировании проги, простенькой т.к. только учусь вылетает ошибка если не использовать параметр /AT link: warning L4021: no stack segment.
почему её не получается сделать exe?
при использовании \AT создается com и без каких либо ошибок.

Отправлено: 21:07, 22-06-2006

 

Аватара для DillerInc

Обратный инженер


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

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


AnGel_of_Death
Цитата:
а не подскажешь где оно?
...в данном случае там указано: [5] memory1 b DS:0.
К примеру,в SoftIce это команда "d address|register",чтобы вывести дамп памяти определённого адреса.
Цитата:
и как понять что там написано???
...различные символы имеют свои шестнадцатиричные представления,например:
48 65 6С 6С 6F -- есть Hello.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 00:58, 24-06-2006 | #11



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

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


Аватара для AnGel_of_Death

Старожил


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

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


я подумал, что вы использовали ASCII коды но был не уверен поэтому спросил. а другого способа распознать нет?

-------
Смотри на порблемы шире, они могут оказаться не так сложны.
и не забывай, щелкать "полезное сообщение", если оно действительно полезное.


Отправлено: 01:25, 24-06-2006 | #12


Аватара для DillerInc

Обратный инженер


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

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


Цитата:
а другого способа распознать нет?
...что ты имеешь ввиду??
Взгляни на окно дампа:
* слева там указаны адреса в памяти
* посредине -- hex-представления байтов
* справа же -- символьное представление этих байтов
Вот по символьному представлению и распознавай.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 13:12, 24-06-2006 | #13


Аватара для AnGel_of_Death

Старожил


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

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


появился еще один вопросик. есть вот такой исходник :
CSEG segment
org 100h
_beg:
mov ah, 9
mov dx,string ;(я знаю что для правельной работы нужно offset)
int 21h
mov ah, 10h
int 16h
int 20h
string db 'hellow, world!$'
CSEG ends
end _beg
но в примере написано что должно работать и так только уместятся не все символы, а у меня ошибка что-то на вроде :
"error A4910: can't open file : $\masm611\bin\ml.err
m\name.asm(5):error A2070 - это понятно строка в которой ошибка, но почему ошибка???
или это ошибка в учебнике(обучаюсь по рассылкам Калашникова)
за ранее спасибо!

-------
Смотри на порблемы шире, они могут оказаться не так сложны.
и не забывай, щелкать "полезное сообщение", если оно действительно полезное.


Отправлено: 14:06, 01-07-2006 | #14


Аватара для DillerInc

Обратный инженер


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

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


Цитата:
я знаю что для правельной работы нужно offset
...ну,так а в чём проблема -- добавь offset, т.к. тут надо передавать не сами данные,а указатель на них.
Цитата:
или это ошибка в учебнике
...всё может быть.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 14:30, 01-07-2006 | #15


Аватара для AnGel_of_Death

Старожил


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

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


ладно будем считать это опчаткой.
другой вопрос. хочу задать цикл, простенький чтоб повторил пять раз одну и ту же строчку такого вида(подскажите что не так делаю):
lesson segment

org 100h

mov cx, 5

start:

mov ah,9
mov dx, offset string
int 21h
loop start
jmp start2
start2:
int 20h
string db 'hello, WORLD!!!$'
lesson ends
end start2
end start
Вот примерно так.

-------
Смотри на порблемы шире, они могут оказаться не так сложны.
и не забывай, щелкать "полезное сообщение", если оно действительно полезное.


Отправлено: 19:24, 01-07-2006 | #16


Аватара для DillerInc

Обратный инженер


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

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


AnGel_of_Death
Оформляешь код ты немного странно.
Точкой входа в программу по идее должно быть start:,у тебя до этого стоит команда MOV.
Далее в данном случае совсем не обязателен переход jmp start2,потому что команда int 20h всё равно получит управление,когда счётчик цикла CX станет равным нулю,т.к. находится она сразу за циклом.
start2 походу является меткой(иными словами просто адресом в коде),поэтому её не надо закрывать связкой end start2.
Поэтому:

Код: Выделить весь код
lesson segment

org 100h

start:

mov cx, 5
cycle:
mov ah,9
mov dx, offset string
int 21h
loop cycle
int 20h
string db 'hello, WORLD!!!$'
lesson ends
end start
Вот примерно так...

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

Последний раз редактировалось DillerInc, 02-07-2006 в 01:40.


Отправлено: 01:28, 02-07-2006 | #17


Аватара для Cyberhawk

Пользователь


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

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


Хм... когда-то и я так начинал... разбирался тоже по Калашникову вначале... но лучше достать хороший справочник по прерываниям + командам. Недавно вот виндусовского сапера (аналог "Новичка") на ассемблере написал... аж горжусь!

Отправлено: 19:32, 02-07-2006 | #18


Аватара для AnGel_of_Death

Старожил


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

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


этот код тоже не пашет пашет вот этот и пока только он!

lesson segment
org 100h

start:

mov cx, 5
printloop:
push cx
mov ah,9
mov dx, offset string
int 21h
pop cx
loop printloop
int 20h
string db 'hello, WORLD!!!$'
lesson ends
end start

в том коде я сам не понимаю почему, он первую метку не выполняет никак, он как будто её вообще не видит!
т.о. в сх ничего не попадает. и отсчет идет от FFFF, т.к какая-то команда изменяет значение этого регистра(кроме loop),
на другом форуме сказали что прерывания биос могут влиять на этот регистр.

-------
Смотри на порблемы шире, они могут оказаться не так сложны.
и не забывай, щелкать "полезное сообщение", если оно действительно полезное.


Отправлено: 00:41, 06-07-2006 | #19


Аватара для DillerInc

Обратный инженер


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

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


Цитата:
пашет вот этот
...потому что на том форуме правильно сказали -- прерывания DOS'а могут изменять регистры.Поэтому посоветовали сохранять значение регистра в стеке.Вообще,в таких случаях нужно пользоваться отладкой,чтобы разобраться в чём причина ошибки.
Цитата:
он первую метку не выполняет никак, он как будто её вообще не видит!
...потому что в твоём первом варианте команда MOV стоит до точки входа в программу(с неё начинается исполнение кода) -- ясен перец,что команда не выполнится при таком раскладе.

Последний раз редактировалось DillerInc, 06-07-2006 в 14:05.


Отправлено: 01:31, 06-07-2006 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - ASSM | Моё первое ассемблироание

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Видео под моё железо kul Видеокарты 33 26-01-2008 13:23
Assm - ASSM | Непонятки с irq в защищенном режиме LeonidPr Программирование и базы данных 3 22-07-2006 15:18
Assm - *ASSM* | Как написать bootsector Steps Программирование и базы данных 2 07-07-2005 15:31
Где моё пустое место? vovixxx Хочу все знать 9 16-02-2004 21:05




 
Переход