![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
Игорь |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 56 Пол: Мужской Репутация: ![]() ![]() ![]() |
Пытаюсь сделать процедуру вывода числа в десят. представлении на экран. Делю, кладу в стек, достаю в обратном порядке. Проблема в том, что при запуске из 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
;----------------------------------------------------------
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Вот тут посмотри реализацию: Обработка символьной информации (там все прокомментировано, что куда и зачем, под FASM прекрасно собирается)
|
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 17:12 |