НМ
Настёнка Милая

Как на TASM Assembler вывести число 12345 с помощью цикла ?

Я сделал так.
А нужно коротко, с помощью цикла

.modeltiny
.code
org100h
start:

mov y,12345

movdx,0
movax,y
movbx,10000
idivbx
addax,30h
movbx,0
movbuf [bx],al

movax,dx
movdx,0
movbx,1000
idivbx
addax,30h
movbx,1
movbuf [bx],al
movax,dx

movdx,0
movbx,100
idivbx
addax,30h
movbx,2
movbuf [bx],al
movax,dx

movdx,0
movbx,10
idivbx
addax,30h
movbx,3
movbuf [bx],al

movbx,4
movax,dx
addax,30h
movbuf [bx],al
movah,9
movdx,offset buf
int21h
ret

ydw(?)
bufdb'AAAAA' ,'$'

Николай
Николай

.model tiny
.code
org 100h

start:
mov y,12345

;Способ 1. Используя вспомогательную переменную
mov ax,y
xor si,si
mov di,10000
mov bx,10
xor dx,dx
Way1:
div di
add al,30h
mov buf[si],al
mov ax,dx
xor dx,dx
xchg ax,di
div bx
xchg di,ax
inc si
or dx,dx
jz Way1
mov ah,9
mov dx,offset buf
int 21h

;Способ 2. Заполнение буфера с конца.
mov ax,y
mov si,offset buf+4
mov bx,10
Way2:
xor dx,dx
div bx
add dl,'0'
mov [si],dl
dec si
or ax,ax
jnz Way2
inc si
mov ah,9
mov dx,si
int 21h

;Способ 2а. То же самое, но с выводом незначащих нулей в старших разрядах
mov ax,y
mov si,4
mov cx,5
mov bx,10
Way2a:
xor dx,dx
div bx
add dl,30h
mov buf[si],dl
dec si
loop Way2a
mov ah,9
mov dx,offset buf
int 21h

;Способ 3. С использованием стека
mov ax,y
mov cx,5
mov bx,10
Way3:
xor dx,dx
div bx
or dl,'0'
push dx
loop Way3
mov cx,5
mov ah,2
Out3:
pop dx
int 21h
loop Out3
mov dx,offset buf+5
mov ah,9
int 21h

;Способ 3a. То же, но без вывода незначащих нулей
mov ax,y
xor cx,cx
mov bx,10
Way3a:
xor dx,dx
div bx
or dl,30h
push dx
inc cx
test ax,ax
jnz Way3a
mov ah,2
Out3a:
pop dx
int 21h
loop Out3a

ret

y dw (?)
buf db 'AAAAA',13,10,'$'
end start

Похожие вопросы
assembler tasm - надо сосчитать сколько елементов было введено
Как вывести информацию на экран, assembler
TASM это Visual ASM? Где скачать TASM? Где купить лицензию TASM?
С чего начать? Assembler
хочу вывести все простые числа числа 150 и максимальный множитель. как выйти из вложенного цикла и при этом начать новую
js вывести результат работы цикла
Цикл For в C++ Как циклом for вывести на экран такой треугольник: * ** *** *** ***
Вывести число. Ассемблер. DOS Как вывести число (оно высчитывается) на экран?
Вводится целое число от 100 до 10000.С помощью цикла While..do. вывести количество цифр (подсказка: использовать dir 10)
Как в Python вывести второе НАИБОЛЬШЕЕ число с помощью цикла for? Заранее спасибо