MODEL TINY
STACK 256
DATASEG
CODESEG
start:
mov ax, @data
mov ds, ax
;получаем мс
mov ah, 2Ch
int 21h
;генерируем число
xor ax, ax
mov bx, 12345
mov al, dl
mul bx
add ax, 54321
mov bx, 32145
xor dx, dx
div bx
mov ax, dx
xor cx, cx
;подготавливает к печати десятичные числа
;заносит по одному в стек и считает в cx
dec:
inc cx
xor dx, dx
mov bx, 10
div bx
push dx
cmp ax, 0
jne dec
;печатает из стека десятичные числа
;количество чисел в cx
print:
mov ah, 02h
xor dx, dx
pop dx
add dx, '0'
int 21h
loop print
;выход
quit:
mov ah, 04Ch
mov al, 0
int 21h
end start
вывод десятичного числа в консоль
Доброго времени суток. Я новичёк и тольно недавно начал осваивать TASM и у меня возникла следующая проблема. Мне необходимо напечатать в консоли число которое хранится в регистре dl. Подкинте идеи, куски кода =), заранее спасибо.
Я так понял,что вы под DOS;тогда это вроде единственный вариант.А вот если б под Windows,то вариантов точно масса (=
Спасибо за ответ (: и ещё вот разбили мы число на несколько цифр, следует ли при выводе в консоль добавлять к цифре '0' (видел в одном примере) если да то зачем?
Между 0 и '0' - огромная разница. Дело в том, что код '0' не 0 (все символы с 0 до 31 служебные), а, если я не ошибаюсь, 30h, коды всех следующих цифр идут подряд. Поэтому для вывода надо к числу прибавлять или '0', или 30h - что, впрочем, одно и тоже.
Спасибо за ответы, всё получилось (: , попозже выложу исходник программы, может кому-нибудь пригодится (:
Вот исходник, он выводит в консоль случайное число(ололо, тупо, но мне пойдёт (: )