Помощь - Поиск - Пользователи - Календарь
Полная версия: Вывод Числа На Экран
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
Игорь
Пытаюсь сделать процедуру вывода числа в десят. представлении на экран. Делю, кладу в стек, достаю в обратном порядке. Проблема в том, что при запуске из 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
;----------------------------------------------------------
TarasBer
При делении в ax пишется частное, в dx пишется остаток.
volvo
Вот тут посмотри реализацию: Обработка символьной информации (там все прокомментировано, что куда и зачем, под FASM прекрасно собирается)
Игорь
Cпасибо, с делением разобрался. Подскажите только как результат на экран вывести. Я пробовал mov ah,08h
int 21h и int 29h в TD оба нормально, а вот в Windows либо виснет, либо вообще не запускается.
volvo
Что именно не запускается? Ты как запускаешь? Вот это:
Нажмите для просмотра прикрепленного файла
, например, прекрасно работает. Под windows. Но из консоли... Вызывается - вот так:

use16
org 100h
mov ax,4321
call writeDEC
mov ax, 4c00h
int 21h
Игорь
Готово. Надо было просто обнулить сх в начале программы.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.