Пара вопросов |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Пара вопросов |
Client |
28.03.2009 15:05
Сообщение
#1
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Изучение ассемблере что-то не очень дается, поэтому появляется много вопросов, вот некоторые из них
1) Какого размера регистр и что в него можно положить (мы заносили туда даже строку, но не пойму как она туда помещается)? 2)как описать вещ число? 3)как сделать цикл в цикле (цикл ведь работает только с регистром cx?)? Вот такие пока вопросы, кому не сложно ответьте пожалуйста |
volvo |
28.03.2009 15:46
Сообщение
#2
|
Гость |
1) Какого размера регистр и что в него можно положить (мы заносили туда даже строку, но не пойму как она туда помещается)? Размер регистров eax, ebx, ecx ... = 32 бита (двойное слово), регистров ax, bx, cx, ... (это младшие части расширенных регистров) = соответственно 16 бит (слово)... А заносили вы в регистр - не строку, а ее адрес (т.е., смещение относительно начала сегмента, в котором находится строка).2)как описать вещ число? .dataВот тебе уже 2 вещественных числа одинарной точности... DD (4 байта) - одинарная точность, DQ (8 байт) - двойная точность, DT (10 байт) - расширенная точность... 3)как сделать цикл в цикле (цикл ведь работает только с регистром cx?)? Никто ж не запрещает тебе сохранять счетчик внешнего цикла, правда? Т.е.,outer: |
Client |
1.04.2009 6:47
Сообщение
#3
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Спасибо за ответ.
sseg segment При прерывании (int) всегда в ah надо что-то ложить? И что такое dup(?) Код (еще не до конца написан) написан для TASM, как его переделать для MASM? Сообщение отредактировано: Client - 1.04.2009 6:50 |
volvo |
1.04.2009 8:53
Сообщение
#4
|
Гость |
Цитата как его переделать для MASM? Вот это (файл client_1.asm).model smallпрекрасно компилируется и собирается MASM-ом: F:\test>D:\masm32\bin\ml.exe /c client_1.asm Я надеюсь, на твой первый вопрос я комментариями ответил? А dup - это от duplicate (повторять), то есть ты здесь: .dataвыделишь не один байт, а 20. Поэтому я и убрал 1 dup, это смысла не имеет (повторять 1 раз? Лучше вообще не указывать количество повторов)... |
Client |
1.04.2009 9:10
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
mov al, 0 ; при AL = 0 заданное окно очищается _полностью_Значит тут можно не указывать координаты начала/конца, т.к. все окно очистится? Спасибо! |
volvo |
1.04.2009 9:32
Сообщение
#6
|
Гость |
Цитата Значит тут можно не указывать координаты начала/конца, т.к. все окно очистится? Нет, ты не понял... Очистится полностью то окно, которое ты определил его координатами. А вот если в AH будет не 0, а 1 (например), то все строки в определенном тобой окне, а не вообще на экране, сдвинутся на одну вверх. Ведь функция 06h на самом деле - прокрутка текстового окна вверх, она только используется для очистки окна. С таким же успехом можно использовать mov ah, 07h, это - прокрутка окна вниз, но тебе-то какая разница, как будет очищаться экран, добавлением нужного количества строк снизу или сверху? |
Текстовая версия | 8.05.2024 8:16 |