
Последние записи
- Геопозиция
- Колесо фортуны на javascript
- Вычислить формулу Тейлора на ассемблере
- Отловить число загружаемых файлов php
- Вывод текста и числа в одной строке
- Wapuula — лучший многоцелевой WordPress шаблон бизнес тематики
- Прокрутка внутри элемента
- Маркетплейс TemplateMonster приглашает к сотрудничеству разработчиков шаблонов
- Программа по отправке и принятию UDP пакетов
- Шаблон Monstroid 2 стал лучшим решением для создания WordPress сайтов

21st
Апр
Выполнение задач на Assembler при нажатии на клавишу
Posted by obzor under assembler
Ввести строку из произвольных ASCII-символов при помощи цикла и 01h и выполнить с ней преобразования
<F2> – изменение порядка следования символов исходной строки на обратный
<F7> — по возрастанию (пузырьком)
Пытался сделать пузыриком и инверсный вывод строки
При инверсном выводе цифры выводит не все, а при сочетании букв и цифр выводит различные символы и знаки.
TASM
Вот тебе пример..
ТАСМ’a у меня нет, поэтому код не тестировал, но думаю сам разберёшся:
ТАСМ’a у меня нет, поэтому код не тестировал, но думаю сам разберёшся:
Код:
.386
.model small
.stack 100h
.data
mess0 db 'Type string: $'
mesF2 db 13,10,'<F2> Revers, <F7> Sort, <Esc> Exit'
db 13,10,'Press command KEY...',13,10,'$'
array1 db 80 dup('$')
array2 db 80 dup('$')
len dw 0
.code
start: mov ax,@data
mov ds,ax ; связка ds/es с сегментом данных
mov es,ax
;//==== Ввод строки с клавиатуры --------------
mov ah,9
lea dx,mess0
int 21h
xor cx,cx ; длина строки
lea di,array1
mov ah,1
@01: int 21h
cmp al,13
je next
stosb ; сохранить символ в ES:DI
inc cx ; считаем длину строки
jmp @01
next: mov word[len],cx ; запомним длину..
;//==== Ждём клавишу юзера.. -----------------
mov ah,9
lea dx,mesF2
int 21h
menu: xor ax,ax ; ввод символа без эха
int 16h
cmp al,1Bh ; AL = ascii Esc ?
je exit
cmp ah,3Ch ; AH = расширенная F2?
je @F2
cmp ah,41h ; AH = F7?
je @F7
jmp menu ; остальные в игнор\
;//==== F2 Реверс строки ---------------------
@F2: mov cx,word[len]
lea si,array1
lea di,array2
add si,cx
std
@02: lodsb
mov byte[di],al
inc di
loop @02
cld
mov ah,9
lea dx,array2 ; Вывод результата
int 21h
jmp menu
;//==== F7 Сортировка пузырьком --------------
@F7: lea si,array1
xor bx,bx ; флаг перестановок
mov cx,word[len]
@03: lodsb ; AL = байт из SI
cmp al,byte[si]
jbe @04
xchg al,byte[si]
mov byte[si-1],al
inc bx ; флаг +1
@04: loop @03
or bx,bx ; перестановки были?
jnz @F7
mov ah,9 ; Вывод результата
lea dx,array1
int 21h
;//==== Завершение программы -----------------
xor ax,ax
int 16h
exit: mov ax,4c00h ; end.
int 21h
end start