нужен код. вычитываем строчку, и каждое число, которое там находим, меняем на слово, т. е. asf5sd3 -> asffivesdthree (числа 0-9 = от "zero" до "nine")
есть идея считав строчку просто делать cmp с каждым елементом, если это не число вывести его на экран, а если число выводить название числа как сообщение
что-то вроде cmp ax, 3ah je writeln9 (label), а в writeln9: mov ah, 9 mov dx, offset num9 int 21h (num9 db "nine$")
но все-же не очень знаю как бы лучше всё реализовать в код. или может лучше вообще как-то по другому писать... ?
.model small
.stack 100h
.data
msg db "Введите строчку: $"
string db 255, ?,256 dup ('$')
enter db 13,10,'$' ; 10,13
.code
start:
mov ax, @data
mov ds, ax
mov ah, 9
mov dx, offset msg
int 21h
mov ah, 0Ah
mov dx, offset string
int 21h
mov ah, 9
mov dx, offset enteris
int 21h
Exit:
mov ah, 4Ch ;4Ch - isejimo i MS-DOS f-ja
int 21h
END start
Другие языки программирования и технологии
assembler tasm
У меня другая идея. Использовать массив с адресами начала названий цифр (refs).
Сначала сформировать в буфере строку, заменив цифры на названия, а затем вывести её в консоль сразу всю.
.model small
.stack 100h
.data
msg db 'Введите строчку: $'
refs dw d0, d1, d2, d3, d4, d5, d6, d7, d8, d9
enteris db 13,10,'$'
d0 db 'zero',0
d1 db 'one',0
d2 db 'two',0
d3 db 'three',0
d4 db 'four',0
d5 db 'five',0
d6 db 'six',0
d7 db 'seven',0
d8 db 'eight',0
d9 db 'nine',0
string db 255, ?, 255 dup (?)
buffer db 1271 dup ('$')
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
mov ah,9
lea dx,msg
int 21h
mov ah,10
lea dx,string
int 21h
mov ah,9
lea dx,enteris
int 21h
lea si,string+2
lea di,buffer
Repeat:
lodsb
cmp al,0Dh
je OutString
cmp al,'0'
jb CopyChar
cmp al,'9'
jbe CopyNumber
CopyChar:
stosb
jmp Repeat
CopyNumber:
sub al,'0'
mov bl,al
xor bh,bh
shl bx,1; bx:=bx*2
mov bx,refs[bx]
CopySymb:
mov al,[bx]
or al,al
jz Repeat
stosb
inc bx
jmp CopySymb
OutString:
lea dx,buffer
mov ah,9
int 21h
Exit:
mov ah,8
int 21h
mov ah,4Ch
int 21h
end start

Сначала сформировать в буфере строку, заменив цифры на названия, а затем вывести её в консоль сразу всю.
.model small
.stack 100h
.data
msg db 'Введите строчку: $'
refs dw d0, d1, d2, d3, d4, d5, d6, d7, d8, d9
enteris db 13,10,'$'
d0 db 'zero',0
d1 db 'one',0
d2 db 'two',0
d3 db 'three',0
d4 db 'four',0
d5 db 'five',0
d6 db 'six',0
d7 db 'seven',0
d8 db 'eight',0
d9 db 'nine',0
string db 255, ?, 255 dup (?)
buffer db 1271 dup ('$')
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
mov ah,9
lea dx,msg
int 21h
mov ah,10
lea dx,string
int 21h
mov ah,9
lea dx,enteris
int 21h
lea si,string+2
lea di,buffer
Repeat:
lodsb
cmp al,0Dh
je OutString
cmp al,'0'
jb CopyChar
cmp al,'9'
jbe CopyNumber
CopyChar:
stosb
jmp Repeat
CopyNumber:
sub al,'0'
mov bl,al
xor bh,bh
shl bx,1; bx:=bx*2
mov bx,refs[bx]
CopySymb:
mov al,[bx]
or al,al
jz Repeat
stosb
inc bx
jmp CopySymb
OutString:
lea dx,buffer
mov ah,9
int 21h
Exit:
mov ah,8
int 21h
mov ah,4Ch
int 21h
end start

Похожие вопросы
- assembler tasm - в чем ошибка?
- assembler tasm - надо сосчитать сколько елементов было введено
- TASM. В какой части кода объявляются структуры в язяке ASSEMBLER?
- Как на TASM Assembler вывести число 12345 с помощью цикла ?
- Системное время в TAsm и MAsm
- Assembler или C для микроконтроллеров?
- А почему программы написанные на C/C#/C++ имеют больший вес чем на tasm/masm?
- Assembler помогите создать файлы *.obj *.exe
- какой язык легче выучить.C++ или Assembler? какой язык легче выучить.C++ или Assembler?
- Подскажите, правильно ли? assembler