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