Security Teams



:::
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению ) Ответ в темуСоздание новой темыСоздание опроса

> ASSEMBLER и этим всё сказано
nameless
Дата 20.02.2005 - 01:18
Цитировать сообщение
Offline



.:Тень:.
******

Профиль
Группа: -experts-
Сообщений: 1745
Пользователь №: 18
Регистрация: 19.02.2005



Рейтинг:
(90%) XXXXX


data segment para public "data"
message db "input 2 hex chars.$"
data ends

stk segment stack
db 256 dup (?)
stk ends

code segment para public "code"

assume cs:code, ds:data, ss:stk

beg:
mov ax,data
mov ds,ax

mov ah,9
mov ax,offset message
int 21h

xor ax,ax

mov ah,1h ;функция ввода символа с клавиатуры
int 21h ; прерывания на ввод

mov dl,al
sub dl,30h
cmp dl,9h ;<<<<<
jle m1

sub dl,7h

m1:

mov cl,4h
shl dl,cl

int 21h ; прерывания на ввод

sub al,30h
cmp al,9h ;<<<<<<
jle m2

sub al,7h

m2:

add dl,al
mov ax,4c00h
int 21h ;exit the program

code ends
end beg


Вот этод код я взял из книжки. Все компилируется и линкуется отлично, но при запуске ЕХЕшника система орет что обнаружена недопустимая конструкция. И предлагает либо завершить работу проги либо пропустить. Вобщем прога не рабочая. Собсна в чём проблема?


--------------------
Мы расправим крылья
PM
Top
^rage^
Дата 20.02.2005 - 01:48
Цитировать сообщение
Offline



Junior
*

Профиль
Группа: -users-
Сообщений: 11
Пользователь №: 11
Регистрация: 18.02.2005



Рейтинг:
(0%) -----


вы её под какой ОС запускаете?
PM
Top
Mr.Clumsy
Дата 20.02.2005 - 08:03
Цитировать сообщение
Offline



Junior
*

Профиль
Группа: -users-
Сообщений: 48
Пользователь №: 23
Регистрация: 20.02.2005



Рейтинг:
(10%) X----


В самом начале у тебя печать строки:
Цитата
mov ah,9
mov ax,offset message
int 21h


Это неправильно. Адрес строки должен быть в dx. Напиши: mov dx,offset message и будет тебе счастье.
PM
Top
Guest
Дата 21.02.2005 - 02:28
Цитировать сообщение




Unregistered












2Mr.Clumsy
Я знаю, но дело в том, что если написать ах - строка просто не будет напечатана, а в даном случае - завершение проги, причом стакими зверскими матюками.

Цитата
вы её под какой ОС запускаете?

ХР
Top
Mr.Clumsy
Дата 21.02.2005 - 06:45
Цитировать сообщение
Offline



Junior
*

Профиль
Группа: -users-
Сообщений: 48
Пользователь №: 23
Регистрация: 20.02.2005



Рейтинг:
(10%) X----


Цитата (Guest @ 20.02.2005 - 23:28)
2Mr.Clumsy
Я знаю, но дело в том, что если написать ах - строка просто не будет напечатана, а в даном случае - завершение проги, причом стакими зверскими матюками.

Цитата
вы её под какой ОС запускаете?

ХР

Если ты запишешь смещение строки в ax, выполнится не печать строки, какая-то другая функция. Потому и не работает прога как надо.

Описание функций 21-го прерывания смотрел?
PM
Top
rex
Дата 22.02.2005 - 22:34
Цитировать сообщение
Offline



Fanat
***

Профиль
Группа: -users-
Сообщений: 226
Пользователь №: 30
Регистрация: 22.02.2005



Рейтинг:
(30%) XX---


Цитата (Guest @ 20.02.2005 - 23:28)
2Mr.Clumsy
Я знаю, но дело в том, что если написать ах - строка просто не будет напечатана, а в даном случае - завершение проги, причом стакими зверскими матюками.


попробуй сделать вот так

mov dx,offset message
mov ax,dx

а после этого делай вывод


--------------------
Не надо меня оскорблять! Меня оскорбляли высококвалифицированные специалисты!
PM
Top
nameless
Дата 23.02.2005 - 01:51
Цитировать сообщение
Offline



.:Тень:.
******

Профиль
Группа: -experts-
Сообщений: 1745
Пользователь №: 18
Регистрация: 19.02.2005



Рейтинг:
(90%) XXXXX


Точно - всё работает. А где можна детальнее почитать про функции прерываний? И какую литературу посоветуете читать по асемблеру? Какую читали вы?


--------------------
Мы расправим крылья
PM
Top
Mr.Clumsy
Дата 23.02.2005 - 07:49
Цитировать сообщение
Offline



Junior
*

Профиль
Группа: -users-
Сообщений: 48
Пользователь №: 23
Регистрация: 20.02.2005



Рейтинг:
(10%) X----


Цитата (kiss @ 22.02.2005 - 22:51)
Точно - всё работает. А где можна детальнее почитать про функции прерываний? И какую литературу посоветуете читать по асемблеру? Какую читали вы?

Я начинал учить асм по древним-древним книгам. Сейчас, насколько я в курсе, Зубков неплох. smile.gif

Описание прерываний. У меня есть отличное описание в электронном виде на английском языке. Если интересует, могу выложить. Архив занимает 157КБ.
PM
Top
nameless
Дата 25.02.2005 - 01:05
Цитировать сообщение
Offline



.:Тень:.
******

Профиль
Группа: -experts-
Сообщений: 1745
Пользователь №: 18
Регистрация: 19.02.2005



Рейтинг:
(90%) XXXXX


Интересует. Думаю и не только меня. Обязательно выложи.


--------------------
Мы расправим крылья
PM
Top
nameless
Дата 28.02.2005 - 21:28
Цитировать сообщение
Offline



.:Тень:.
******

Профиль
Группа: -experts-
Сообщений: 1745
Пользователь №: 18
Регистрация: 19.02.2005



Рейтинг:
(90%) XXXXX


Ище некоторые непонятки:

В чем будут различия между результатами выполнения таких команд:

xor ax,ax
и
mov ax,0
?
--------------------------------
Почему после:
...
t db 'suxx!!!$'
...
lea dx,t
xor dx,dx
...
mov ah,9h
int 21h
...

Выводится suxx!!!, ведь <xor dx,dx> - ето же "обнуление"???
--------------------------------
Есть ткая штука:

mov dx,1
add dx,30

Как зделать вывод?
-------------------------------
Когда мы делаем
mov dx,1
то что у нас будет в dx? Тоесть какой вид будет иметь 1?

И ищё, ребята, у кого есть исходники ВАШЫХ первых, не сложных (можно и сложных) программ на асемблере (желательно для тасма, но подойдут любые) - залейте плз на мыло vxk7m@ukr.net - буду просто безгранично благодарен.


--------------------
Мы расправим крылья
PM
Top

Опции темы Страницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса