Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2009, 22:21   #1
m0t0d0r
 
Регистрация: 11.01.2009
Сообщений: 6
По умолчанию самая превая программа

в общем вчера начал обучение , до этого писал на php , но это как вы понимаете , разные вещи . Ну и конечно возник первый вопрос , точнее затруднение .

Код:
mov bx,0133h
mov d,[bx],044434241h
mov dx,bx
mov ah,09
int 021h
int 020h
по идее должен вывести строку abcd , но кроме неё он выводит кучу мусора , поясните пожалуйста , что и где я упустил .

Последний раз редактировалось rpy3uH; 12.01.2009 в 08:51.
m0t0d0r вне форума Ответить с цитированием
Старый 12.01.2009, 02:34   #2
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

ээээ...... даже сложно прокомментировать....... как-то извращенно код сделан...... ну должно работать, ели вместо "044434241h" сделать "044434236h", но выводиться будет "abc".
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 12.01.2009, 03:37   #3
m0t0d0r
 
Регистрация: 11.01.2009
Сообщений: 6
По умолчанию

он вывел "1bcd" , а дальше всё равно мусор , Min если бы вы мне показали , как простым , похожим способом , вы написали эту "программу" , то возможно нашёлся бы ответ , а на както извращённо код сделан , а чего вы хотите от первого ня изучения .
m0t0d0r вне форума Ответить с цитированием
Старый 12.01.2009, 10:49   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) строка выводимая через 9 функцию (mov ah,09h) 21-го прерывания ОБЯЗАТЕЛЬНО должна заканчиваться символом $ (ASCII 036 или 24h)

2) привыкайте писать чёткий и понятный код. Иначе, даже в маленькой ассемблерной программе на 100-200 строк вы потеряетесь..
вот, попробуйте, например, такой код:

Код:
.model small

.data
HelloMsg db 'Hello, WORLD$'

.code
start:
    mov ax,@data 
    mov ds,ax 
    mov ah,09h 
    mov dx,offset HelloMsg
    int 21h 

    mov ax,4c00h  ;выход
    int 21h
end start
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.01.2009, 14:04   #5
m0t0d0r
 
Регистрация: 11.01.2009
Сообщений: 6
По умолчанию

Вы меня просто непоняли , я переделываю код , основываясь на примере из статьи , вот её адрес http://bitfry.narod.ru/04.htm , а до тех команд , которые вы мне предложили , я просто ещё недошёл .
m0t0d0r вне форума Ответить с цитированием
Старый 12.01.2009, 14:19   #6
Google[Bot]
Пользователь
 
Аватар для Google[Bot]
 
Регистрация: 09.01.2009
Сообщений: 65
По умолчанию

Набрав последнюю инструкцию (int 020h), введите её Enter'ом и нажмите Esc, чтобы прекратить ассемблирование. Теперь впечатайте в самом конце 5 новых байтов 00 00 00 00 24 (ничего при этом не стирая выше). Сохраните файл (F9).

У тебя адресс 0133h не заполнен, потому и лагает, точнее заполнен, но не тем что надо, 24 -

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
1) строка выводимая через 9 функцию (mov ah,09h) 21-го прерывания ОБЯЗАТЕЛЬНО должна заканчиваться символом $ (ASCII 036 или 24h)
это оно и есть, а без него программа идет дальше по адрессам, пока не наткнется на 24, вот мусор и берется...

Последний раз редактировалось Google[Bot]; 12.01.2009 в 14:36.
Google[Bot] вне форума Ответить с цитированием
Старый 12.01.2009, 18:04   #7
m0t0d0r
 
Регистрация: 11.01.2009
Сообщений: 6
По умолчанию

спасибо за терпение , изменил строку на
mov d,[bx],024434241h
и всё работает .
m0t0d0r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа в С++ Clubber Помощь студентам 8 14.05.2011 15:12
Самая СЛОЖНАЯ ЗАДАЧА ВО ВСЕЛЕННОЙ Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 4 26.04.2008 22:32
какая из трех сортировок (обменная,исчерпыванием,выбором) самая быстрая? Cyberbest Помощь студентам 2 26.04.2008 10:34
Вот ещё одна,самая сложная: felice Паскаль, Turbo Pascal, PascalABC.NET 4 03.02.2008 17:21