IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Вывод Числа На Экран, FASM
Игорь
сообщение 29.09.2010 15:21
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  2  +


Пытаюсь сделать процедуру вывода числа в десят. представлении на экран. Делю, кладу в стек, достаю в обратном порядке. Проблема в том, что при запуске из TurboDebugger'a при делении в ax почему-то 0 ,а в dx вообще ерунда какая-то.


use16
org 100h
mov ax,4321
call WPrint
mov ax,4c00h
int 21h
;----------------------------------------------------------
WPrint: ; ax:выводимое слово или байт
push ax ; \
push cx ; | сохранение регистров которые будут использоваться
push dx ; /
Divizion:
xor dx,dx
div word[10]
push dx
inc cx
cmp ax,0
jnz Divizion
mov ah,02h ; подготовка прерывания
Print:
pop dx
add dl,48
int 21h
loop Print
pop dx ; \
pop cx ; | восстановление регистров
pop ax ; /
ret
;----------------------------------------------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 29.09.2010 16:52
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


При делении в ax пишется частное, в dx пишется остаток.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.09.2010 17:52
Сообщение #3


Гость






Вот тут посмотри реализацию: Обработка символьной информации (там все прокомментировано, что куда и зачем, под FASM прекрасно собирается)
 К началу страницы 
+ Ответить 
Игорь
сообщение 29.09.2010 19:34
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  2  +


Cпасибо, с делением разобрался. Подскажите только как результат на экран вывести. Я пробовал mov ah,08h
int 21h и int 29h в TD оба нормально, а вот в Windows либо виснет, либо вообще не запускается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.09.2010 19:41
Сообщение #5


Гость






Что именно не запускается? Ты как запускаешь? Вот это:
Прикрепленное изображение
, например, прекрасно работает. Под windows. Но из консоли... Вызывается - вот так:

use16
org 100h
mov ax,4321
call writeDEC
mov ax, 4c00h
int 21h
 К началу страницы 
+ Ответить 
Игорь
сообщение 30.09.2010 13:01
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  2  +


Готово. Надо было просто обнулить сх в начале программы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.03.2024 0:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"