mov ax,bx ; в bx кол-во букв
mov bl,10 ;
div bl ; ax делим на bl
mov bl,ah ; чтобы не потерять значение (младшая часть)
mov ah,02
add al,30h
mov dl,al ; в dl - целая часть
int 21h
mov ah,02
add bl,30h
mov dl,bl
int 21h
вывод числа из ax, не получается вывести большое число
ен получается вывести на экран :(
пытаюсь вот так
Код:
если интересно, код всей программы
Код:
.model small
.stack 400h
.data
str1 db 80,70 dup ('$')
endl db 0Dh,0Ah,'$'
.code
start:
mov ax,@data
mov ds,ax
mov ah,0ah
lea dx,[str1]
int 21h
mov ah,09h
lea dx,[endl]
int 21h
xor ax, ax
mov al, [str1+1]
add si, ax
dec si
cycle:
jcxz ex
dec cx
mov ah, 'a'
cmp [ds:si], ah
je found
dec si
jmp cycle
found:
inc bx
dec si
jmp cycle
ex:
mov ax,bx
mov bl,10
div bl
mov bl,ah
mov ah,02
add al,30h
mov dl,al
int 21h
mov ah,02
add bl,30h
mov dl,bl
int 21h
mov ax,4c00h
int 21h
end start
.stack 400h
.data
str1 db 80,70 dup ('$')
endl db 0Dh,0Ah,'$'
.code
start:
mov ax,@data
mov ds,ax
mov ah,0ah
lea dx,[str1]
int 21h
mov ah,09h
lea dx,[endl]
int 21h
xor ax, ax
mov al, [str1+1]
add si, ax
dec si
cycle:
jcxz ex
dec cx
mov ah, 'a'
cmp [ds:si], ah
je found
dec si
jmp cycle
found:
inc bx
dec si
jmp cycle
ex:
mov ax,bx
mov bl,10
div bl
mov bl,ah
mov ah,02
add al,30h
mov dl,al
int 21h
mov ah,02
add bl,30h
mov dl,bl
int 21h
mov ax,4c00h
int 21h
end start
Заранее спасибо за помощь
2) цифры выделяются в обратном порядке - это нужно учитывать;
3) здесь есть ветка, посвященная простым алгоритмам, где рассматриваются подобные вопросы;
4) как вариант:
Код:
; ax <-- число, ds:si <-- адрес буфера из 6 байт
mov bx,10
xor cx,cx
@@:
xor dx,dx
div bx
inc cx
push dx
and ax,ax
jnz @b
@@:
pop ax
add al,"0"
mov [si],al
inc si
loop @b
mov [si],ah ; терминатор
mov bx,10
xor cx,cx
@@:
xor dx,dx
div bx
inc cx
push dx
and ax,ax
jnz @b
@@:
pop ax
add al,"0"
mov [si],al
inc si
loop @b
mov [si],ah ; терминатор
ничего не понял :( как применять, что за @@
@@ - это метка. @b ссылка на ближайшую подобную метку "сверху".