|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - ASSM | Моё первое ассемблироание |
|
Assm - ASSM | Моё первое ассемблироание
|
![]() Старожил Сообщения: 169 |
при ассемблировании проги, простенькой т.к. только учусь вылетает ошибка если не использовать параметр /AT link: warning L4021: no stack segment.
почему её не получается сделать exe? при использовании \AT создается com и без каких либо ошибок. |
|
Отправлено: 21:07, 22-06-2006 |
![]() Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать AnGel_of_Death
Цитата:
К примеру,в SoftIce это команда "d address|register",чтобы вывести дамп памяти определённого адреса. Цитата:
48 65 6С 6С 6F -- есть Hello. |
||
------- Отправлено: 00:58, 24-06-2006 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать я подумал, что вы использовали ASCII коды но был не уверен поэтому спросил. а другого способа распознать нет?
|
------- Отправлено: 01:25, 24-06-2006 | #12 |
![]() Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата:
Взгляни на окно дампа: * слева там указаны адреса в памяти * посредине -- hex-представления байтов * справа же -- символьное представление этих байтов Вот по символьному представлению и распознавай. |
|
------- Отправлено: 13:12, 24-06-2006 | #13 |
![]() Старожил Сообщения: 169
|
Профиль | Отправить 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 |
![]() Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
|
||
------- Отправлено: 14:30, 01-07-2006 | #15 |
![]() Старожил Сообщения: 169
|
Профиль | Отправить 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 |
![]() Обратный инженер Сообщения: 644
|
Профиль | Отправить 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 |
Пользователь Сообщения: 149
|
Профиль | Отправить PM | Цитировать Хм... когда-то и я так начинал... разбирался тоже по Калашникову вначале... но лучше достать хороший справочник по прерываниям + командам. Недавно вот виндусовского сапера (аналог "Новичка") на ассемблере написал... аж горжусь!
![]() |
Отправлено: 19:32, 02-07-2006 | #18 |
![]() Старожил Сообщения: 169
|
Профиль | Отправить 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 |
![]() Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
|
||
Последний раз редактировалось DillerInc, 06-07-2006 в 14:05. Отправлено: 01:31, 06-07-2006 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Видео под моё железо | 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 |
|